Browser QA — 自動ビジュアルテストと操作検証
使用するタイミング
- 機能をステージング/プレビュー環境にデプロイした後
- 複数ページにわたるUIの動作を確認する必要がある場合
- リリース前にレイアウト、フォーム、インタラクションが実際に機能することを確認する
- フロントエンドコードに触れるPRをレビューするとき
- アクセシビリティ監査とレスポンシブテスト
仕組み
ブラウザ自動化MCP(claude-in-chrome、Playwright、またはPuppeteer)を使用して、実際のユーザーのようにライブページと対話します。
安全第一 — 影響範囲(デフォルトは読み取り専用で実行)
Browser QAは実際の認証と実際のユーザージャーニーを実行するため、影響範囲を明示的に扱います。 デフォルトは読み取り専用とし、本番URLに対して変更を伴うジャーニー(チェックアウト、支払い、削除、一括更新)を決して実行しないでください。明示的なオプトインとステージング/プレビューURLが必要です。シードされたテスト認証情報を使用し、実際の本番ログインは使用しないでください。スクリーンショットを保存する前に、認証情報/トークン/PIIを編集(マスク)してください。
フェーズ1: スモークテスト
1. 対象URLに移動
2. コンソールエラーを確認(ノイズをフィルタリング: アナリティクス、サードパーティ)
3. ネットワークリクエストに4xx/5xxがないことを確認
4. デスクトップ + モバイルビューポートでファーストビューをスクリーンショット
5. Core Web Vitalsを確認: LCP < 2.5秒、CLS < 0.1、INP < 200ms
(INPは2024年3月にFIDから置き換え。しきい値はweb.devを参照)
フェーズ2: インタラクションテスト
1. すべてのナビリンクをクリック — デッドリンクがないことを確認
2. 有効なデータでフォーム送信 — 成功状態を確認
3. 無効なデータでフォーム送信 — エラー状態を確認
4. 認証フローをテスト: ログイン → 保護ページ → ログアウト(テスト認証情報のみ、本番は不可)
5. 重要なユーザージャーニーをテスト(チェックアウト、オンボーディング、検索)
— デフォルトは読み取り専用。変更を伴うジャーニーは、明示的なオプトインがある場合のみ
ステージング環境で実行(上記「安全第一」を参照)
フェーズ3: ビジュアルリグレッション
1. 主要なページを3つのブレークポイント(375px、768px、1440px)でスクリーンショット
2. コミットされたベースラインのスクリーンショットと比較
— ベースラインがない場合はINCONCLUSIVEと報告し、黙ってPASSとしない
3. 5pxを超えるレイアウトシフト、要素の欠落、オーバーフローをフラグ
4. 該当する場合はダークモードを確認
フェーズ4: アクセシビリティ
1. 各ページでaxe-coreまたは同等のツールを実行
2. WCAG 2.2 AA違反をフラグ(コントラスト、ラベル、フォーカス順序)
3. キーボードナビゲーションがエンドツーエンドで機能することを確認
4. スクリーンリーダーのランドマークを確認
注: axe-coreは自動でWCAGの約30~40%をカバーします。クリーンな実行結果は必要だが十分ではないため、キーボードナビゲーション、フォーカス順序、スクリーンリーダーのパスは手動での確認が必要です。自動テストの合格だけをもって「アクセシブル」と報告しないでください。
出力形式
## QAレポート — [URL] — [タイムスタンプ]
### スモークテスト
- コンソールエラー: 重大0件、警告2件(アナリティクスノイズ)
- ネットワーク: すべて200/304、失敗なし
- Core Web Vitals: LCP 1.2秒 ✓、CLS 0.02 ✓、INP 89ms ✓
### インタラクション
- [✓] ナビリンク: 12/12 動作
- [✗] お問い合わせフォーム: 無効なメールアドレスに対するエラー状態が欠落
- [✓] 認証フロー: ログイン/ログアウト 動作
### ビジュアル
- [✗] ヒーローセクションが375pxビューポートでオーバーフロー
- [✓] ダークモード: 全ページで一貫
### アクセシビリティ
- AA違反2件: ヒーロー画像に代替テキストが欠落、フッターリンクのコントラストが低い
### 判定: 修正して出荷(問題2件、ブロッカー0件)
# 判定 ∈ 出荷 / 修正して出荷 / 出荷不可。ビジュアルベースラインがない場合はINCONCLUSIVEを使用
統合
任意のブラウザMCPと連携:
mChild__claude-in-chrome__*ツール(推奨 — 実際のChromeを使用)- Playwright 経由
mcp__browserbase__* - 直接Puppeteerスクリプト
デプロイ後の監視には /canary-watch と組み合わせて使用します。