SKILL.md
$2a
- **
getByRole()over CSS/XPath** — resilient to markup changes, mirrors how users see the page
- **Never
page.waitForTimeout()** — useexpect(locator).toBeVisible()orpage.waitForURL()
- Web-first assertions —
expect(locator)auto-retries;expect(await locator.textContent())does not
- Isolate every test — no shared state, no execution-order dependencies
- **
baseURLin config** — zero hardcoded URLs in tests
- **Retries:
2in CI,0locally** — surface flakiness where it matters
- **Traces:
'on-first-retry'** — rich debugging artifacts without CI slowdown
- Fixtures over globals — share state via
test.extend(), not module-level variables
- One behavior per test — multiple related
expect()calls are fine
- Mock external services only — never mock your own app; mock third-party APIs, payment gateways, email
Guide Index
Writing Tests
What you're doing
Guide
Deep dive
Choosing selectors
Assertions & waiting
Organizing test suites
Playwright config
Page objects
Fixtures & hooks
Test data
Auth & login
API testing (REST/GraphQL)
Visual regression
Accessibility
Mobile & responsive
Component testing
Network mocking
Forms & validation
File uploads/downloads
Error & edge cases
CRUD flows
Drag and drop
Search & filter UI
Debugging & Fixing
Problem
Guide
General debugging workflow
Specific error message
Flaky / intermittent tests
Common beginner mistakes
Framework Recipes
Framework
Guide
Next.js (App Router + Pages Router)
React (CRA, Vite)
Vue 3 / Nuxt
Angular
Migration Guides
From
Guide
Cypress
Selenium / WebDriver
Architecture Decisions
Question
Guide
Which locator strategy?
E2E vs component vs API?
Mock vs real services?
POM vs fixtures vs helpers?
CI/CD & Infrastructure
Topic
Guide
GitHub Actions
GitLab CI
CircleCI / Azure DevOps / Jenkins
Parallel execution & sharding
Docker & containers
Reports & artifacts
Code coverage
Global setup/teardown
Multi-project config
Specialized Topics
Topic
Guide
Multi-user & collaboration
multi-user-and-collaboration.md
WebSockets & real-time
Browser APIs (geo, clipboard, permissions)
iframes & Shadow DOM
Canvas & WebGL
Service workers & PWA
Electron apps
Browser extensions
Security testing
Performance & benchmarks
i18n & localization
Multi-tab & popups
Clock & time mocking
Third-party integrations
CLI Browser Automation
What you're doing
Guide
CLI browser interaction
Core commands (open, click, fill, navigate)
Network mocking & interception
Running custom Playwright code
Multi-session browser management
Cookies, localStorage, auth state
Test code generation from CLI
Tracing and debugging
Screenshots, video, PDF
Device & environment emulation
Complex multi-step workflows
Language Note
All guides include TypeScript and JavaScript examples. When the project uses .js files or has no tsconfig.json, examples are adapted to plain JavaScript.