Web アプリのテスト
すべてを見つけてテストしましょう。未テストのルートを残さないでください。
🔧 ランタイムスクリプト
自動ブラウザーテストでは、次のスクリプトを実行してください。
| スクリプト | 目的 | 使用方法 |
|---|
scripts/playwright_runner.py | 基本的なブラウザーテスト | python scripts/playwright_runner.py https://example.com |
| スクリーンショット付き | python scripts/playwright_runner.py <url> --screenshot |
| アクセシビリティチェック | python scripts/playwright_runner.py <url> --a11y |
必要なもの: pip install playwright && playwright install chromium
1. 詳細な監査のアプローチ
まずは対象の洗い出し
| 対象 | 見つけ方 |
|---|
| ルート | app/、pages/、ルーターファイルを確認 |
| API エンドポイント | HTTP メソッドを grep で検索 |
| コンポーネント | コンポーネントのディレクトリを探す |
| 機能 | ドキュメントを読む |
系統的なテスト
- マッピング - すべてのルート/API を一覧にする
- スキャン - 応答を確認する
- テスト - 重要なパスを網羅する
2. Web テストのピラミッド
/\ E2E (Few)
/ \ Critical user flows
/----\
/ \ Integration (Some)
/--------\ API, data flow
/ \
/------------\ Component (Many)
Individual UI pieces
3. E2E テストの原則
テスト対象
| 優先度 | テスト |
|---|
| 1 | 想定どおりのユーザーフロー |
| 2 | 認証フロー |
| 3 | 重要なビジネスアクション |
| 4 | エラー処理 |
E2E のベストプラクティス
| プラクティス | 理由 |
|---|
| data-testid を使う | 安定したセレクター |
| 要素を待つ | 不安定なテストを避ける |
| 状態をクリーンにする | テストを独立させる |
| 実装の詳細を避ける | ユーザーの操作をテストする |
4. Playwright の原則
基本概念
| 概念 | 用途 |
|---|
| Page Object Model | ページロジックをカプセル化する |
| フィクスチャ | 再利用可能なテストセットアップ |
| アサーション | 組み込みの自動待機 |
| Trace Viewer | 失敗のデバッグ |
設定
| 設定 | 推奨値 |
|---|
| リトライ | CI では 2 回 |
| トレース | on-first-retry |
| スクリーンショット | on-failure |
| ビデオ | retain-on-failure |
5. ビジュアルテスト
使用する場面
| シナリオ | 有効性 |
|---|
| デザインシステム | 高 |
| マーケティングページ | 高 |
| コンポーネントライブラリ | 中 |
| 動的コンテンツ | 低 |
戦略
- ベースラインのスクリーンショットを撮る
- 変更時に比較する
- ビジュアル差分を確認する
- 意図した変更を更新する
6. API テストの原則
対象範囲
| 項目 | テスト |
|---|
| ステータスコード | 200、400、404、500 |
| レスポンス形式 | スキーマと一致する |
| エラーメッセージ | ユーザーにわかりやすい |
| エッジケース | 空、大きい、特殊文字 |
7. テストの整理
ファイル構成
tests/
├── e2e/ # Full user flows
├── integration/ # API, data
├── component/ # UI units
└── fixtures/ # Shared data
命名規則
| パターン | 例 |
|---|
| 機能別 | login.spec.ts |
| 説明的 | user-can-checkout.spec.ts |
8. CI との統合
パイプラインの手順
- 依存関係をインストールする
- ブラウザーをインストールする
- テストを実行する
- アーティファクト(トレース、スクリーンショット)をアップロードする
並列化
| 戦略 | 用途 |
|---|
| ファイル単位 | Playwright のデフォルト |
| シャーディング | 大規模なテストスイート |
| ワーカー | 複数のブラウザー |
9. アンチパターン
| ❌ やってはいけないこと | ✅ 推奨すること |
|---|
| 実装をテストする | 動作をテストする |
| 待機時間をハードコードする | 自動待機を使う |
| クリーンアップを省略する | テストを分離する |
| 不安定なテストを無視する | 根本原因を修正する |
覚えておきましょう: E2E テストはコストがかかります。重要なパスにのみ使用してください。