Playwright
When to Use This Skill
Use this skill when the user:
Mentions / keywords
- •Mentions “Playwright”, “@playwright/test”, “playwright.config.ts”, “trace viewer”, or “PWDEBUG”
- •References
*.spec.ts/*.test.tsfiles that import@playwright/test
Context
- •Is trying to add or maintain E2E/smoke coverage for a web app
- •Is trying to debug flaky UI tests (selectors, timing, waits)
- •Needs one-off automation (screenshots, console logs, quick flow checks)
Purpose
- •Route Playwright work into the right workflow (suite vs. one-off script vs. debugging)
- •Standardize patterns that prevent flaky tests (locators, assertions, waits)
- •Keep artifacts in
./tmp/for predictable cleanup
Quick routing
- •Writing/maintaining
@playwright/testsuites → Seereferences/e2e-with-playwright-test.md - •Auth once, reuse state (
storageState) → Seereferences/auth-and-storage-state.md - •CI hardening + config knobs → See
references/ci-and-config.md - •Locators, assertions, POM, fixtures → See
references/patterns.md - •Fixtures (worker-scoped, auto fixtures) → See
references/fixtures.md - •Mocking APIs / controlling network → See
references/api-mocking.md - •Visual testing (
toHaveScreenshot) → Seereferences/visual-testing.md - •Link checking / dead link detection → See
references/link-checking.md - •Flaky tests / trace viewer / retries → See
references/debugging.md - •One-off automation (screenshots/logs/check flows) → See
references/ad-hoc-automation.md
Non-negotiables
- •Prefer
getByRole/getByLabelover CSS/XPath; adddata-testidonly when needed. - •Use web-first assertions (
await expect(locator).toBeVisible()) instead of boolean checks. - •Never add
waitForTimeout()to “fix” flake; if you use it temporarily while debugging, remove it before calling the work “done”. - •Don’t default to
networkidleeverywhere; use it intentionally (SPAs / known background activity can make it misleading). - •For CLI agent runs, use minimal reporters to avoid log spam; store artifacts under
./tmp/playwright/. - •Keep tests independent; avoid cross-test shared state.
Verification
- •E2E suite changes: run
npx playwright test --reporter=line(or--reporter=dot) and confirm failures reproduce. - •Flake fixes: run the previously failing test at least 5 times (ex:
--repeat-each 5) before calling it fixed. - •CI-sensitive changes: run the suite in “CI-like” settings (ex:
CI=1 npx playwright test --reporter=line) and confirm it still behaves.
Provenance
- •Consolidated from upstream installed skills:
playwright-best-practices,playwright-testing,playwright-expert,playwright-skill,webapp-testing