| name | automatic-e2e |
| description | Web アプリの E2E テストを「計画 → 実行 → エビデンス保存 → 後始末」まで自律的に進めるための skill。グローバルの agent-browser CLI を headless で使い、quality-mind の共通品質観点(正常系、境界値、ドメイン外値、悪意ある異常系、状態整合性、リグレッション)に沿ってブラウザ操作と検証を行い、確認結果をスクリーンショットとして ./tmp/e2e/ 配下にエビデンスとして残す。認証が必要なアプリの動作確認、フォーム投入・バリデーションの検証、リリース前の通し確認をするときに使う。単体テストや read-only のコード調査だけで完結するとき、ブラウザ操作を伴わないときは使わない。 |
| allowed-tools | Bash(*) |
目的
Web アプリの E2E テストを、再現可能・エビデンス付きの形で一貫して実施するための workflow。
ブラウザ操作はグローバルの agent-browser CLI を使い、テスト計画・認証情報・スクリーンショットは ./tmp/e2e/ のブランチ領域に残す。次回以降も変わらない知見(認証情報の所在、対象 URL、観点の学び)は memory(MEMORY.md)にも適宜記載して再利用する。
使うとき
- 認証が必要なアプリで、正常ルートが期待どおり動くかを確認するとき
- フォーム投入・入力バリデーション・動作機序を検証するとき
- セキュリティ・不正入力など異常系の挙動を確認するとき
- 変更後にリグレッション(既存機能の破壊)が起きていないか通しで確認するとき
使わないとき
- 単体テストやコード調査だけで完結するとき
- ブラウザ操作を伴わない確認のとき
前提
- E2E テストは必ずグローバルの
agent-browser CLI を使う(agent-browser / npx agent-browser)。これは invoke できる skill ではなくコマンドラインツール。コマンド一覧は agent-browser --help か .agents/skills/agent-browser/SKILL.md を参照する。
- 必ず headless で起動する。
agent-browser はデフォルト headless だが、環境変数 AGENT_BROWSER_HEADED や config の "headed": true で headed になり得る。GUI ウィンドウが立ち上がってユーザーの作業を妨げないよう、起動コマンドに必ず --headed false を明示し、AGENT_BROWSER_HEADED を設定しない。
- 成果物はプロジェクトの
./tmp/e2e/<branch>/ 配下に置く。ブランチslug等の特定は同梱スクリプトが行う。
- E2E の品質観点は
quality-mind を正とする。自動で併用されていない場合は .agents/skills/quality-mind/SKILL.md または .agents/.private/quality-mind/SKILL.md を読み、共通観点をテスト計画へ反映する。
クイックスタート
この skill ディレクトリ内の scripts/ を使う(パスはこの skill からの相対)。
eval "$(bash scripts/init-e2e.sh | grep -E '^(EVIDENCE_DIR|HOW_TO_FILE)=')"
bash scripts/ab.sh --session e2e-normal open https://app.example.com
bash scripts/ab.sh --session e2e-normal screenshot --screenshot-dir "$EVIDENCE_DIR"
bash scripts/finish-e2e.sh
同梱スクリプト:
scripts/init-e2e.sh — ブランチ領域を初期化。HOW_TO_E2E_TEST.md を seed し、エビデンスdir を毎回リセットする(回し直し=1から取り直しを自動担保)。
scripts/ab.sh — agent-browser の headless 強制ラッパー。AGENT_BROWSER_HEADED を unset し --headed false を必ず注入するので、GUI ウィンドウが立ち上がらない。ブラウザ操作は必ずこれ経由で行う。
scripts/finish-e2e.sh — 全セッションを閉じ、残プロセスを確認する。
1. テスト前の準備
1-1. 認証情報を確保する
- ユーザーから認証情報が伝えられているか確認する。
- 無ければリポジトリ内(
.env、設定ファイル、docs 等)を探す。
- それでも見つからなければ、テストを開始する前にユーザーへヒアリングする。
確保した認証情報は次回ヒアリング不要にするため HOW_TO_E2E_TEST.md(後述)に記録する。
1-2. テスト計画を立てる
確認すべき仕様を事前に洗い出し、quality-mind の共通観点を E2E で確認可能な操作に落とす。
- 正常系、境界値、ドメイン外値、悪意ある異常系、状態整合性、リグレッションを含める。
- UI 操作だけでなく、可能なら API response、cookie、localStorage、sessionStorage、ローカル DB の値まで確認する。
- E2E では拾えない unit / integration レベルの観点があれば、未検証リスクとして明示する。
i18n がある場合は言語の両軸で確認する
リポジトリに言語設定(i18n 等)の仕組みがある場合は、日本語と別の言語(デフォルトは英語)の両軸で確認する。
- 各言語で
quality-mind の共通観点を実施する。
- 言語切り替えで文言・レイアウト・バリデーションメッセージが正しく出るかを確認する。
1-3. 計画を記録する
- テスト計画を
./tmp/e2e/<branch>/HOW_TO_E2E_TEST.md にまとめ、次回から参照できるようにする。
- 認証情報・対象 URL・前提条件・各観点の確認項目を含める。ユーザーが探す手間を省くことが目的。
- 認証情報の所在・対象 URL・起動手順など次回以降も変わらない知見は、memory(MEMORY.md)にも適宜記載し、
./tmp/ が消えても復元できるようにする。
2. テスト実行
2-1. agent-browser を headless で起動する
- ブラウザ操作は必ず
scripts/ab.sh 経由で実行する。--headed false が常に注入され、GUI ウィンドウが立ち上がらない。素の agent-browser を直接叩かない。
- 並列で複数観点を回す場合は、観点ごとに
--session <name>(例: --session e2e-normal)でセッションを分け、プロセス・状態を独立させる。
2-2. docker logs を確認する(Docker 構成のリポジトリの場合)
ユーザーから特段の指示がなければ、各ステップごとに docker logs を確認する。
- 関係がありそうなエラー → その場で修復する(ユーザーへの事前確認が不要な範囲で)。
- 関係なさそうなエラー → 収集しておき、最後にまとめてユーザーへ報告する。
2-3. ブラウザのエラーを必ず確認する
各操作のあとにブラウザ側のエラーを必ず確認する。
agent-browser errors でページエラー、agent-browser console でコンソールメッセージを確認する。
- 関係がありそうなエラー → 修復する。
- 関係なさそうなエラー → 収集しておき、最後にユーザーへ報告する。
2-4. 状態整合性を確認する
E2E 操作後、確認可能な範囲で quality-mind の状態整合性観点を確認する。
- ローカル DB を参照できる場合は、関連テーブル、履歴、集計、監査ログ、削除状態、権限状態が期待どおりか確認する。
- API response、status code、headers、権限外フィールドの有無を確認する。
- cookie、localStorage、sessionStorage の値、期限、ログアウト後の消去、権限変更後の更新を確認する。
- UI 表示と DB/API/クライアント状態が食い違っていないか確認する。
2-5. スクリーンショットでエビデンスを残す
仕様に関連する箇所・異常系・状態整合性・リグレッションの確認では、必ずスクリーンショットを撮ってエビデンスとして格納する。
- 保存先は
init-e2e.sh が用意・リセットした e2e-evidence/。パスは手で <branch> を埋めず、init-e2e.sh が出力する EVIDENCE_DIR(クイックスタート参照)をそのまま使う。
例: bash scripts/ab.sh --session e2e-normal screenshot --screenshot-dir "$EVIDENCE_DIR"
- スクリーンショットを撮る際は、対象箇所が確実に見えるように事前にスクロールするか、必要に応じてウィンドウ幅を広げてから撮影する。
- ファイル名は観点・ケースが分かる形にする(例:
normal_login_ok.png、abnormal_invalid_email.png、regression_dashboard.png。i18n がある場合は言語も含める: en_normal_login_ok.png)。
- E2E を回し直すときの「1 からの取り直し」は
init-e2e.sh がエビデンスdir のリセットで自動的に担保する。 手動でスクショを消す必要はないが、過去実行のスクショを残したまま混在させないこと。
2-6. 複数観点は子エージェントに分散する
複数観点を並行してテストする場合は、観点ごとに子エージェントへ割り振る。
- 各子エージェントは
--session <name> で独立した agent-browser セッションを使い、プロセスを共有しない。
- 観点が多い場合は、正常系、境界値・ドメイン外値、悪意ある異常系、状態整合性、リグレッションなどに分担する。
- 各子エージェントも本 skill のルール(headless 起動・エラー確認・エビデンス保存)に従う。
3. テスト後の後始末
- 起動した agent-browser のセッション/プロセスを必ず終了させる。
scripts/finish-e2e.sh を実行して全セッションを閉じ、残プロセスがないことを確認する。
- 収集した「関係なさそうなエラー」を docker・ブラウザ分まとめてユーザーへ報告する。
- エビデンス(スクリーンショット)と
HOW_TO_E2E_TEST.md が ./tmp/e2e/<branch>/ に揃っていることを確認し、次回以降に再利用すべき知見があれば memory を更新する。