--- title: "Playwright Pro" description: "Playwright Pro - Claude Code skill from the Engineering - Core domain." --- # Playwright Pro **Domain:** Engineering - Core | **Skill:** `playwright-pro` | **Source:** [`engineering-team/playwright-pro/SKILL.md`](https://github.com/alirezarezvani/claude-skills/tree/main/engineering-team/playwright-pro/SKILL.md) --- # 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:init` | Set up Playwright — detects framework, generates config, CI, first test | | `/pw:generate ` | Generate tests from user story, URL, or component | | `/pw:review` | Review tests for anti-patterns and coverage gaps | | `/pw:fix ` | 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 | ## Golden Rules 1. `getByRole()` over CSS/XPath — resilient to markup changes 2. Never `page.waitForTimeout()` — use web-first assertions 3. `expect(locator)` auto-retries; `expect(await locator.textContent())` does not 4. Isolate every test — no shared state between tests 5. `baseURL` in config — zero hardcoded URLs 6. Retries: `2` in CI, `0` locally 7. Traces: `'on-first-retry'` — rich debugging without slowdown 8. Fixtures over globals — `test.extend()` for shared state 9. One behavior per test — multiple related assertions are fine 10. 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) ```bash export TESTRAIL_URL="https://your-instance.testrail.io" export TESTRAIL_USER="your@email.com" export TESTRAIL_API_KEY="your-api-key" ``` ### BrowserStack (Optional) ```bash 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.