セマンティックHTML/JSXとWAI-ARIAを「最小で正しく」適用し、キーボード操作・スクリーンリーダ・コントラスト等を満たす実装を作るための判断軸。ネイティブ要素優先、ARIAの過剰使用を避ける。
agent-browser
Agent Browser(Headlessブラウザ自動化CLI)を使ったUI検証・E2Eテスト・スクリーンショット取得の判断軸。アクセシビリティツリーベースの要素選択を優先し、壊れにくいテスト設計を目指す。
含まれるファイル(1)
- SKILL.md5.9 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Agent Browser Skill
参照(公式)
- GitHub
- インストール:
npm install -g agent-browser && agent-browser install
発火条件
doc/input/rdd.mdにAgent BrowserやE2EテストUI検証が記載されている場合、このSkillの方針をデフォルト採用する。- 記載がなくても、ユーザーの依頼がブラウザ自動化/UI確認/スクリーンショット比較/E2Eテストに該当するなら適用する。
このSkillの基本方針
- 基本方針: AIエージェント向けHeadlessブラウザCLI。UI検証・E2Eテスト・視覚的確認に使う。
- 要素選択: アクセシビリティツリー(
@e1等)やセマンティックロケータ(role/label)を優先。CSSセレクタは最終手段。 - テスト設計: 壊れにくいテストを書く。実装詳細(class名/id)に依存しない。
- パフォーマンス: グローバルインストール(
npm i -g)を推奨。npx経由はNode.jsフォールバックで遅い。
思想(判断ルール)
- アクセシビリティファースト: 要素はrole/label/textで特定する。CSSセレクタ依存はリファクタに弱い。
- 最小スコープ: テストはユーザー操作単位で小さく。ページ全体の網羅より重要フローの確認を優先。
- スクリーンショットは証拠: 視覚的な確認が必要な場面では積極的に撮る。差分検証でリグレッションを防ぐ。
- 待機は明示的に: 暗黙の
sleepを避け、要素の出現/状態変化を待つ。
主要コマンド(よく使うもの)
ページ操作
agent-browser open <url> # ページを開く
agent-browser goto <url> # 別URLへ遷移
agent-browser screenshot [file] # スクリーンショット取得
agent-browser pdf [file] # PDF保存
要素操作
agent-browser click <selector> # クリック
agent-browser fill <selector> <text> # 入力欄にテキスト入力
agent-browser press <key> # キー押下(Enter等)
agent-browser scroll <direction> # スクロール
要素選択の優先順位
# 1. セマンティックロケータ(推奨)
agent-browser click "role=button[name='Submit']"
agent-browser fill "role=textbox[name='Email']" "test@example.com"
# 2. アクセシビリティツリー参照
agent-browser click @e1 # ツリー上のID
# 3. テキストマッチ
agent-browser click "text=ログイン"
# 4. CSSセレクタ(最終手段)
agent-browser click "#submit-btn"
情報取得
agent-browser text [selector] # テキスト取得
agent-browser title # ページタイトル
agent-browser url # 現在のURL
agent-browser count <selector> # 要素数
デバイス・環境設定
agent-browser --viewport 375x812 # モバイルビューポート
agent-browser --device "iPhone 15" # デバイスエミュレーション
agent-browser --color-scheme dark # ダークモード
dev限定E2Eフックの標準装備
ゲーム/アニメーション系など「発生タイミングが不確定」な演出は、devビルド限定でwindowフックを装備すると検証が安定する:
- 決定的シード: URLパラメータで乱数シードを指定できるようにする(範囲外はフォールバック)
- pause/resume: 演出の任意の瞬間を凍結してスクリーンショット検証できるようにする
- fps計測:
startFps/endFps等でrAFのdtを収集し、純粋関数で平均/最低fpsを算出する
狙い: 「発生を待って撮る」のではなく「決定的に発生させ、凍結して撮る」。非機能要件(fps下限)もE2Eで実測アサートできる。
出力フォーマット(必ずこの順)
- 推奨方針(1〜3行)
- 理由(テスト安定性 / 保守性 / ユーザー視点)
- 設計案(テスト対象フロー / 要素選択戦略 / スクリーンショット計画 / 環境設定)
- チェックリスト(実装前に確認)
- 落とし穴(避けるべき)
- 次アクション(小さく試す順)
チェックリスト
-
agent-browserがグローバルインストール済みか(agent-browser --version) - Chromiumがインストール済みか(
agent-browser install) - 要素選択はアクセシビリティベースか(CSSセレクタに逃げていないか)
- テストはユーザー操作の単位で分割されているか
- 暗黙の
sleepではなく明示的な待機条件を使っているか - スクリーンショットの保存先・命名規則は決まっているか
よくある落とし穴
npx agent-browserで毎回起動すると遅い(グローバルインストール推奨)- CSSクラス名に依存したセレクタがリファクタで全壊する
sleep(3000)のような固定待機はCI環境で不安定になる- スクリーンショット差分がフォントレンダリングの差で誤検知する(閾値設定が必要)
- Headless環境でのビューポートサイズ未指定でレイアウトが実機と異なる
agent-browser evalはCLI側で結果をJSONエンコードして返す。ページ内スクリプトでJSON.stringifyして返すと二重エンコードになり、受け側のJSON.parse一回では文字列のままでプロパティ参照が全部undefinedになる(無言で壊れる)。ページ側は素のオブジェクトを返すこと
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
ディズニーの12原則とジブリ的自然運動をベースに、UIアニメーションの「なぜ動かすか」「どう動かすか」を判断する。アニメーション/モーション/トランジション設計の相談で、ツール非依存の概念的判断軸として使う。
アーキテクチャ設計(境界/依存/データフロー/非機能/運用)を、制約とトレードオフで言語化し、ADR-liteで合意形成しながら段階的に形にする。doc/input/rdd.md にアーキテクチャ/非機能/運用の要求がある、または設計判断(分割/責務/インタフェース/データ整合/観測性/スケール)相談で使う。
事業仮説を支える一次/二次情報を整理し、意思決定に足る「根拠」「不確実性」「次の調査」を可視化する。でたらめな引用や推測の断言を避け、出典の実在を重視する。
体験品質(動き/触感/視線誘導)を「実装可能な制約」に落とし、アクセシビリティとパフォーマンスを犠牲にせずに表現を実現する。UIの表現・アニメーション・インタラクション設計/実装の相談で使う。
設計と実装を「最小で正確」に進め、差分思考で品質と速度を両立する。設計の溶け込み(責務不明/重複/暫定対応)を防ぎ、レビュー可能な変更へ落とし込むときに使う。