playwright-best-practices

Utiliser lors de l'écriture de tests Playwright, de la correction de tests instables, du débogage d'échecs, de l'implémentation du modèle Page Object, de la configuration CI/CD, de l'optimisation des performances, du mock d'API, de la gestion de l'authentification ou OAuth, des tests d'accessibilité (axe-core), des téléchargements/uploads de fichiers, du mock de date/heure, des WebSockets, de la géolocalisation, des permissions, des flux multi-onglets/popups, des dispositions mobiles/responsives, des gestes tactiles, de GraphQL, de la gestion des erreurs, du mode hors ligne, de la collaboration multi-utilisateurs, des services tiers (paiements, vérification par e-mail),...

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

ActivityReference Files
Writing E2E teststest-suite-structure.md, locators.md, assertions-waiting.md
Writing component testscomponent-testing.md, test-suite-structure.md
Writing API testsapi-testing.md, test-suite-structure.md
Writing GraphQL testsgraphql-testing.md, api-testing.md
Writing visual regression testsvisual-regression.md, canvas-webgl.md
Structuring test code with POMpage-object-model.md, test-suite-structure.md
Setting up test data/fixturesfixtures-hooks.md, test-data.md
Handling authenticationauthentication.md, authentication-flows.md
Testing date/time featuresclock-mocking.md
Testing file upload/downloadfile-operations.md, file-upload-download.md
Testing forms/validationforms-validation.md
Testing drag and dropdrag-drop.md
Testing accessibilityaccessibility.md
Testing security (XSS, CSRF)security-testing.md
Using test annotationsannotations.md
Using test tagstest-tags.md
Testing iframesiframes.md
Testing canvas/WebGLcanvas-webgl.md
Internationalization (i18n)i18n.md
Testing Electron appselectron.md
Testing browser extensionsbrowser-extensions.md

Mobile & Responsive Testing

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

ActivityReference Files
Device emulationmobile-testing.md
Touch gestures (swipe, tap)mobile-testing.md
Viewport/breakpoint testingmobile-testing.md
Mobile-specific UImobile-testing.md, locators.md

Real-Time & Browser APIs

When to use: Testing WebSockets, geolocation, permissions, multi-tab flows

ActivityReference Files
WebSocket/real-time testingwebsockets.md
Geolocation mockingbrowser-apis.md
Permission handlingbrowser-apis.md
Clipboard testingbrowser-apis.md
Camera/microphone mockingbrowser-apis.md
Multi-tab/popup flowsmulti-context.md
OAuth popup handlingthird-party.md, multi-context.md

Debugging & Troubleshooting

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

ActivityReference Files
Debugging test failuresdebugging.md, assertions-waiting.md
Fixing flaky testsflaky-tests.md, debugging.md, assertions-waiting.md
Debugging flaky parallel runsflaky-tests.md, performance.md, fixtures-hooks.md
Ensuring test isolation / avoiding state leakflaky-tests.md, fixtures-hooks.md, performance.md
Fixing selector issueslocators.md, debugging.md
Investigating timeout issuesassertions-waiting.md, debugging.md
Using trace viewerdebugging.md
Debugging race conditionsflaky-tests.md, debugging.md, assertions-waiting.md
Debugging console/JS errorsconsole-errors.md, debugging.md

Error & Edge Case Testing

When to use: Testing error states, offline mode, network failures, validation

ActivityReference Files
Error boundary testingerror-testing.md
Network failure simulationerror-testing.md, network-advanced.md
Offline mode testingerror-testing.md, service-workers.md
Service worker testingservice-workers.md
Loading state testingerror-testing.md
Form validation testingerror-testing.md

Multi-User & Collaboration Testing

When to use: Testing features involving multiple users, roles, or real-time collaboration

ActivityReference Files
Multiple users in one testmulti-user.md
Real-time collaborationmulti-user.md, websockets.md
Role-based access testingmulti-user.md
Concurrent action testingmulti-user.md

Architecture Decisions

When to use: Choosing test patterns, deciding between approaches, planning test architecture

ActivityReference Files
POM vs fixtures decisionpom-vs-fixtures.md
Test type selectiontest-architecture.md
Mock vs real serviceswhen-to-mock.md
Test suite structuretest-suite-structure.md

Framework-Specific Testing

When to use: Testing React, Angular, Vue, or Next.js applications

ActivityReference Files
Testing React appsreact.md
Testing Angular appsangular.md
Testing Vue/Nuxt appsvue.md
Testing Next.js appsnextjs.md

