← ClaudeAtlas

qa-e2elisted

End-to-end tests with Playwright or Cypress. Trigger when the user wants to create user journey tests, UI integration tests, or browser automation.
christopherlouet/claude-base · ★ 4 · Testing & QA · score 80
Install: claude install-skill christopherlouet/claude-base
# E2E Testing Skill ## Triggers This skill activates when the user mentions: - "E2E", "end-to-end", "end-to-end test" - "Playwright", "Cypress", "Puppeteer" - "integration test", "user journey" - "browser automation", "UI test" ## Recommended framework | Framework | Advantages | Use case | |-----------|-----------|----------| | **Playwright** | Multi-browser, fast, auto-wait | Modern apps | | **Cypress** | Excellent DX, easy debugging | Prototyping | **Default recommendation**: Playwright ## Project structure ``` e2e/ ├── fixtures/ # Custom fixtures ├── pages/ # Page Objects │ ├── login.page.ts │ └── dashboard.page.ts ├── tests/ │ ├── auth/ │ │ └── login.spec.ts │ └── checkout/ │ └── purchase.spec.ts ├── utils/ # Helpers └── playwright.config.ts ``` ## Page Object Model ```typescript // e2e/pages/login.page.ts import { Page, Locator } from '@playwright/test'; export class LoginPage { readonly page: Page; readonly emailInput: Locator; readonly passwordInput: Locator; readonly submitButton: Locator; constructor(page: Page) { this.page = page; this.emailInput = page.getByLabel('Email'); this.passwordInput = page.getByLabel('Password'); this.submitButton = page.getByRole('button', { name: 'Login' }); } async goto() { await this.page.goto('/login'); } async login(email: string, password: string) { await this.emailInput.fill(email); await this.passwordInput.fill(password