关于 e2etest
面向编码 Agent 的 E2E 测试指南,说明何时编写测试、优先使用 agent-browser,以及何时回退到 Playwright。它还要求使用明确的等待条件,并在提交前检查测试可靠性。
主要功能
- 01按改动范围判断是否编写 E2E 测试
- 02优先使用 agent-browser
- 03限定 Playwright 的回退场景
- 04使用明确条件等待
- 05提交前检查测试可靠性
适用场景
- 01验证新增的用户主要流程
- 02检查重要 UI 或流程成功条件变更
- 03为特殊交互选择 Playwright 并记录原因
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ philtzjp/ skills --skill e2etest安装后在 Claude Code 中输入/e2etest确认已加载。
详细介绍
来自项目 READMEe2etest
書くかどうか
次のいずれかに当てはまるなら、E2E テストを作成して実行する。
- 新しいユーザー向けの主要フローを追加した。
- 重要な UI を変更した。
- 既存フローの成功条件を変更した。
次には作らない。
- 純粋なバックエンドや API だけの変更。
- ドキュメントだけの変更。
- 設定や依存関係の更新。
- 動作が変わらないリファクタリング。
既存の管理画面に小さな設定項目を足しただけで、主要フローの成功条件が変わらないなら、agent-browser で手動検証する。リスクがある場合だけテストを作る。
ツールの選択
主に agent-browser を使う。Rust 製の CLI で、出力が簡潔で、ref ベースのスナップショット(要素に @e1 のような識別子が付く)で要素を指せる。
- サイト https://agent-browser.dev/
- クイックスタート https://agent-browser.dev/quick-start
- コマンド一覧 https://agent-browser.dev/commands
- スナップショット https://agent-browser.dev/snapshots
- セレクタ https://agent-browser.dev/selectors
- ネットワーク https://agent-browser.dev/network
- デバッグ https://agent-browser.dev/debugging
- CDP モード https://agent-browser.dev/cdp-mode
- WebMCP https://agent-browser.dev/webmcp
- 変更履歴 https://agent-browser.dev/changelog
- リポジトリとリリース https://github.com/vercel-labs/agent-browser/releases
更新が速い。コマンドやオプションの形に迷ったら記憶で書かず、コマンド一覧と変更履歴を引く。
agent-browser open example.com
agent-browser snapshot -i
agent-browser click @e2
agent-browser screenshot page.png
Playwright へのフォールバック
agent-browser で対応できないインタラクションに限る。
- キャンバス操作。
- 細かいマウス操作。
- タッチジェスチャー。
- ネットワーク傍受。
- 複数ページやクロスオリジンのフロー。
- WebSocket や SSE のアサーション。
フォールバックしたら、agent-browser で対応できなかった理由をテストファイルに書く。後から読む人が、単なる手癖なのか必然だったのかを判断できるようにする。
agent-browser で対応できるインタラクションに Playwright を使わない。
待機
sleep によるタイミング依存のテストを作らない。明示的な待機条件を使う。
- 要素の出現、消滅、テキストの変化を待つ。
- ネットワークの完了やレスポンスを待つ。
- 固定の秒数で「だいたい終わっているはず」を前提にしない。CI では遅くなり、ローカルでは速すぎる。
不安定なテストを sleep を伸ばして黙らせない。待つべき条件を特定して書き直す。
確定前に確認する
- 変更が主要フローや成功条件に触れているか。触れているならテストがあるか。
- agent-browser で書けるものを Playwright で書いていないか。
- Playwright を使ったなら、理由をテストファイルに書いたか。
sleepが残っていないか。待機が明示的な条件になっているか。- テストが CI で通るか。ローカルでしか通らない前提を持ち込んでいないか。
评论
支持 Markdown