Refactoring & Maintenance

When to use: Improving existing tests, code review, reducing duplication

ActivityReference Files
Refactoring to Page Object Modelpage-object-model.md, test-suite-structure.md
Improving test organizationtest-suite-structure.md, page-object-model.md
Extracting common setup/teardownfixtures-hooks.md
Replacing brittle selectorslocators.md
Removing explicit waitsassertions-waiting.md
Creating test data factoriestest-data.md
Configuration setupconfiguration.md

Infrastructure & Configuration

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

ActivityReference Files
Configuring Playwright projectconfiguration.md, projects-dependencies.md
Setting up CI/CD pipelinesci-cd.md, github-actions.md
GitHub Actions setupgithub-actions.md
GitLab CI setupgitlab.md
Other CI providersother-providers.md
Docker/container setupdocker.md
Global setup & teardownglobal-setup.md
Project dependenciesprojects-dependencies.md
Optimizing test performanceperformance.md, test-suite-structure.md
Configuring parallel executionparallel-sharding.md, performance.md
Isolating test data between workersfixtures-hooks.md, performance.md
Test coveragetest-coverage.md
Test reporting/artifactsreporting.md

Advanced Patterns

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

ActivityReference Files
Mocking API responsestest-suite-structure.md, network-advanced.md
Network interceptionnetwork-advanced.md, assertions-waiting.md
GraphQL mockingnetwork-advanced.md
HAR recording/playbacknetwork-advanced.md
Custom fixturesfixtures-hooks.md
Advanced waiting strategiesassertions-waiting.md
OAuth/SSO mockingthird-party.md, multi-context.md
Payment gateway mockingthird-party.md
Email/SMS verification mockingthird-party.md
Failing on console errorsconsole-errors.md
Security testing (XSS, CSRF)security-testing.md
Performance budgets & Web Vitalsperformance-testing.md
Lighthouse integrationperformance-testing.md
Test annotations (skip, fixme)annotations.md
Test tags (@smoke, @fast)test-tags.md
Test steps for reportingannotations.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:

  1. Run tests: npx playwright test --reporter=list
  2. If tests fail:
    • Review error output and trace (npx playwright show-trace)
    • Fix locators, waits, or assertions
    • Re-run tests
  3. Only proceed when all tests pass
  4. Run multiple times for critical tests: npx playwright test --repeat-each=5

Skills connexes

copilot-spaces
github
Contexte spécifique au projet pour les conversations via une documentation, du code et des instructions d'équipe organisés. Lister et charger les Copilot Spaces à l'aide d'outils MCP en lecture seule ; créer, mettre à jour et supprimer des espaces via l'API REST GitHub avec gh api. Les espaces contiennent des dépôts, fichiers, documentation et instructions personnalisées attachés qui ancrent les réponses de Copilot dans les connaissances réelles du projet. Utiliser les espaces pour répondre aux questions sur l'architecture et les normes, générer du code suivant les conventions de l'équipe, ou exécuter des étapes multiples...
shopify-dev
shopify
Rechercher dans la documentation développeur Shopify sur toutes les API. Utiliser uniquement lorsqu'aucune compétence spécifique à une API ne s'applique.
respond-to-pr-comments
microsoft
Répondre aux commentaires de révision de pull request sur GitHub ou Azure DevOps Services. Lit les fils de révision, valide chacun, propose des correctifs ou des explications, applique…
framework
contentstack
Utilisez lors de la modification de la structure Next.js App Router, de next.config.mjs, des images, de PostCSS ou de Tailwind dans kickstart-next-ssr.
brand-guidelines
sentry
Rédigez du contenu en suivant les directives de la marque Sentry. À utiliser pour rédiger des textes d'interface, des messages d'erreur, des états vides, des flux d'intégration, des pages 404, de la documentation, du marketing…
azuresql-db-sidecar
microsoft
Ajoute Azure SQL Developer en tant que service sidecar dans une pile Docker Compose ou un conteneur de développement existant. Utilisez lors du branchement du moteur local Azure SQL Database dans…
aws-database
aws
Achemine toute tâche impliquant des bases de données AWS — choisir, comparer, recommander, démarrer avec, ou exploiter une base de données — vers le service spécifique approprié…
commit
microsoft
Valider les modifications indexées ou non indexées avec un message de commit généré par IA qui correspond au style de commit existant du dépôt. Utiliser lorsque l'utilisateur demande de « commit »,…