Production-grade Playwright testing toolkit
Playwright Pro

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.
--- name: "playwright-pro" description: "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." --- # Playwright Pro Production-grade Playwright testing toolkit for AI coding agents. ## Available Commands When installed as a Claude Code plugin, these are available as `/pw:` commands: | Command | What it does | |---|---| | `/pw:pw-init` | Set up Playwright — detects framework, generates config, CI, first test | | `/pw:generate <spec>` | Generate tests from user story, URL, or component | | `/pw:pw-review` | Review tests for anti-patterns and coverage gaps |
Overview
Production-grade Playwright testing toolkit for AI coding agents.
Manual install (npx, ZIP)
npx skills add alirezarezvani/claude-skills --skill playwright-pro -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/alirezarezvani/claude-skills/tar.gz/19392f7a0826 \
| tar -xz -C ~/.claude/skills --strip-components=4 claude-skills-19392f7a0826/engineering-team/playwright-pro/skills/pwNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/35f6ec1bf56b2e86632d/pw.zip" -OutFile "$env:TEMP\pw.zip"; Expand-Archive "$env:TEMP\pw.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md5.6 KBreference/6 files · 12.9 KBtemplates/56 files · 284.8 KB
Read the files here
alirezarezvani/
- assertions.md2.2 KB
- common-pitfalls.md3.1 KB
- fixtures.md3.1 KB
- flaky-tests.md1.5 KB
- golden-rules.md906 B
- locators.md2.1 KB
- auth-headers.md4.7 KB
- error-responses.md5.4 KB
- graphql.md5.9 KB
- rate-limiting.md5.5 KB
- rest-crud.md5.0 KB
- login.md4.6 KB
- logout.md4.1 KB
- mfa.md5.1 KB
- password-reset.md5.7 KB
- rbac.md4.7 KB
- remember-me.md5.6 KB
- session-timeout.md4.3 KB
- sso.md4.5 KB
- add-to-cart.md4.1 KB
- apply-coupon.md5.0 KB
- order-confirm.md4.1 KB
- order-history.md4.6 KB
- payment.md5.4 KB
- update-quantity.md4.8 KB
- bulk-operations.md5.2 KB
- create.md4.7 KB
- delete.md5.1 KB
- read.md4.6 KB
- soft-delete.md4.7 KB
- update.md5.6 KB
- chart-rendering.md4.9 KB
- data-loading.md4.9 KB
- date-range-filter.md5.5 KB
- export.md5.7 KB
- realtime-updates.md5.1 KB
- autosave.md5.3 KB
- conditional-fields.md5.6 KB
- file-upload.md5.2 KB
- multi-step.md5.5 KB
- single-step.md4.8 KB
- validation.md5.8 KB
Shared references2SKILL.md reads these from elsewhere in the repo. Not in the ZIP.
Get them on GitHub ↗Show the full text132 lines
Playwright Pro
Production-grade Playwright testing toolkit for AI coding agents.
Available Commands
When installed as a Claude Code plugin, these are available as /pw: commands:
| Command | What it does |
|---|---|
/pw:pw-init |
Set up Playwright — detects framework, generates config, CI, first test |
/pw:generate <spec> |
Generate tests from user story, URL, or component |
/pw: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:pw-init → scaffolds config, CI pipeline, and a first smoke test
2. /pw:generate → generates tests from your spec or URL
3. /pw: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:pw-reviewbefore 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:coverageto 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: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
baseURLin config — zero hardcoded URLs- Retries:
2in CI,0locally - 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 (optional — not auto-registered; see Integration Setup)
- 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
Not auto-registered (issue #978). The TestRail and BrowserStack MCP servers are no longer declared in the plugin's
.mcp.json(they failed to connect for every user — no bundlednode_modules). Exporting the env vars below is not enough:/pw:testrail//pw:browserstackfail with "tool not found" until you enable the server manually (cd integrations/<name>-mcp && npm install, then register it in your own user/project MCP config). SeeCLAUDE.md→ Integrations.
TestRail (Optional)
export TESTRAIL_URL="https://your-instance.testrail.io"
export TESTRAIL_USER="[email protected]"
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 ruleslocators.md— Complete locator priority with cheat sheetassertions.md— Web-first assertions referencefixtures.md— Custom fixtures and storageState patternscommon-pitfalls.md— Top 10 mistakes and fixesflaky-tests.md— Diagnosis commands and quick fixes
See templates/README.md for the full template index.
| 1 | |
| 2 | name "playwright-pro" |
| 3 | description "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 | |
| 5 | |
| 6 | # Playwright Pro |
| 7 | |
| 8 | Production-grade Playwright testing toolkit for AI coding agents. |
| 9 | |
| 10 | ## Available Commands |
| 11 | |
| 12 | When installed as a Claude Code plugin, these are available as `/pw:` commands: |
| 13 | |
| 14 | | Command | What it does | |
| 15 | |---|---| |
| 16 | | `/pw:pw-init` | Set up Playwright — detects framework, generates config, CI, first test | |
| 17 | | `/pw:generate <spec>` | Generate tests from user story, URL, or component | |
| 18 | | `/pw:pw-review` | Review tests for anti-patterns and coverage gaps | |
| 19 | | `/pw:fix <test>` | Diagnose and fix failing or flaky tests | |
| 20 | | `/pw:migrate` | Migrate from Cypress or Selenium to Playwright | |
| 21 | | `/pw:coverage` | Analyze what's tested vs. what's missing | |
| 22 | | `/pw:testrail` | Sync with TestRail — read cases, push results | |
| 23 | | `/pw:browserstack` | Run on BrowserStack, pull cross-browser reports | |
| 24 | | `/pw:report` | Generate test report in your preferred format | |
| 25 | |
| 26 | ## Quick Start Workflow |
| 27 | |
| 28 | The recommended sequence for most projects: |
| 29 | |
| 30 | |
| 31 | 1. /pw:pw-init → scaffolds config, CI pipeline, and a first smoke test |
| 32 | 2. /pw:generate → generates tests from your spec or URL |
| 33 | 3. /pw:pw-review → validates quality and flags anti-patterns ← always run after generate |
| 34 | 4. /pw:fix <test> → diagnoses and repairs any failing/flaky tests ← run when CI turns red |
| 35 | |
| 36 | |
| 37 | **Validation checkpoints:** |
| 38 | After `/pw:generate` — always run `/pw:pw-review` before committing; it catches locator anti-patterns and missing assertions automatically. |
| 39 | After `/pw:fix` — re-run the full suite locally (`npx playwright test`) to confirm the fix doesn't introduce regressions. |
| 40 | After `/pw:migrate` — run `/pw:coverage` to confirm parity with the old suite before decommissioning Cypress/Selenium tests. |
| 41 | |
| 42 | ### Example: Generate → Review → Fix |
| 43 | |
| 44 | |
| 45 | # 1. Generate tests from a user story |
| 46 | /pw:generate "As a user I can log in with email and password" |
| 47 | |
| 48 | # Generated: tests/auth/login.spec.ts |
| 49 | # → Playwright Pro creates the file using the auth template. |
| 50 | |
| 51 | # 2. Review the generated tests |
| 52 | /pw:pw-review tests/auth/login.spec.ts |
| 53 | |
| 54 | # → Flags: one test used page.locator('input[type=password]') — suggests getByLabel('Password') |
| 55 | # → Fix applied automatically. |
| 56 | |
| 57 | # 3. Run locally to confirm |
| 58 | npx playwright test tests/auth/login.spec.ts --headed |
| 59 | |
| 60 | # 4. If a test is flaky in CI, diagnose it |
| 61 | /pw:fix tests/auth/login.spec.ts |
| 62 | # → Identifies missing web-first assertion; replaces waitForTimeout(2000) with expect(locator).toBeVisible() |
| 63 | |
| 64 | |
| 65 | ## Golden Rules |
| 66 | |
| 67 | `getByRole()` over CSS/XPath — resilient to markup changes |
| 68 | Never `page.waitForTimeout()` — use web-first assertions |
| 69 | `expect(locator)` auto-retries; `expect(await locator.textContent())` does not |
| 70 | Isolate every test — no shared state between tests |
| 71 | `baseURL` in config — zero hardcoded URLs |
| 72 | Retries: `2` in CI, `0` locally |
| 73 | Traces: `'on-first-retry'` — rich debugging without slowdown |
| 74 | Fixtures over globals — `test.extend()` for shared state |
| 75 | One behavior per test — multiple related assertions are fine |
| 76 | Mock external services only — never mock your own app |
| 77 | |
| 78 | ## Locator Priority |
| 79 | |
| 80 | |
| 81 | 1. getByRole() — buttons, links, headings, form elements |
| 82 | 2. getByLabel() — form fields with labels |
| 83 | 3. getByText() — non-interactive text |
| 84 | 4. getByPlaceholder() — inputs with placeholder |
| 85 | 5. getByTestId() — when no semantic option exists |
| 86 | 6. page.locator() — CSS/XPath as last resort |
| 87 | |
| 88 | |
| 89 | ## What's Included |
| 90 | |
| 91 | **9 skills** with detailed step-by-step instructions |
| 92 | **3 specialized agents**: test-architect, test-debugger, migration-planner |
| 93 | **55 test templates**: auth, CRUD, checkout, search, forms, dashboard, settings, onboarding, notifications, API, accessibility |
| 94 | **2 MCP servers** (TypeScript): TestRail and BrowserStack integrations *(optional — not auto-registered; see Integration Setup)* |
| 95 | **Smart hooks**: auto-validate test quality, auto-detect Playwright projects |
| 96 | **6 reference docs**: golden rules, locators, assertions, fixtures, pitfalls, flaky tests |
| 97 | **Migration guides**: Cypress and Selenium mapping tables |
| 98 | |
| 99 | ## Integration Setup |
| 100 | |
| 101 | > **Not auto-registered (issue #978).** The TestRail and BrowserStack MCP servers |
| 102 | > are no longer declared in the plugin's `.mcp.json` (they failed to connect for |
| 103 | > every user — no bundled `node_modules`). Exporting the env vars below is not |
| 104 | > enough: `/pw:testrail` / `/pw:browserstack` fail with "tool not found" until you |
| 105 | > enable the server manually (`cd integrations/<name>-mcp && npm install`, then |
| 106 | > register it in your own user/project MCP config). See `CLAUDE.md` → Integrations. |
| 107 | |
| 108 | ### TestRail (Optional) |
| 109 | |
| 110 | export TESTRAIL_URL="https://your-instance.testrail.io" |
| 111 | export TESTRAIL_USER="[email protected]" |
| 112 | export TESTRAIL_API_KEY="your-api-key" |
| 113 | |
| 114 | |
| 115 | ### BrowserStack (Optional) |
| 116 | |
| 117 | export BROWSERSTACK_USERNAME="your-username" |
| 118 | export BROWSERSTACK_ACCESS_KEY="your-access-key" |
| 119 | |
| 120 | |
| 121 | ## Quick Reference |
| 122 | |
| 123 | See `reference/` directory for: |
| 124 | `golden-rules.md` — The 10 non-negotiable rules |
| 125 | `locators.md` — Complete locator priority with cheat sheet |
| 126 | `assertions.md` — Web-first assertions reference |
| 127 | `fixtures.md` — Custom fixtures and storageState patterns |
| 128 | `common-pitfalls.md` — Top 10 mistakes and fixes |
| 129 | `flaky-tests.md` — Diagnosis commands and quick fixes |
| 130 | |
| 131 | See `templates/README.md` for the full template index. |
| 132 |
Details
- Updated
- Aug 30, 2026
- License
- MIT
- Stars on the repo
- ★ 26,349
- Checked
- Source
- alirezarezvani/claude-skills ↗
- Creator
- alirezarezvani · 363 listings
Similar skills
See all →
Skill29 production-ready scripts for iOS app testing, buildingIos simulator skill
SkillMoAI unified orchestrator for autonomous development
SkillWrite Android unit, Compose UI, and Hilt-integrated testsAndroid Testing Standards
SkillImplementing any feature or bugfixTest-Driven Development (TDD)
SkillToolkit for interacting with and testing local webWebapp testing
PromptGuide to fixing bugs using a test-first approachTest first bug fixing approachMore from alirezarezvani
SkillResume a paused experiment/ar:ar-resume — Resume Experiment
SkillShow experiment dashboard with results, active loops/ar:ar-status — Experiment Dashboard
SkillStart an autonomous experiment loop with user-selected/ar:loop — Autonomous Experiment Loop
SkillRun a single experiment iteration/ar:run — Single Experiment Iteration
SkillSet up a new autoresearch experiment interactively/ar:setup — Create New Experiment
Skill/cs:boardroom <brief/cs:boardroom — Multi-Role Boardroom Deliberation