Internal Safety Override
- Status: local-only unless explicitly opted into external access.
- Before using network tools, account connectors, browser automation, or APIs, state the destination, data scope, and credential source.
- Do not transmit repository files, secrets, credentials, or private documents by default.
- Audit categories: network, secrets.
Playwright Pro
Production-grade Playwright testing toolkit for AI coding agents.
Available Commands
When installed as a an agent runtime plugin, these are available as /pw: commands:
| Command |
What it does |
/pw:init |
Set up Playwright — detects framework, generates config, CI, first test |
/pw:generate <spec> |
Generate tests from user story, URL, or component |
/pw:review |
Review tests for anti-patterns and coverage gaps |
/pw:fix <test> |
Diagnose and fix failing or flaky tests |
/pw:migrate |
Migrate from Cypress or Selenium to Playwright |
/pw:coverage |
Analyze what's tested vs. what's missing |
/pw:testrail |
Sync with TestRail — read cases, push results |
/pw:browserstack |
Run on BrowserStack, pull cross-browser reports |
/pw:report |
Generate test report in your preferred format |
Quick Start Workflow
The recommended sequence for most projects:
1. /pw:init → scaffolds config, CI pipeline, and a first smoke test
2. /pw:generate → generates tests from your spec or URL
3. /pw:review → validates quality and flags anti-patterns ← always run after generate
4. /pw:fix <test> → diagnoses and repairs any failing/flaky tests ← run when CI turns red
Validation checkpoints:
- After
/pw:generate — always run /pw:review before committing; it catches locator anti-patterns and missing assertions automatically.
- After
/pw:fix — re-run the full suite locally (npx playwright test) to confirm the fix doesn't introduce regressions.
- After
/pw:migrate — run /pw:coverage to confirm parity with the old suite before decommissioning Cypress/Selenium tests.
Example: Generate → Review → Fix
# 1. Generate tests from a user story
/pw:generate "As a user I can log in with email and password"
# Generated: tests/auth/login.spec.ts
# → Playwright Pro creates the file using the auth template.
# 2. Review the generated tests
/pw:review tests/auth/login.spec.ts
# → Flags: one test used page.locator('input[type=password]') — suggests getByLabel('Password')
# → Fix applied automatically.
# 3. Run locally to confirm
npx playwright test tests/auth/login.spec.ts --headed
# 4. If a test is flaky in CI, diagnose it
/pw:fix tests/auth/login.spec.ts
# → Identifies missing web-first assertion; replaces waitForTimeout(2000) with expect(locator).toBeVisible()
Golden Rules
getByRole() over CSS/XPath — resilient to markup changes
- Never
page.waitForTimeout() — use web-first assertions
expect(locator) auto-retries; expect(await locator.textContent()) does not
- Isolate every test — no shared state between tests
baseURL in config — zero hardcoded URLs
- Retries:
2 in CI, 0 locally
- Traces:
'on-first-retry' — rich debugging without slowdown
- Fixtures over globals —
test.extend() for shared state
- One behavior per test — multiple related assertions are fine
- Mock external services only — never mock your own app
Locator Priority
1. getByRole() — buttons, links, headings, form elements
2. getByLabel() — form fields with labels
3. getByText() — non-interactive text
4. getByPlaceholder() — inputs with placeholder
5. getByTestId() — when no semantic option exists
6. page.locator() — CSS/XPath as last resort
What's Included
- 9 skills with detailed step-by-step instructions
- 3 specialized agents: test-architect, test-debugger, migration-planner
- 55 test templates: auth, CRUD, checkout, search, forms, dashboard, settings, onboarding, notifications, API, accessibility
- 2 MCP servers (TypeScript): TestRail and BrowserStack integrations
- Smart hooks: auto-validate test quality, auto-detect Playwright projects
- 6 reference docs: golden rules, locators, assertions, fixtures, pitfalls, flaky tests
- Migration guides: Cypress and Selenium mapping tables
Integration Setup
TestRail (Optional)
export TESTRAIL_URL="https://your-instance.testrail.io"
export TESTRAIL_USER="your@email.com"
export TESTRAIL_API_KEY="your-api-key"
BrowserStack (Optional)
export BROWSERSTACK_USERNAME="your-username"
export BROWSERSTACK_ACCESS_KEY="your-access-key"
Quick Reference
See reference/ directory for:
golden-rules.md — The 10 non-negotiable rules
locators.md — Complete locator priority with cheat sheet
assertions.md — Web-first assertions reference
fixtures.md — Custom fixtures and storageState patterns
common-pitfalls.md — Top 10 mistakes and fixes
flaky-tests.md — Diagnosis commands and quick fixes
See templates/README.md for the full template index.
1---2name: playwright-pro3description: Production-grade Playwright testing toolkit. Use when the user mentions Playwright tests, end-to-end testing, browser automation, fixing flaky tests, test migration, CI/CD testing, or test suites. Generate tests, fix flaky failures, migrate from Cypress/Selenium, sync with TestRail, run on BrowserStack. 55 templates, 3 agents, smart reporting.4---56## Internal Safety Override78- Status: local-only unless explicitly opted into external access.9- Before using network tools, account connectors, browser automation, or APIs, state the destination, data scope, and credential source.10- Do not transmit repository files, secrets, credentials, or private documents by default.11- Audit categories: network, secrets.1213# Playwright Pro1415Production-grade Playwright testing toolkit for AI coding agents.1617## Available Commands1819When installed as a an agent runtime plugin, these are available as `/pw:` commands:2021| Command | What it does |22|---|---|23| `/pw:init` | Set up Playwright — detects framework, generates config, CI, first test |24| `/pw:generate <spec>` | Generate tests from user story, URL, or component |25| `/pw:review` | Review tests for anti-patterns and coverage gaps |26| `/pw:fix <test>` | Diagnose and fix failing or flaky tests |27| `/pw:migrate` | Migrate from Cypress or Selenium to Playwright |28| `/pw:coverage` | Analyze what's tested vs. what's missing |29| `/pw:testrail` | Sync with TestRail — read cases, push results |30| `/pw:browserstack` | Run on BrowserStack, pull cross-browser reports |31| `/pw:report` | Generate test report in your preferred format |3233## Quick Start Workflow3435The recommended sequence for most projects:3637```381. /pw:init → scaffolds config, CI pipeline, and a first smoke test392. /pw:generate → generates tests from your spec or URL403. /pw:review → validates quality and flags anti-patterns ← always run after generate414. /pw:fix <test> → diagnoses and repairs any failing/flaky tests ← run when CI turns red42```4344**Validation checkpoints:**45- After `/pw:generate` — always run `/pw:review` before committing; it catches locator anti-patterns and missing assertions automatically.46- After `/pw:fix` — re-run the full suite locally (`npx playwright test`) to confirm the fix doesn't introduce regressions.47- After `/pw:migrate` — run `/pw:coverage` to confirm parity with the old suite before decommissioning Cypress/Selenium tests.4849### Example: Generate → Review → Fix5051```bash52# 1. Generate tests from a user story53/pw:generate "As a user I can log in with email and password"5455# Generated: tests/auth/login.spec.ts56# → Playwright Pro creates the file using the auth template.5758# 2. Review the generated tests59/pw:review tests/auth/login.spec.ts6061# → Flags: one test used page.locator('input[type=password]') — suggests getByLabel('Password')62# → Fix applied automatically.6364# 3. Run locally to confirm65npx playwright test tests/auth/login.spec.ts --headed6667# 4. If a test is flaky in CI, diagnose it68/pw:fix tests/auth/login.spec.ts69# → Identifies missing web-first assertion; replaces waitForTimeout(2000) with expect(locator).toBeVisible()70```7172## Golden Rules73741. `getByRole()` over CSS/XPath — resilient to markup changes752. Never `page.waitForTimeout()` — use web-first assertions763. `expect(locator)` auto-retries; `expect(await locator.textContent())` does not774. Isolate every test — no shared state between tests785. `baseURL` in config — zero hardcoded URLs796. Retries: `2` in CI, `0` locally807. Traces: `'on-first-retry'` — rich debugging without slowdown818. Fixtures over globals — `test.extend()` for shared state829. One behavior per test — multiple related assertions are fine8310. Mock external services only — never mock your own app8485## Locator Priority8687```881. getByRole() — buttons, links, headings, form elements892. getByLabel() — form fields with labels903. getByText() — non-interactive text914. getByPlaceholder() — inputs with placeholder925. getByTestId() — when no semantic option exists936. page.locator() — CSS/XPath as last resort94```9596## What's Included9798- **9 skills** with detailed step-by-step instructions99- **3 specialized agents**: test-architect, test-debugger, migration-planner100- **55 test templates**: auth, CRUD, checkout, search, forms, dashboard, settings, onboarding, notifications, API, accessibility101- **2 MCP servers** (TypeScript): TestRail and BrowserStack integrations102- **Smart hooks**: auto-validate test quality, auto-detect Playwright projects103- **6 reference docs**: golden rules, locators, assertions, fixtures, pitfalls, flaky tests104- **Migration guides**: Cypress and Selenium mapping tables105106## Integration Setup107108### TestRail (Optional)109```bash110export TESTRAIL_URL="https://your-instance.testrail.io"111export TESTRAIL_USER="your@email.com"112export TESTRAIL_API_KEY="your-api-key"113```114115### BrowserStack (Optional)116```bash117export BROWSERSTACK_USERNAME="your-username"118export BROWSERSTACK_ACCESS_KEY="your-access-key"119```120121## Quick Reference122123See `reference/` directory for:124- `golden-rules.md` — The 10 non-negotiable rules125- `locators.md` — Complete locator priority with cheat sheet126- `assertions.md` — Web-first assertions reference127- `fixtures.md` — Custom fixtures and storageState patterns128- `common-pitfalls.md` — Top 10 mistakes and fixes129- `flaky-tests.md` — Diagnosis commands and quick fixes130131See `templates/README.md` for the full template index.