cypress

Cypress end-to-end testing for web apps. Use for E2E testing.

7 stars

Best use case

cypress is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Cypress end-to-end testing for web apps. Use for E2E testing.

Teams using cypress should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/cypress/SKILL.md --create-dirs "https://raw.githubusercontent.com/G1Joshi/Agent-Skills/main/skills/testing/cypress/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/cypress/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How cypress Compares

Feature / AgentcypressStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Cypress end-to-end testing for web apps. Use for E2E testing.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Cypress

Cypress is a next generation front end testing tool built for the modern web. It runs _inside_ the browser (unlike Selenium/Playwright) which gives it native access to the DOM.

## When to Use

- **Dev Experience**: The interactive GUI is best-in-class for debugging.
- **Component Testing**: Testing React/Vue/Angular components in isolation within a real browser.
- **Single Tab**: Testing flows that happen in a single tab/window.

## Quick Start

```javascript
describe("My First Test", () => {
  it("Visits the Kitchen Sink", () => {
    cy.visit("https://example.cypress.io");
    cy.contains("type").click();
    cy.url().should("include", "/commands/actions");
    cy.get(".action-email")
      .type("fake@email.com")
      .should("have.value", "fake@email.com");
  });
});
```

## Core Concepts

### Chaining

Cypress commands run serially. `cy.get().click().should()` reads like a story.

### Automatic Retries

Cypress automatically retries assertions until they pass or timeout.
`cy.get('.todo-list li').should('have.length', 2)` will retry until the list has 2 items or 4 seconds elapse.

### Stubbing

Because it runs in-browser, intercepting network requests (`cy.intercept`) is fast and reliable.

## Best Practices (2025)

**Do**:

- **Use `cy.intercept`**: Wait for network calls to finish before asserting UI. `cy.wait('@apiCall')`.
- **Use Custom Commands**: Extract repetitive logic (login) into `cy.login()`.
- **Use Data Test Attributes**: `data-cy="submit-btn"` allows you to change CSS/JS without breaking tests.

**Don't**:

- **Don't use `wait(number)`**: Never hard-code waits. Wait for routes or elements.
- **Don't test 3rd party sites**: Cypress is for _your_ app. It has safeguards that make testing Google/Github hard.

## References

- [Cypress Documentation](https://docs.cypress.io/)