playwright-best-practices

安装量: 12K
排名: #171

安装

npx skills add https://github.com/currents-dev/playwright-best-practices-skill --skill playwright-best-practices
Playwright Best Practices
This skill provides comprehensive guidance for all aspects of Playwright test development, from writing new tests to debugging and maintaining existing test suites.
Activity-Based Reference Guide
Consult these references based on what you're doing:
Writing New Tests
When to use
Creating new test files, writing test cases, implementing test scenarios
Activity
Reference Files
Writing E2E tests
test-suite-structure.md
,
locators.md
,
assertions-waiting.md
Writing component tests
component-testing.md
,
test-suite-structure.md
Writing API tests
api-testing.md
,
test-suite-structure.md
Writing GraphQL tests
graphql-testing.md
,
api-testing.md
Writing visual regression tests
visual-regression.md
,
canvas-webgl.md
Structuring test code with POM
page-object-model.md
,
test-suite-structure.md
Setting up test data/fixtures
fixtures-hooks.md
,
test-data.md
Handling authentication
authentication.md
,
authentication-flows.md
Testing date/time features
clock-mocking.md
Testing file upload/download
file-operations.md
,
file-upload-download.md
Testing forms/validation
forms-validation.md
Testing drag and drop
drag-drop.md
Testing accessibility
accessibility.md
Testing security (XSS, CSRF)
security-testing.md
Using test annotations
annotations.md
Using test tags
test-tags.md
Testing iframes
iframes.md
Testing canvas/WebGL
canvas-webgl.md
Internationalization (i18n)
i18n.md
Testing Electron apps
electron.md
Testing browser extensions
browser-extensions.md
Mobile & Responsive Testing
When to use
Testing mobile devices, touch interactions, responsive layouts
Activity
Reference Files
Device emulation
mobile-testing.md
Touch gestures (swipe, tap)
mobile-testing.md
Viewport/breakpoint testing
mobile-testing.md
Mobile-specific UI
mobile-testing.md
,
locators.md
Real-Time & Browser APIs
When to use
Testing WebSockets, geolocation, permissions, multi-tab flows
Activity
Reference Files
WebSocket/real-time testing
websockets.md
Geolocation mocking
browser-apis.md
Permission handling
browser-apis.md
Clipboard testing
browser-apis.md
Camera/microphone mocking
browser-apis.md
Multi-tab/popup flows
multi-context.md
OAuth popup handling
third-party.md
,
multi-context.md
Debugging & Troubleshooting
When to use
Test failures, element not found, timeouts, unexpected behavior
Activity
Reference Files
Debugging test failures
debugging.md
,
assertions-waiting.md
Fixing flaky tests
flaky-tests.md
,
debugging.md
,
assertions-waiting.md
Debugging flaky parallel runs
flaky-tests.md
,
performance.md
,
fixtures-hooks.md
Ensuring test isolation / avoiding state leak
flaky-tests.md
,
fixtures-hooks.md
,
performance.md
Fixing selector issues
locators.md
,
debugging.md
Investigating timeout issues
assertions-waiting.md
,
debugging.md
Using trace viewer
debugging.md
Debugging race conditions
flaky-tests.md
,
debugging.md
,
assertions-waiting.md
Debugging console/JS errors
console-errors.md
,
debugging.md
Error & Edge Case Testing
When to use
Testing error states, offline mode, network failures, validation
Activity
Reference Files
Error boundary testing
error-testing.md
Network failure simulation
error-testing.md
,
network-advanced.md
Offline mode testing
error-testing.md
,
service-workers.md
Service worker testing
service-workers.md
Loading state testing
error-testing.md
Form validation testing
error-testing.md
Multi-User & Collaboration Testing
When to use
Testing features involving multiple users, roles, or real-time collaboration
Activity
Reference Files
Multiple users in one test
multi-user.md
Real-time collaboration
multi-user.md
,
websockets.md
Role-based access testing
multi-user.md
Concurrent action testing
multi-user.md
Architecture Decisions
When to use
Choosing test patterns, deciding between approaches, planning test architecture
Activity
Reference Files
POM vs fixtures decision
pom-vs-fixtures.md
Test type selection
test-architecture.md
Mock vs real services
when-to-mock.md
Test suite structure
test-suite-structure.md
Framework-Specific Testing
When to use
Testing React, Angular, Vue, or Next.js applications
Activity
Reference Files
Testing React apps
react.md
Testing Angular apps
angular.md
Testing Vue/Nuxt apps
vue.md
Testing Next.js apps
nextjs.md
Refactoring & Maintenance
When to use
Improving existing tests, code review, reducing duplication
Activity
Reference Files
Refactoring to Page Object Model
page-object-model.md
,
test-suite-structure.md
Improving test organization
test-suite-structure.md
,
page-object-model.md
Extracting common setup/teardown
fixtures-hooks.md
Replacing brittle selectors
locators.md
Removing explicit waits
assertions-waiting.md
Creating test data factories
test-data.md
Configuration setup
configuration.md
Infrastructure & Configuration
When to use
Setting up projects, configuring CI/CD, optimizing performance
Activity
Reference Files
Configuring Playwright project
configuration.md
,
projects-dependencies.md
Setting up CI/CD pipelines
ci-cd.md
,
github-actions.md
GitHub Actions setup
github-actions.md
GitLab CI setup
gitlab.md
Other CI providers
other-providers.md
Docker/container setup
docker.md
Global setup & teardown
global-setup.md
Project dependencies
projects-dependencies.md
Optimizing test performance
performance.md
,
test-suite-structure.md
Configuring parallel execution
parallel-sharding.md
,
performance.md
Isolating test data between workers
fixtures-hooks.md
,
performance.md
Test coverage
test-coverage.md
Test reporting/artifacts
reporting.md
Advanced Patterns
When to use
Complex scenarios, API mocking, network interception Activity Reference Files Mocking API responses test-suite-structure.md , network-advanced.md Network interception network-advanced.md , assertions-waiting.md GraphQL mocking network-advanced.md HAR recording/playback network-advanced.md Custom fixtures fixtures-hooks.md Advanced waiting strategies assertions-waiting.md OAuth/SSO mocking third-party.md , multi-context.md Payment gateway mocking third-party.md Email/SMS verification mocking third-party.md Failing on console errors console-errors.md Security testing (XSS, CSRF) security-testing.md Performance budgets & Web Vitals performance-testing.md Lighthouse integration performance-testing.md Test annotations (skip, fixme) annotations.md Test tags (@smoke, @fast) test-tags.md Test steps for reporting annotations.md Quick Decision Tree What are you doing? │ ├─ Writing a new test? │ ├─ E2E test → core/test-suite-structure.md, core/locators.md, core/assertions-waiting.md │ ├─ Component test → testing-patterns/component-testing.md │ ├─ API test → testing-patterns/api-testing.md, core/test-suite-structure.md │ ├─ GraphQL test → testing-patterns/graphql-testing.md │ ├─ Visual regression → testing-patterns/visual-regression.md │ ├─ Visual/canvas test → testing-patterns/canvas-webgl.md, core/test-suite-structure.md │ ├─ Accessibility test → testing-patterns/accessibility.md │ ├─ Mobile/responsive test → advanced/mobile-testing.md │ ├─ i18n/locale test → testing-patterns/i18n.md │ ├─ Electron app test → testing-patterns/electron.md │ ├─ Browser extension test → testing-patterns/browser-extensions.md │ ├─ Multi-user test → advanced/multi-user.md │ ├─ Form validation test → testing-patterns/forms-validation.md │ └─ Drag and drop test → testing-patterns/drag-drop.md │ ├─ Testing specific features? │ ├─ File upload/download → testing-patterns/file-operations.md, testing-patterns/file-upload-download.md │ ├─ Date/time dependent → advanced/clock-mocking.md │ ├─ WebSocket/real-time → browser-apis/websockets.md │ ├─ Geolocation/permissions → browser-apis/browser-apis.md │ ├─ OAuth/SSO mocking → advanced/third-party.md, advanced/multi-context.md │ ├─ Payments/email/SMS → advanced/third-party.md │ ├─ iFrames → browser-apis/iframes.md │ ├─ Canvas/WebGL/charts → testing-patterns/canvas-webgl.md │ ├─ Service workers/PWA → browser-apis/service-workers.md │ ├─ i18n/localization → testing-patterns/i18n.md │ ├─ Security (XSS, CSRF) → testing-patterns/security-testing.md │ └─ Performance/Web Vitals → testing-patterns/performance-testing.md │ ├─ Architecture decisions? │ ├─ POM vs fixtures → architecture/pom-vs-fixtures.md │ ├─ Test type selection → architecture/test-architecture.md │ ├─ Mock vs real services → architecture/when-to-mock.md │ └─ Test suite structure → core/test-suite-structure.md │ ├─ Framework-specific testing? │ ├─ React app → frameworks/react.md │ ├─ Angular app → frameworks/angular.md │ ├─ Vue/Nuxt app → frameworks/vue.md │ └─ Next.js app → frameworks/nextjs.md │ ├─ Authentication testing? │ ├─ Basic auth patterns → advanced/authentication.md │ └─ Complex flows (MFA, reset) → advanced/authentication-flows.md │ ├─ Test is failing/flaky? │ ├─ Flaky test investigation → debugging/flaky-tests.md │ ├─ Element not found → core/locators.md, debugging/debugging.md │ ├─ Timeout issues → core/assertions-waiting.md, debugging/debugging.md │ ├─ Race conditions → debugging/flaky-tests.md, debugging/debugging.md │ ├─ Flaky only with multiple workers → debugging/flaky-tests.md, infrastructure-ci-cd/performance.md │ ├─ State leak / isolation → debugging/flaky-tests.md, core/fixtures-hooks.md │ ├─ Console/JS errors → debugging/console-errors.md, debugging/debugging.md │ └─ General debugging → debugging/debugging.md │ ├─ Testing error scenarios? │ ├─ Network failures → debugging/error-testing.md, advanced/network-advanced.md │ ├─ Offline (unexpected) → debugging/error-testing.md │ ├─ Offline-first/PWA → browser-apis/service-workers.md │ ├─ Error boundaries → debugging/error-testing.md │ └─ Form validation → testing-patterns/forms-validation.md, debugging/error-testing.md │ ├─ Refactoring existing code? │ ├─ Implementing POM → core/page-object-model.md │ ├─ Improving selectors → core/locators.md │ ├─ Extracting fixtures → core/fixtures-hooks.md │ ├─ Creating data factories → core/test-data.md │ └─ Configuration setup → core/configuration.md │ ├─ Setting up infrastructure? │ ├─ CI/CD → infrastructure-ci-cd/ci-cd.md │ ├─ GitHub Actions → infrastructure-ci-cd/github-actions.md │ ├─ GitLab CI → infrastructure-ci-cd/gitlab.md │ ├─ Other CI providers → infrastructure-ci-cd/other-providers.md │ ├─ Docker/containers → infrastructure-ci-cd/docker.md │ ├─ Sharding/parallel → infrastructure-ci-cd/parallel-sharding.md │ ├─ Reporting/artifacts → infrastructure-ci-cd/reporting.md │ ├─ Global setup/teardown → core/global-setup.md │ ├─ Project dependencies → core/projects-dependencies.md │ ├─ Test performance → infrastructure-ci-cd/performance.md │ ├─ Test coverage → infrastructure-ci-cd/test-coverage.md │ └─ Project config → core/configuration.md, core/projects-dependencies.md │ ├─ Organizing tests? │ ├─ Skip/fixme/slow tests → core/annotations.md │ ├─ Test tags (@smoke, @fast) → core/test-tags.md │ ├─ Filtering tests (--grep) → core/test-tags.md │ ├─ Test steps → core/annotations.md │ └─ Conditional execution → core/annotations.md │ └─ Running subset of tests? ├─ By tag (@smoke, @critical) → core/test-tags.md ├─ Exclude slow/flaky tests → core/test-tags.md ├─ PR vs nightly tests → core/test-tags.md, infrastructure-ci-cd/ci-cd.md └─ Project-specific filtering → core/test-tags.md, core/configuration.md Test Validation Loop After writing or modifying tests: Run tests : npx playwright test --reporter=list If tests fail : Review error output and trace ( npx playwright show-trace ) Fix locators, waits, or assertions Re-run tests Only proceed when all tests pass Run multiple times for critical tests: npx playwright test --repeat-each=5
返回排行榜