browser-test について
browser-test は実際のブラウザーで UI テストを自動化するスキルです。記録したセッションを再生したりベースラインと比較したりでき、フロントエンドの検証や CI 失敗後の再実行に使えます。
主な機能
- 01再生可能なブラウザーセッションの記録
- 02ブラウザー操作の実行
- 03ページ内容と状態の検証
- 04スクリーンショットとアクセシビリティツリーの取得
- 05実行結果とベースラインの比較
- 06検出結果とセッション成果物の保存
活用シーン
- 01フロントエンド変更後の UI フローを検証
- 02実行結果をビジュアルベースラインと比較
- 03CI 失敗後に保存済みテストを再生
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill browser-testインストール後、Claude Code で/browser-testを入力して読み込まれたか確認します。
詳細
ブラウザーテスト
UI の自動テストです。一時的な実行ではなく、記録された RVF セッションコンテナを使用するようになりました。そのため、すべてのテストで再生可能な成果物が生成されます。
使用する場面
- UI の機能やユーザーフロー、またはフロントエンドの変更が実際のブラウザーで動作することを検証する場合。
- 今後のリグレッションとの比較に使用できるベースラインセッションを作成する場合。
- CI の失敗時に保存済みのテストセッションを再実行する場合(テストを作り直す必要はありません)。
手順
browser-recordを組み合わせて、テスト実行を記録します。--kind browser-sessionを指定して RVF コンテナを割り当てます。- ruvector の軌跡を開始します。
- 操作を実行します。
browser_open、browser_click、browser_fill、browser_type、browser_selectを使用します。各アクションでtrajectory-stepが出力されます。 - アサーションを行う前に、
browser_waitで要素の表示またはネットワークのアイドル状態を待ちます。 browser_get-text/browser_get-value/browser_get-title/browser_get-urlを使って検証します。検証結果は RVF コンテナ内のfindings.mdに記録されます。- 視覚的リグレッションに備え、重要な操作の前後でスクリーンショットを撮影します。ファイル名には
<step-id>.pngを使用します。 - ナビゲーションの境界でアクセシビリティツリーをスナップショットします。
- セッションを終了します。
trajectory-end --verdict pass|fail、rvf compactを実行し、AgentDB のインデックスをbrowser-sessionsに作成します。 - (任意)
--against <prior-session-id>と比較する場合:browser-screenshot-diffを呼び出して、新しい実行とベースラインを比較します。
ナビゲーション
browser_back/browser_forwardで履歴を移動しますbrowser_reloadでページを再読み込みしますbrowser_scrollで要素または座標までスクロールします
v0.1.0 からの変更点
- このスキルは、単に
browser_closeを実行して終了するのではなく、セッション終了プロトコルで終了するようになりました。 - テスト中に見つかったセレクターは
browser-selectors(host:intent)に格納されるため、次のテストでは埋め込みの類似度を使って検索できます。 - LLM 向けの要約を作成する前に、検証結果は
aidefence_is_safeを通過します。インジェクションのフラグが付いたコンテンツはfindings.mdに隔離されます。 - CI で同じスキルを使うと、
/ruflo-browser replayで再実行できる成果物が生成されるようになりました。
ヒント
- 非同期レンダリングに対応するため、アサーションの前に
browser_waitを使用します。 - 視覚的リグレッションを確認するには、親セッション ID を保存し、次回の実行で
--against <id>を指定します。 - 独自の JavaScript アサーションには
browser_evalを使用します。ただし、返された文字列をログに記録する前に、必ずaidefence_is_safeゲートでマスキングしてください。
コメント
Markdown 対応