| name | e2e-testing |
| description | Creates and maintains Playwright E2E tests for React SPAs. Applies when the user asks to write E2E tests, create scenario tests, automate user flows, or verify cross-feature behavior. Covers Page Object design, test data management, stability patterns, and reporting. |
E2E Testing
Playwright によるE2Eテストの実装スキル。ユーザー視点の主要シナリオを自動化し、リグレッションを防ぐ。
プロジェクト固有のシナリオ・Page Object・テストデータは docs/development-patterns.md を参照。
テスト対象の方針
E2Eテストは 画面をまたぐユーザー操作フロー を検証する。
- ✅ 対象: ページ遷移、フォーム操作→結果確認、機能間連携、データ永続化(リロード後の保持)
- ❌ 対象外: 個別バリデーションルール(単体テスト)、コンポーネント描画詳細(コンポーネントテスト)、サードパーティライブラリ内部の挙動
実装ワークフロー
- シナリオ定義 — 何を検証するか明確にする(docs/development-patterns.md のシナリオ一覧を参照)
- テストデータ準備 — ヘルパー関数でデータを注入(docs/development-patterns.md 参照)
- Page Objectで操作を記述 — テスト本体は「何を検証するか」に集中
- 実行・確認 —
npm run e2e
- レポート出力 — テストレポートをファイル出力し提示。トレース確認の操作方法・コマンドも提示
ファイル配置
e2e/
├── <feature>.spec.ts # テストファイル(機能単位)
├── fixtures/
│ └── test-data.ts # テストデータ生成ヘルパー
└── pages/
├── BasePage.ts # 共通操作(ナビゲーション、ダイアログ、トースト)
└── <Feature>Page.ts # 機能別Page Object
ロケータ戦略(優先順)
getByRole — アクセシビリティベース(最も安定)
getByLabel — フォーム要素
getByText — 表示テキスト
getByTestId — 上記で困難な場合
- CSSセレクタ — 複雑なUIコンポーネント(AG Grid等)の最終手段
安定性ルール
- Playwrightの自動待機を活用(
expect(...).toBeVisible() 等のアサーション)
waitForTimeout は禁止(フレーキーテストの原因)
- 各テストは
beforeEach でデータを初期化(テスト間の実行順序に依存しない)
- ページ遷移後は
waitForLoadState('networkidle') で安定化
Page Object 設計原則
- BasePage に共通操作(ナビゲーション、ダイアログ開閉、トースト確認)を集約
- 機能別Page は BasePage を継承し、その画面固有の操作を追加
- テスト本体からはPage Objectのメソッドのみ呼び出す(ロケータ直接操作は避ける)
テストコマンド
npm run e2e
npm run e2e:ui
npx playwright test e2e/<file>
npx playwright test --grep "<テスト名>"
npx playwright show-report
チェックリスト