---
id: sm-playwright-best-practices
name: "playwright-best-practices"
url: https://skills.yangsir.net/skill/sm-playwright-best-practices
author: currents-dev
domain: testing
tags: ["playwright", "end-to-end-testing", "browser-automation", "ui-testing", "test-automation"]
install_count: 41900
rating: 4.70 (824 reviews)
github: https://github.com/currents-dev/playwright-best-practices-skill
---

# playwright-best-practices

> 此AI技能由Currents.dev开发，专注于提供Playwright测试框架的最佳实践指导，帮助开发者编写高效、稳定且可维护的自动化测试脚本。

**Stats**: 41,900 installs · 4.7/5 (824 reviews)

## Before / After 对比

### 遵循Playwright最佳实践，构建稳定高效的端到端自动化测试体系，确保产品质量与发布速度

## Readme

# 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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md), [locators.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/locators.md), [assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**Writing component tests**
[component-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/component-testing.md), [test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md)

**Writing API tests**
[api-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/api-testing.md), [test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md)

**Writing GraphQL tests**
[graphql-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/graphql-testing.md), [api-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/api-testing.md)

**Writing visual regression tests**
[visual-regression.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/visual-regression.md), [canvas-webgl.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/canvas-webgl.md)

**Structuring test code with POM**
[page-object-model.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/page-object-model.md), [test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md)

**Setting up test data/fixtures**
[fixtures-hooks.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/fixtures-hooks.md), [test-data.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-data.md)

**Handling authentication**
[authentication.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/authentication.md), [authentication-flows.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/authentication-flows.md)

**Testing date/time features**
[clock-mocking.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/clock-mocking.md)

**Testing file upload/download**
[file-operations.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/file-operations.md), [file-upload-download.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/file-upload-download.md)

**Testing forms/validation**
[forms-validation.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/forms-validation.md)

**Testing drag and drop**
[drag-drop.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/drag-drop.md)

**Testing accessibility**
[accessibility.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/accessibility.md)

**Testing security (XSS, CSRF)**
[security-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/security-testing.md)

**Using test annotations**
[annotations.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/annotations.md)

**Using test tags**
[test-tags.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-tags.md)

**Testing iframes**
[iframes.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/iframes.md)

**Testing canvas/WebGL**
[canvas-webgl.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/canvas-webgl.md)

**Internationalization (i18n)**
[i18n.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/i18n.md)

**Testing Electron apps**
[electron.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/electron.md)

**Testing browser extensions**
[browser-extensions.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/browser-extensions.md)

### Mobile & Responsive Testing

**When to use**: Testing mobile devices, touch interactions, responsive layouts

Activity
Reference Files

**Device emulation**
[mobile-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/mobile-testing.md)

**Touch gestures (swipe, tap)**
[mobile-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/mobile-testing.md)

**Viewport/breakpoint testing**
[mobile-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/mobile-testing.md)

**Mobile-specific UI**
[mobile-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/mobile-testing.md), [locators.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/websockets.md)

**Geolocation mocking**
[browser-apis.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/browser-apis.md)

**Permission handling**
[browser-apis.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/browser-apis.md)

**Clipboard testing**
[browser-apis.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/browser-apis.md)

**Camera/microphone mocking**
[browser-apis.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/browser-apis.md)

**Multi-tab/popup flows**
[multi-context.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/multi-context.md)

**OAuth popup handling**
[third-party.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/third-party.md), [multi-context.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/multi-context.md)

### Debugging & Troubleshooting

**When to use**: Test failures, element not found, timeouts, unexpected behavior

Activity
Reference Files

