mcpField
P
playwright-best-practices

playwright-best-practices

github.com/currents-devテスト・品質41299.4k 回インストール14 週間前に更新
リポジトリ

playwright-best-practices について

Playwright テストの作成、デバッグ、保守に取り組む開発者向けのリファレンススキルです。活動別のガイドで、テスト種別、ブラウザーのシナリオ、設計、プロジェクト設定を扱います。

主な機能

  1. 01E2E・コンポーネント・API テストのガイド
  2. 02モバイルとブラウザー API のリファレンス
  3. 03デバッグと不安定なテストへの助言
  4. 04テスト設計と保守のガイダンス
  5. 05CI・設定・パフォーマンスのリファレンス

活用シーン

  1. 01新しい Playwright テストスイートの計画
  2. 02不安定なテストやタイムアウトの調査
  3. 03テスト設計パターンの選択
  4. 04CI と並列実行の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/currents-dev/playwright-best-practices-skill --skill playwright-best-practices

インストール後、Claude Code で/playwright-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

advanced/
authentication-flows.md
authentication.md
clock-mocking.md
mobile-testing.md
multi-context.md
multi-user.md
network-advanced.md
third-party.md
architecture/
pom-vs-fixtures.md
test-architecture.md
when-to-mock.md
browser-apis/
browser-apis.md
iframes.md
service-workers.md
websockets.md
core/
annotations.md
assertions-waiting.md
configuration.md
fixtures-hooks.md
global-setup.md
locators.md
page-object-model.md
projects-dependencies.md
test-data.md
test-suite-structure.md
test-tags.md
debugging/
console-errors.md
debugging.md
error-testing.md
flaky-tests.md

詳細

Playwright のベストプラクティス

このスキルでは、新しいテストの作成から既存のテストスイートのデバッグや保守まで、Playwright を使ったテスト開発のあらゆる側面について包括的なガイダンスを提供します。

作業内容に応じたリファレンスガイド

作業内容に応じて、以下のリファレンスを参照してください。

新しいテストの作成

使用する場面:新しいテストファイルの作成、テストケースの作成、テストシナリオの実装

アクティビティ参考ファイル
E2E テストの作成test-suite-structure.md, locators.md, assertions-waiting.md
コンポーネントテストの作成component-testing.md, test-suite-structure.md
API テストの作成api-testing.md, test-suite-structure.md
GraphQL テストの作成graphql-testing.md, api-testing.md
ビジュアルリグレッションテストの作成visual-regression.md, canvas-webgl.md
POM を使ったテストコードの構成page-object-model.md, test-suite-structure.md
テストデータ/フィクスチャの設定fixtures-hooks.md, test-data.md
認証の処理authentication.md, authentication-flows.md
日付/時刻機能のテストclock-mocking.md
ファイルのアップロード/ダウンロードのテストfile-operations.md, file-upload-download.md
フォーム/バリデーションのテストforms-validation.md
ドラッグ&ドロップのテストdrag-drop.md
アクセシビリティのテストaccessibility.md
セキュリティ(XSS、CSRF)のテストsecurity-testing.md
テストアノテーションの使用annotations.md
テストタグの使用test-tags.md
iframe のテストiframes.md
canvas/WebGL のテストcanvas-webgl.md
国際化(i18n)i18n.md
Electron アプリのテストelectron.md
ブラウザー拡張機能のテストbrowser-extensions.md
モバイルとレスポンシブのテスト

使用する場面:モバイルデバイス、タッチ操作、レスポンシブレイアウトをテストする場合

アクティビティ参照ファイル
デバイスのエミュレーションmobile-testing.md
タッチジェスチャー(スワイプ、タップ)mobile-testing.md
ビューポートとブレークポイントのテストmobile-testing.md
モバイル固有の UImobile-testing.md, locators.md
リアルタイム機能とブラウザー API

使用する場面:WebSocket、位置情報、権限、複数タブのフローをテストする場合

アクティビティ参照ファイル
WebSocket/リアルタイム機能のテストwebsockets.md
位置情報のモックbrowser-apis.md
権限の処理browser-apis.md
クリップボードのテストbrowser-apis.md
カメラ/マイクのモックbrowser-apis.md
複数タブ/ポップアップのフローmulti-context.md
OAuth ポップアップの処理third-party.md, multi-context.md
デバッグとトラブルシューティング

使用する場面:テストの失敗、要素が見つからない、タイムアウト、予期しない動作

アクティビティ参照ファイル
テストの失敗をデバッグするdebugging.md、assertions-waiting.md
不安定なテストを修正するflaky-tests.md、debugging.md、assertions-waiting.md
不安定な並列実行をデバッグするflaky-tests.md、performance.md、fixtures-hooks.md
テストの分離を確保する/状態の漏洩を防ぐflaky-tests.md、fixtures-hooks.md、performance.md
セレクターの問題を修正するlocators.md、debugging.md
タイムアウトの問題を調査するassertions-waiting.md、debugging.md
トレースビューアーを使用するdebugging.md
競合状態をデバッグするflaky-tests.md、debugging.md、assertions-waiting.md
コンソール/JS エラーをデバッグするconsole-errors.md、debugging.md
エラーとエッジケースのテスト

