mcpField
E
e2e-testing

e2e-testing

github.com/oakossテスト・品質20133 回インストール11 週間前に更新
リポジトリ

e2e-testing について

Playwrightを使うエンドツーエンドテストの構成とパターンを扱うスキルです。認証、モック、アクセシビリティ、ビジュアル検証、CI並列化の設計を支援します。

主な機能

  1. 01テストスイートとPage Objectの構成
  2. 02認証状態の再利用
  3. 03ネットワークモックとHAR再生
  4. 04ビジュアル回帰とアクセシビリティ検査
  5. 05CIのシャーディングと並列レポート

活用シーン

  1. 01保守しやすいE2Eテストスイートの設計
  2. 02外部サービスをモックしてテストを安定化
  3. 03複数のCIマシンへのテスト分割
  4. 04アクセシビリティとビジュアル検査の追加

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill e2e-testing

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

同梱ファイル

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

references/
accessibility.md
authentication.md
ci-sharding.md
fixtures.md
locators.md
mocking.md
page-objects.md
test-organization.md
visual-testing.md

詳細

E2E テスト

概要

Playwright を使用した E2E テストのアーキテクチャとパターンについて説明します。テストスイートの構成、テストの整理、認証、モック、ビジュアルリグレッション、アクセシビリティ監査、CI の並列実行に関する実証済みのパターンの適用方法を解説します。Playwright API の詳細ではなく、各テストパターンを使う理由とタイミングに焦点を当てています。

使用する場面: テストスイートのアーキテクチャ設計、ページオブジェクトモデルの構成、CI のシャーディング戦略の計画、認証フローの設定、タグやアノテーションを使ったテストの整理、ビジュアルリグレッションワークフローの実装、ネットワークリクエストのモック、アクセシビリティ監査。

使用しない場面: 単体テスト(Vitest/Jest を使用)、API のみのテスト(統合テストを使用)、コンポーネント単体のテスト(コンポーネントテストランナーを使用)。Playwright API の詳細、ブラウザーの自動化、スクレイピング、Playwright のエラーのトラブルシューティングには、playwright スキルを使用してください。

クイックリファレンス

パターンAPI/ツール主なポイント
ロールベースのロケーターgetByRole, getByText, getByLabelCSS/XPath セレクターより推奨されます
ページオブジェクトモデルtests/pages/ 内のクラスページ固有のロケーターとアクションをすべてカプセル化します
認証storageState + セットアッププロジェクト一度認証すれば、テスト間で再利用できます
ビジュアルリグレッションexpect(page).toHaveScreenshot()動的なコンテンツをマスクして、不安定さを防ぎます
アクセシビリティ監査@axe-core/playwright の AxeBuilder主要なフローで .withTags() + .analyze() を使用します
トレースデバッグtrace: 'on-first-retry'完全な DOM スナップショット、ネットワークログ、タイムライン
ネットワークモックpage.route()サードパーティへの依存なしで安定したテストを実行できます
HAR の再生page.routeFromHAR()記録したトラフィックから忠実度の高いモックを作成します
画像のブロックpage.route('**/*.{png,jpg}', abort)画像をスキップしてテストを高速化します
CI シャーディング--shard=1/4テストスイートを並列 CI マシンに分割します
Blob レポート--reporter=blob + merge-reportsシャーディングした結果を単一のレポートに統合します
テストタグ{ tag: ['@smoke'] }--grep でカテゴリ別にテストを絞り込みます
テストステップtest.step('name', async () => {})トレースビューアーとレポートでアクションをグループ化します
変更されたテストのみ--only-changed=$GITHUB_BASE_REFベースブランチ以降に変更されたテストファイルのみを実行します
ネイティブ a11y チェックtoHaveAccessibleName, toHaveRoleaxe-core の全スキャンに代わる軽量な方法です
レポート内の Git 情報captureGitInfo レポーターオプションCI のデバッグ用にテストレポートをコミットに紐付けます
Web ファーストアサーションexpect(element).toBeVisible()waitForTimeout の代わりに自動待機します
フィクスチャの合成mergeTests() / mergeExpects()3 つ以上のフィクスチャモジュールを 1 つの test にまとめます
自動フィクスチャtest.extend() の { auto: true }すべてのテストで実行します(ログ記録、スクリーンショットなど)
フィクスチャオプションtest.extend() の { option: true }config または test.use() で設定できます
データ駆動テストtest() 呼び出しを生成する for...of ループ配列または CSV ファイルからパラメーター化されたテストを作成します
コンテキストのエミュレーションbrowser.newContext() のオプションlocale、timezone、colorScheme、offline、isMobile
1 つのテストで 2 つのロール並行する browser.newContext() 呼び出しコンテキストごとに storageState を分けます

よくある間違い

間違い正しいパターン
要素の表示確認に page.waitForTimeout() を使う自動で待機する expect(element).toBeVisible() などの Web ファーストアサーションを使う
テストファイルにロケーターを直接記述するすべてのセレクターを Page Object Model クラスにカプセル化する
サードパーティ API(Stripe、Auth0)を直接テストするpage.route() で外部サービスをモックし、安定した高速なテストを実現する
トレースの代わりにスクリーンショットで CI の失敗をデバッグするtrace: 'on-first-retry' を設定し、Playwright Trace Viewer を使う
グローバル変数を使ってテスト間で状態を共有する完全に分離するため、テストごとに新しい BrowserContext を使う
すべてのテストを 1 つの CI ジョブで実行するPlaywright のシャーディング(--shard=1/N)を使って複数のマシンで並列実行する
要素の特定に CSS/XPath セレクターを使うリファクタリング後も機能し、アクセシビリティを確保できるロールベースのロケーターを使う
すべてのテストで UI からログインするsetup プロジェクトで storageState を使い、一度だけ認証する
axe-playwright の injectAxe/checkA11y を使う@axe-core/playwright の AxeBuilder で .analyze() を使う
storageState の JSON ファイルを git にコミットする.gitignore に playwright/.auth/ を追加する
サインアウトのテストで storageState に頼るサインアウトするとサーバーセッションが無効になるため、各サインアウトテストで UI からサインインする
storageState が sessionStorage を保持すると想定する保存されるのは Cookie と localStorage のみです。sessionStorage には addInitScript() を使います
ロケール/通貨ごとにテストコードを重複させるプロジェクトごとの設定オーバーライドとフィクスチャオプション({ option: true })を使う
3 つ以上のモジュールで mergeTests() を使わずにフィクスチャを作成するmergeTests() でフィクスチャファイルを合成し、単一の test エクスポートにまとめる

委任

  • E2E カバレッジが不足しているユーザーフローを見つける:Explore エージェントを使います
  • アプリケーション向けに完全な Page Object Model テストスイートを構築する:Task エージェントを使います
  • 大規模なテストスイートの CI シャーディング戦略を計画する:Plan エージェントを使います

Playwright API の詳細、ブラウザー自動化、スクレイピング、ステルスモード、スクリーンショット/PDF、Docker へのデプロイ、または Playwright エラーのトラブルシューティングには、playwright スキルを使ってください。

参考資料

コメント