**Debugging test failures**
[debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/debugging.md), [assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**Fixing flaky tests**
[flaky-tests.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/flaky-tests.md), [debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/debugging.md), [assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**Debugging flaky parallel runs**
[flaky-tests.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/flaky-tests.md), [performance.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/performance.md), [fixtures-hooks.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/fixtures-hooks.md)

**Ensuring test isolation / avoiding state leak**
[flaky-tests.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/flaky-tests.md), [fixtures-hooks.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/fixtures-hooks.md), [performance.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/performance.md)

**Fixing selector issues**
[locators.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/locators.md), [debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/debugging.md)

**Investigating timeout issues**
[assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md), [debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/debugging.md)

**Using trace viewer**
[debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/debugging.md)

**Debugging race conditions**
[flaky-tests.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/flaky-tests.md), [debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/debugging.md), [assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**Debugging console/JS errors**
[console-errors.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/console-errors.md), [debugging.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/error-testing.md)

**Network failure simulation**
[error-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/error-testing.md), [network-advanced.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/network-advanced.md)

**Offline mode testing**
[error-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/error-testing.md), [service-workers.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/service-workers.md)

**Service worker testing**
[service-workers.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/service-workers.md)

**Loading state testing**
[error-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/error-testing.md)

**Form validation testing**
[error-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/multi-user.md)

**Real-time collaboration**
[multi-user.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/multi-user.md), [websockets.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/browser-apis/websockets.md)

**Role-based access testing**
[multi-user.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/multi-user.md)

**Concurrent action testing**
[multi-user.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/architecture/pom-vs-fixtures.md)

**Test type selection**
[test-architecture.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/architecture/test-architecture.md)

**Mock vs real services**
[when-to-mock.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/architecture/when-to-mock.md)

**Test suite structure**
[test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/frameworks/react.md)

**Testing Angular apps**
[angular.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/frameworks/angular.md)

**Testing Vue/Nuxt apps**
[vue.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/frameworks/vue.md)

**Testing Next.js apps**
[nextjs.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/frameworks/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](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/page-object-model.md), [test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md)

**Improving test organization**
[test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md), [page-object-model.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/page-object-model.md)

**Extracting common setup/teardown**
[fixtures-hooks.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/fixtures-hooks.md)

**Replacing brittle selectors**
[locators.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/locators.md)

**Removing explicit waits**
[assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**Creating test data factories**
[test-data.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-data.md)

**Configuration setup**
[configuration.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/configuration.md)

### Infrastructure & Configuration

**When to use**: Setting up projects, configuring CI/CD, optimizing performance

Activity
Reference Files

**Configuring Playwright project**
[configuration.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/configuration.md), [projects-dependencies.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/projects-dependencies.md)

**Setting up CI/CD pipelines**
[ci-cd.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/ci-cd.md), [github-actions.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/github-actions.md)

**GitHub Actions setup**
[github-actions.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/github-actions.md)

**GitLab CI setup**
[gitlab.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/gitlab.md)

**Other CI providers**
[other-providers.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/other-providers.md)

**Docker/container setup**
[docker.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/docker.md)

**Global setup & teardown**
[global-setup.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/global-setup.md)

**Project dependencies**
[projects-dependencies.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/projects-dependencies.md)

**Optimizing test performance**
[performance.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/performance.md), [test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md)

**Configuring parallel execution**
[parallel-sharding.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/parallel-sharding.md), [performance.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/performance.md)

**Isolating test data between workers**
[fixtures-hooks.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/fixtures-hooks.md), [performance.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/performance.md)

**Test coverage**
[test-coverage.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/test-coverage.md)

**Test reporting/artifacts**
[reporting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/infrastructure-ci-cd/reporting.md)

### Advanced Patterns

**When to use**: Complex scenarios, API mocking, network interception

Activity
Reference Files

**Mocking API responses**
[test-suite-structure.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-suite-structure.md), [network-advanced.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/network-advanced.md)

**Network interception**
[network-advanced.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/network-advanced.md), [assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**GraphQL mocking**
[network-advanced.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/network-advanced.md)

**HAR recording/playback**
[network-advanced.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/network-advanced.md)

**Custom fixtures**
[fixtures-hooks.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/fixtures-hooks.md)

**Advanced waiting strategies**
[assertions-waiting.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/assertions-waiting.md)

**OAuth/SSO mocking**
[third-party.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/third-party.md), [multi-context.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/multi-context.md)

**Payment gateway mocking**
[third-party.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/third-party.md)

**Email/SMS verification mocking**
[third-party.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/advanced/third-party.md)

**Failing on console errors**
[console-errors.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/debugging/console-errors.md)

**Security testing (XSS, CSRF)**
[security-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/security-testing.md)

**Performance budgets & Web Vitals**
[performance-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/performance-testing.md)

**Lighthouse integration**
[performance-testing.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/testing-patterns/performance-testing.md)

**Test annotations (skip, fixme)**
[annotations.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/annotations.md)

**Test tags (@smoke, @fast)**
[test-tags.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/test-tags.md)

**Test steps for reporting**
[annotations.md](https://github.com/currents-dev/playwright-best-practices-skill/blob/HEAD/core/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`

Weekly Installs11.9KRepository[currents-dev/pl…es-skill](https://github.com/currents-dev/playwright-best-practices-skill)GitHub Stars147First SeenJan 29, 2026Security Audits[Gen Agent Trust HubPass](/currents-dev/playwright-best-practices-skill/playwright-best-practices/security/agent-trust-hub)[SocketPass](/currents-dev/playwright-best-practices-skill/playwright-best-practices/security/socket)[SnykPass](/currents-dev/playwright-best-practices-skill/playwright-best-practices/security/snyk)Installed oncodex11.7Kopencode11.7Kgithub-copilot11.7Kgemini-cli11.7Kkimi-cli11.6Kamp11.6K

---
*Source: https://skills.yangsir.net/skill/sm-playwright-best-practices*
*Markdown mirror: https://skills.yangsir.net/api/skill/sm-playwright-best-practices/markdown*