使用する場面:エラー状態、オフラインモード、ネットワーク障害、検証のテスト

アクティビティ参照ファイル
エラーバウンダリーのテストerror-testing.md
ネットワーク障害のシミュレーションerror-testing.md、network-advanced.md
オフラインモードのテストerror-testing.md、service-workers.md
サービスワーカーのテストservice-workers.md
読み込み状態のテストerror-testing.md
フォーム検証のテストerror-testing.md
マルチユーザーとコラボレーションのテスト

使用する場面:複数のユーザー、ロール、リアルタイムコラボレーションに関する機能をテストする場合

アクティビティ参照ファイル
1つのテストで複数のユーザーを使用multi-user.md
リアルタイムコラボレーションmulti-user.md, websockets.md
ロールベースのアクセスをテストmulti-user.md
同時アクションをテストmulti-user.md
アーキテクチャの決定

使用する場面:テストパターンの選択、アプローチの比較、テストアーキテクチャの計画

アクティビティ参照ファイル
POM とフィクスチャの選択pom-vs-fixtures.md
テストの種類の選択test-architecture.md
モックと実サービスの比較when-to-mock.md
テストスイートの構成test-suite-structure.md
フレームワーク固有のテスト

使用する場面:React、Angular、Vue、Next.js アプリケーションをテストする場合

アクティビティ参照ファイル
React アプリのテストreact.md
Angular アプリのテストangular.md
Vue/Nuxt アプリのテストvue.md
Next.js アプリのテストnextjs.md
リファクタリングとメンテナンス

使用する場面:既存のテストの改善、コードレビュー、重複の削減

アクティビティ参照ファイル
ページオブジェクトモデルへのリファクタリングpage-object-model.md, test-suite-structure.md
テストの整理方法を改善test-suite-structure.md, page-object-model.md
共通のセットアップ/ティアダウンを抽出fixtures-hooks.md
壊れやすいセレクターを置き換えlocators.md
明示的な待機を削除assertions-waiting.md
テストデータファクトリーを作成test-data.md
設定のセットアップconfiguration.md
インフラストラクチャと設定

使用する場面:プロジェクトのセットアップ、CI/CD の設定、パフォーマンスの最適化

アクティビティ参照ファイル
Playwright プロジェクトの設定configuration.md, projects-dependencies.md
CI/CD パイプラインのセットアップci-cd.md, github-actions.md
GitHub Actions のセットアップgithub-actions.md
GitLab CI のセットアップgitlab.md
その他の CI プロバイダーother-providers.md
Docker/コンテナーのセットアップdocker.md
グローバルセットアップとティアダウンglobal-setup.md
プロジェクトの依存関係projects-dependencies.md
テストパフォーマンスの最適化performance.md, test-suite-structure.md
並列実行の設定parallel-sharding.md, performance.md
ワーカー間のテストデータの分離fixtures-hooks.md, performance.md
テストカバレッジtest-coverage.md
テストレポート/成果物reporting.md
高度なパターン

使用する場面:複雑なシナリオ、API のモック、ネットワークのインターセプト

アクティビティ参照ファイル
API レスポンスのモックtest-suite-structure.md, network-advanced.md
ネットワークのインターセプトnetwork-advanced.md, assertions-waiting.md
GraphQL のモックnetwork-advanced.md
HAR の記録/再生network-advanced.md
カスタムフィクスチャfixtures-hooks.md
高度な待機戦略assertions-waiting.md
OAuth/SSO のモックthird-party.md, multi-context.md
決済ゲートウェイのモックthird-party.md
メール/SMS 認証のモックthird-party.md
コンソールエラー発生時に失敗させるconsole-errors.md
セキュリティテスト(XSS、CSRF)security-testing.md
パフォーマンス予算と Web Vitalsperformance-testing.md
Lighthouse の統合performance-testing.md
テストアノテーション(skip、fixme)annotations.md
テストタグ(@smoke、@fast)test-tags.md
レポート用のテストステップannotations.md

すばやく判断するためのフローチャート

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

テストの検証ループ

テストを作成または変更した後:

  1. テストを実行する:npx playwright test --reporter=list
  2. テストが失敗した場合:
    • エラー出力とトレースを確認する(npx playwright show-trace)
    • ロケーター、待機処理、またはアサーションを修正する
    • テストを再実行する
  3. すべてのテストが成功した場合にのみ次へ進む
  4. 重要なテストは複数回実行する:npx playwright test --repeat-each=5

コメント