レベル4: E2Eブラウザテスト
Playwright とヘッドレスブラウザによるエンドツーエンドテスト。
レベル4がテストするもの
レベル4のテストは実際のブラウザ(またはヘッドレスブラウザ)で実行され、ページロードからインタラクションを経て最終状態に至るまでの完全なユーザーフローを検証します。シミュレートされた環境では見逃すランタイムエラー、ナビゲーションの問題、インタラクションのバグをキャッチします。
典型的な対象:
完全なユーザーワークフロー(ログイン、フォーム送信、ナビゲーション)
クライアントサイドルーティング
API連携(モックまたは実際のエンドポイント)
コンソールエラーの検出
ページ間のインタラクション
動的コンテンツの読み込み
ツール
| ツール | 役割 |
|---|---|
| Playwright | マルチブラウザ対応の完全なE2Eテストフレームワーク |
| headless-browser | ページヘルスチェック用のクイック検証スクリプト |
例: Playwright E2E
// e2e/navigation.spec.ts
import { test, expect } from "@playwright/test";
test("navigates from home to docs", async ({ page }) => {
await page.goto("/");
await page.locator('a[href="/docs"]').click();
await expect(page).toHaveURL("/docs");
await expect(page.locator("h1")).toHaveText("Documentation");
});
test("no console errors on page load", async ({ page }) => {
const errors: string[] = [];
page.on("console", (msg) => {
if (msg.type() === "error") errors.push(msg.text());
});
await page.goto("/");
expect(errors).toHaveLength(0);
});例: ヘッドレスブラウザによるクイックチェック
フルテストスイートを使わない迅速な検証には、/(英語版のスキルドキュメント: /)でスクリーンショットを撮影しエラーをチェックします。実体のスクリプトは $HOME/ にあります。
スクリーンショット付きのクイックヘルスチェック(--screenshot は値が必須です。viewport か full を指定します -- 値なしのフラグは無視されます):
node $HOME/.claude/skills/headless-browser/scripts/headless-check.js \
--url http://localhost:3000 --screenshot viewportコンソールエラーのチェック。--console-errors というフラグは存在しません -- JSON出力には常に hasErrors、console、pageErrors が含まれます。リソースのブロックはデフォルトで有効なので、正確なエラー検出には --no-block-resources を指定してください。ネットワークエラーは別の関心事です -- hasErrors はページエラーとコンソールエラーのみを反映するため、失敗したリクエストを検出するには出力の networkErrors.totalFailed/failedRequests を確認してください:
node $HOME/.claude/skills/headless-browser/scripts/headless-check.js \
--url http://localhost:3000 --no-block-resourcesコンソールエラーモニタリング
本番プロジェクトからの強力なパターン:E2Eテスト中にコンソール出力を監視して予期しないエラーをキャッチします:
// e2e/fixtures.ts
import { test as base } from "@playwright/test";
export const test = base.extend({
page: async ({ page }, use) => {
const errors: string[] = [];
page.on("console", (msg) => {
if (msg.type() === "error") {
errors.push(msg.text());
}
});
await use(page);
if (errors.length > 0) {
throw new Error(
`Console errors detected:\n${errors.join("\n")}`
);
}
},
});ブラインドスポット
Warning
レベル4のテストは実際のブラウザレンダリングとインタラクションしますが、通常は視覚的な外観ではなくDOMの状態をアサートします。以下を見逃す可能性があります:
微妙なCSSの問題(1ピクセルのズレ、色の微妙な違い)
技術的には表示されているが視覚的に重なっている要素
フォントレンダリングの違い
レスポンシブレイアウトのブレークポイント
体系的な算出スタイル検証 -- Playwrightは個々の値をアサートできますが(
expect(locator).toHaveCSS(...))、通常のE2Eスペックはスタイルではなく DOM状態をアサートします。複数ビューポート/テーマにまたがる体系的なスタイル検証はレベル5の領域です。
レベル4は「要素が存在してインタラクション可能である」ことを確認します。「要素が正しく見える」ことを確認するには、レベル5にエスカレーションしてください。
レベル4を使用するタイミング
| シナリオ | レベル4は適切か? |
|---|---|
| ページナビゲーションが壊れている | はい |
| フォーム送信が失敗する | はい |
| 動的コンテンツが読み込まれない | はい |
| ページにコンソールエラーがある | はい |
| 要素の配置が間違っている | 部分的 -- レベル5がより適切 |
| CSSの色/間隔が間違っている | いいえ -- レベル5を使用 |