helderberto/agent-skills

e2e

Write end-to-end tests for user flows using Cypress. Use when user asks to "write e2e tests", "/e2e", "add Cypress tests", or wants to test a user flow end-to-end. Don't use for unit tests, component tests, or projects using Playwright, Puppeteer, or other non-Cypress frameworks.

First seen Mar 4, 2026

Installation

$ npx skills add helderberto/agent-skills --skill e2e

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from helderberto/agent-skills · top by installs.

npx skills add helderberto/agent-skills

Browse all from helderberto/agent-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 14
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,404 B
  • docs SUMMARY.md 291 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 34 installs

SKILL.md

End-to-End Tests (Cypress)

Detection

Run in parallel:

  • Check package.json for cypress version
  • Read cypress.config.ts for baseUrl and test file patterns
  • Read 1-2 existing test files in cypress/e2e/ to match conventions

Workflow

  1. Read existing tests and config to match project style
  2. Understand the user flow — ask if unclear
  3. Identify selectors (see [selectors.md](references/selectors.md))
  4. Write tests in cypress/e2e/ — one file per flow or feature

Format

describe('login flow', () => {
  beforeEach(() => {
    cy.visit('/login')
  })

  it('logs in with valid credentials', () => {
    cy.findByLabelText('Email').type('[email protected]')
    cy.findByLabelText('Password').type('password')
    cy.findByRole('button', { name: 'Sign in' }).click()
    cy.url().should('include', '/dashboard')
    cy.findByRole('heading', { name: 'Dashboard' }).should('be.visible')
  })

  it('shows error with invalid credentials', () => {
    cy.findByLabelText('Email').type('[email protected]')
    cy.findByLabelText('Password').type('wrong')
    cy.findByRole('button', { name: 'Sign in' }).click()
    cy.findByRole('alert').should('contain.text', 'Invalid credentials')
  })
})

Selector priority

Prefer @testing-library/cypress commands when installed, e.g. cy.findByRole('button', { name: 'Submit' }); use cy.get('[data-testid="submit"]') only as a last resort.

See [selectors.md](references/selectors.md) for the full priority guide.

Rules

  • Use @testing-library/cypress selectors when available, else cy.get
  • Use data-testid only as last resort
  • One logical outcome per it block
  • Test behavior, not implementation details
  • Never use cy.wait(<number>) — use cy.findBy* auto-retry instead

Error Handling

  • If cypress is not in package.json → stop and ask user to install Cypress first
  • If cypress.config.ts is missing → ask user to run npx cypress open to initialize config
  • If baseUrl is unreachable → verify the dev server is running before writing tests that require it