From web
Writes end-to-end tests with Playwright Test for full user flow verification. Use when adding, modifying, or removing user flows in an application. Do not use for isolated component behavior — use component-testing instead.
How this skill is triggered — by the user, by Claude, or both
Slash command
/web:e2e-testingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Playwright Test against the real application — real server, real browser, real data.
Playwright Test against the real application — real server, real browser, real data.
e2e/ at the project root, NOT co-located with sourcee2e/flow-name.spec.ts — run with saved session automaticallye2e/flow-name.unauth.spec.ts — fresh browser, no sessionbun run e2ee2e/seeds/ as JSON filestest from ./utils (shared fixture), expect from @playwright/testimport { expect } from "@playwright/test";
import { test } from "./utils";
The shared test fixture waits for [data-hydrated] after every page.goto() — buttons and handlers are ready immediately.
| API | Use |
|---|---|
page.goto("/path") | Navigate to URL |
page.getByRole("button", { name }) | Query by ARIA role |
page.getByText("text") | Query by text content |
page.getByLabel("label") | Query by form label |
locator.click() | Click interaction |
locator.fill("value") | Type into input |
expect(page).toHaveURL(pattern) | Assert current URL |
expect(locator).toBeVisible() | Assert element visible |
page.waitForURL(pattern) | Wait for navigation |
page.context().storageState() | Save auth state |
| Scenario | Test type |
|---|---|
| Multi-step user flow across pages | E2E |
| Authentication and authorization | E2E |
| CRUD lifecycle | E2E |
| API integration across pages | E2E |
| Isolated UI component behavior | Component |
| Form validation feedback | Component |
| Component state management | Component |
Rule of thumb: involves chained steps across the real app → E2E. Tests isolated UI behavior → component test.
See examples/ for complete test examples by pattern:
| Example | When to use |
|---|---|
examples/navigation.md | Page transitions, link clicks, URL assertions |
examples/form-submission.md | Form fills, submissions, validation |
examples/crud-flow.md | Create, edit, delete lifecycle |
examples/auth-persistence.md | Login setup, session reuse, unauthenticated tests |
e2e/ directory.spec.ts (authenticated) or .unauth.spec.ts (unauthenticated)test from ./utils, expect from @playwright/teste2e/seeds/ when needednpx claudepluginhub kvnwolf/devtools --plugin webConfigures and writes end-to-end tests with Playwright or Cypress for validating user flows, browser integration, CI E2E tests, acceptance tests, and production smoke tests.
Generates Playwright tests from user stories, URLs, components, or features. Explores codebase, uses templates for auth, CRUD, checkout, and follows best practices for locators and assertions.
Write Playwright E2E tests using fixtures and best practices. Use when creating E2E tests, writing browser automation tests, or testing user flows.