ウェブ · COURSE
E2E テスト自動生成(Playwright)
ユーザーフロー説明 → 動く Playwright テストを 5 分で。
audience
ウェブ部・QA
duration
60分
lessons
5 章
reviewed
2026.05
先に読むとよい
達成目安
全 5 レッスンを読み、コース完了マークを付ける
未完了
クイズ 3 問に挑戦し、正答率 80% 以上
未挑戦
コース構成
このコースで学ぶこと
- 01
E2E テストが薄い 3 つの理由
セレクタ取得が面倒 / 壊れやすい / 何をテストすべきか曖昧。Claude Code でこの 3 つを解決。
Unit テストは増えても E2E テストが薄い、というのは多くのチームに共通する課題です。理由:(1) ボタンの正確なセレクタを書くのが面倒、(2) DOM 変更で壊れやすい、(3) 何をテストすべきか議論が分かれる。
Claude Code に『ユーザーフローを自然言語で説明』するだけで、Playwright の Page Object パターンに沿った安定したテストを生成できます。
- 02
Playwright のセットアップ
新規プロジェクトなら 1 コマンド。既存に追加する場合も簡単。
bashpnpm create playwright # できるもの # - playwright.config.ts # - tests/example.spec.ts # - npm scripts: test, test:headed, test:ui # 既存プロジェクトに追加 pnpm add -D @playwright/test pnpm exec playwright install chromium - 03
プロンプトテンプレ:フロー → テスト
ユーザー操作を自然言語で記述すると、安定した Playwright テストが生成される。
text> 以下のユーザーフローを E2E テストで実装: ## シナリオ:ユーザー登録 1. トップページにアクセス 2. 『新規登録』ボタンをクリック 3. メール入力(test+random@example.com、ランダム部分は uuid) 4. パスワード入力(Test1234! 固定) 5. 利用規約のチェックボックスをオン 6. 『登録』ボタンをクリック 7. ウェルカム画面が表示されることを確認 8. ヘッダーに登録メールアドレスが表示されることを確認 ## ルール - Page Object パターン(pages/RegisterPage.ts を作成) - セレクタは role/label/text 優先(data-testid フォールバック) - 安定性のため明示的な waitFor を使う - ランダム要素を含めて並列実行可能に - 失敗時のスクリーンショットを保存 ## 出力 - tests/register.spec.ts - pages/RegisterPage.ts出力イメージtests/register.spec.ts の冒頭import { test, expect } from "@playwright/test"; import { RegisterPage } from "./pages/RegisterPage"; test("新規登録が完了しウェルカム画面に遷移する", async ({ page }) => { const register = new RegisterPage(page); const email = `test+${crypto.randomUUID()}@example.com`; await register.goto(); await register.submit(email, "Test1234!"); await expect(page.getByText("ようこそ")).toBeVisible(); }); …(pages/RegisterPage.ts も併せて生成) - 04
壊れにくいセレクタの書き方
Claude に教えるルール:role > label > text > test-id > class の優先順。
- 🟢 `page.getByRole('button', { name: '登録' })`
- 🟢 `page.getByLabel('メールアドレス')`
- 🟢 `page.getByText('ようこそ')`
- 🟡 `page.getByTestId('register-btn')`(HTML 改造可能なら)
- 🔴 `page.locator('.btn-primary')`(CSS class、変わりやすい)
- 🔴 `page.locator('#user-form > div:nth-child(3)')`(位置依存)
- 05
Skill 化と CI 統合
新機能 PR で関連テストを自動生成 → CI で実行 → 失敗時にレポート。
手を動かす
0 / 5
理解度チェック
Q1.E2E テストが『壊れにくく』なるためのセレクタ優先順位の本質は?
Q2.AI 生成 E2E テストを CI に組み込む前に、人間が必ず確認すべきは?
Q3.E2E テスト自動生成の入力として最も適切な組合せは?