取り組みの背景
Antigravity の Browser Sub-Agent は、単なる「テストツール」ではありません。Gemini 3.1 Pro のマルチモーダル視覚能力を搭載したブラウザ自動化エンジンであり、人間がブラウザを操作するのとほぼ同じ方法でアプリケーションを「見て・判断して・操作する」ことができます。
これが従来の Playwright/Selenium と根本的に異なる点です。スクリプトベースのテストは「何をクリックするか」をコードで指定しますが、Browser Sub-Agent は「ボタンが正しく表示されているか」「レイアウトが崩れていないか」を視覚的に評価し、動的な判断を行います。
ここで扱うのは以下の実践的な内容をカバーします:
- Browser Sub-Agent のアーキテクチャと動作原理
- E2E テスト自動化のステップバイステップ実装
- ビジュアルリグレッションテストの構築
- GitHub Actions を使った CI/CD パイプライン統合
- プロダクション環境でのパフォーマンス最適化
- よくあるエラーとトラブルシューティング
対象読者: Antigravity の基本操作に慣れており、テスト自動化・CI/CD の知識を持つ中〜上級者向けです。
前提知識・環境構築
必要なもの
- Antigravity v1.18.0 以降(Browser Sub-Agent は v1.18 で GA)
- Node.js 20.x 以上
- 対象アプリのリポジトリ(Next.js/React/Vue など)
- GitHub Actions を使える環境(CI/CD 統合を行う場合)
Antigravity のバージョン確認
# Antigravity のバージョン確認(ターミナルから)
antigravity --version
# 出力例: Antigravity 1.20.3 (stable)プロジェクト初期設定
Browser Sub-Agent を有効化するには、プロジェクトルートに AGENTS.md(または GEMINI.md)を作成し、ブラウザ操作の権限とベースURLを宣言します。v1.20.3 から AGENTS.md が正式サポートされましました。
<!-- AGENTS.md -->
# Project Agent Configuration
## Browser Sub-Agent
- base_url: http://localhost:3000
- headless: true
- viewport: { width: 1280, height: 720 }
- screenshot_on_failure: true
- max_actions_per_session: 50
## Test Artifacts
- Save screenshots to: .agent-artifacts/screenshots/
- Save diffs to: .agent-artifacts/diffs/
- Report format: markdown
## Permissions
- Allow: navigate, click, fill, screenshot, scroll
- Require confirmation: file_download, form_submit_external.gitignore への追加
# .gitignore
.agent-artifacts/screenshots/
.agent-artifacts/diffs/
.agent-artifacts/cache/Browser Sub-Agent のアーキテクチャと設計思想
三層構造の理解
Antigravity の Browser Sub-Agent は、Gemini 3.1 Pro の視覚理解能力を活用して以下の三層で動作します:
┌─────────────────────────────────────────┐
│ Layer 1: Directive(指示層) │
│ 開発者が自然言語で目標を記述 │
│ "ログインフローが正しく動くか確認して" │
├─────────────────────────────────────────┤
│ Layer 2: Perception(知覚層) │
│ Gemini Vision がスクリーンショットを │
│ 解析し、UI 要素・レイアウトを認識 │
├─────────────────────────────────────────┤
│ Layer 3: Action(実行層) │
│ Chromium WebDriver を通じて │
│ クリック・入力・ナビゲートを実行 │
└─────────────────────────────────────────┘
従来のスクリプトテストが「DOM セレクター」に依存するのに対し、Browser Sub-Agent は 視覚的・セマンティックな理解に基づいて動作します。これにより、クラス名が変わってもテストが壊れにくくなります。
Agent Manager との連携
Browser Sub-Agent は、Agent Manager の管理下で動作します。バックグラウンドで非同期実行されるため、コードを書きながら別エージェントがテストを並行実行することが可能です。
ステップバイステップ実装
Step 1: 基本的な E2E テストの作成
まずは最もシンプルな E2E テストを実装します。プロジェクトに e2e/ ディレクトリを作成し、テスト仕様を自然言語で記述したファイルを用意します。
<!-- e2e/auth-flow.agent.md -->
# Authentication Flow E2E Test
## Objective
ユーザーの登録・ログイン・ログアウトフローが正常に動作することを確認する。
## Test Cases
### TC-001: 新規ユーザー登録
1. http://localhost:3000/register にアクセス
2. メールアドレス "test+{timestamp}@example.com" を入力
3. パスワード "SecurePass123!" を入力
4. 「登録する」ボタンをクリック
5. ダッシュボード画面にリダイレクトされることを確認
6. ヘッダーにユーザー名が表示されることを確認
### TC-002: ログイン
1. http://localhost:3000/login にアクセス
2. 上記のメールとパスワードでログイン
3. 「ようこそ」メッセージが表示されることを確認
### TC-003: ログアウト
1. ヘッダーのアバターをクリック
2. 「ログアウト」を選択
3. ログインページにリダイレクトされることを確認
## Pass Criteria
- 各ステップでエラーが表示されない
- リダイレクトが 3 秒以内に完了する
- スクリーンショットに UI 崩れがないStep 2: Agent にテスト実行を依頼
Antigravity の Agent チャット(Editor View のサイドバー)に以下のように入力します:
@browser e2e/auth-flow.agent.md のテストを実行して。
開発サーバーを起動してから実行すること。
スクリーンショットを .agent-artifacts/screenshots/ に保存して。
エージェントは自動的に:
npm run devで開発サーバーを起動- 各テストケースを順番に実行
- 各ステップのスクリーンショットを保存
- Artifact としてテスト結果レポートを生成
Step 3: 構造化テストファイルによる高精度テスト
より複雑なフローには、構造化 YAML 形式のテスト仕様が効果的です:
# e2e/checkout-flow.agent.yaml
name: "Checkout Flow E2E"
base_url: "http://localhost:3000"
timeout_seconds: 60
retry_on_failure: 2
setup:
- action: navigate
url: "/login"
- action: fill
selector_hint: "メールアドレス入力欄"
value: "buyer@example.com"
- action: fill
selector_hint: "パスワード入力欄"
value: "TestPass123!"
- action: click
selector_hint: "ログインボタン"
- action: wait_for
condition: "URL が /dashboard を含む"
tests:
- name: "商品をカートに追加"
steps:
- action: navigate
url: "/products/premium-widget"
- action: screenshot
name: "product-page"
- action: click
selector_hint: "カートに追加ボタン"
- action: assert
condition: "カートアイコンのバッジが 1 を表示している"
screenshot: "cart-badge-check"
- name: "チェックアウト完了"
steps:
- action: navigate
url: "/cart"
- action: click
selector_hint: "購入手続きへ進むボタン"
- action: fill
selector_hint: "クレジットカード番号"
value: "4242 4242 4242 4242"
- action: fill
selector_hint: "有効期限"
value: "12/28"
- action: fill
selector_hint: "CVV"
value: "123"
- action: click
selector_hint: "注文確定ボタン"
- action: assert
condition: "注文完了メッセージが表示されている"
screenshot: "order-complete"
teardown:
- action: navigate
url: "/account/orders"
- action: screenshot
name: "order-history"ビジュアルリグレッションテストの構築
E2E テストの中でも特に強力なのが、ビジュアルリグレッションテストです。UI コンポーネントの見た目が変わっていないかを自動検出します。
Step 1: ベースラインスクリーンショットの作成
<!-- e2e/visual-baseline.agent.md -->
# Visual Baseline Capture
## 目的
主要ページのベースラインスクリーンショットを取得する。
## キャプチャ対象
- /(ホーム)- デスクトップ・モバイル両方
- /pricing(料金ページ)
- /dashboard(ログイン後)
- /settings(設定ページ)
## 保存先
.agent-artifacts/baseline/
## 注意事項
- 動的コンテンツ(日時・ランダム要素)はマスクすること
- スクロール可能なページは full-page スクリーンショットで保存Agent への指示:
@browser e2e/visual-baseline.agent.md を実行して
ベースラインを .agent-artifacts/baseline/ に保存して
ファイル名は {page-name}-{viewport}.png の形式で
Step 2: リグレッションチェックの実行
ベースラインが作成された後、変更を加えるたびに以下を実行します:
@browser ビジュアルリグレッションチェックを実行して。
.agent-artifacts/baseline/ のスクリーンショットと現在の状態を比較して。
差分が 2% を超えるページを報告して。
差分画像を .agent-artifacts/diffs/ に保存して。
エージェントは Gemini Vision を使って各ページを再スクリーンショットし、ベースラインとピクセル比較・セマンティック比較の両方を実施します。
Step 3: レポート生成
<!-- e2e/generate-report.agent.md -->
# Visual Regression Report Generator
## 入力
- ベースライン: .agent-artifacts/baseline/
- 現在のスクリーンショット: .agent-artifacts/current/
- 差分画像: .agent-artifacts/diffs/
## 出力
.agent-artifacts/visual-regression-report.md に以下を含めてレポートを生成:
- 変更されたページの一覧
- 各ページの変更率(%)
- 差分画像へのリンク
- Pass/Fail 判定(閾値: 2%)
- 変更の原因分析(レイアウト崩れ?意図的な変更?)CI/CD パイプラインへの統合
GitHub Actions 設定
Browser Sub-Agent を CI に統合するには、Antigravity CLI を使った自動実行モードを活用します。
# .github/workflows/e2e-tests.yml
name: E2E Tests with Antigravity Browser Agent
on:
pull_request:
branches: [main, develop]
push:
branches: [main]
jobs:
e2e-test:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Start application
run: npm run start &
env:
PORT: 3000
NODE_ENV: test
- name: Wait for server
run: npx wait-on http://localhost:3000 --timeout 30000
- name: Install Antigravity CLI
run: npm install -g @google/antigravity-cli
- name: Run E2E tests via Browser Agent
run: |
antigravity agent run \
--task "e2e/auth-flow.agent.md のすべてのテストを実行して。失敗したら詳細なエラーレポートを生成して" \
--output .agent-artifacts/ci-report.md \
--timeout 1200 \
--headless true
env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
ANTIGRAVITY_TOKEN: ${{ secrets.ANTIGRAVITY_TOKEN }}
- name: Run Visual Regression Tests
run: |
antigravity agent run \
--task "ビジュアルリグレッションチェックを実行して。差分が 2% を超えるページをリストアップして" \
--output .agent-artifacts/visual-report.md \
--timeout 600 \
--headless true
env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
ANTIGRAVITY_TOKEN: ${{ secrets.ANTIGRAVITY_TOKEN }}
- name: Upload test artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-artifacts-${{ github.sha }}
path: .agent-artifacts/
retention-days: 14
- name: Comment PR with test results
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const report = fs.readFileSync('.agent-artifacts/ci-report.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## 🤖 E2E Test Results\n\n${report}`
});Secrets の設定
GitHub リポジトリの Settings → Secrets and variables → Actions に以下を追加します:
GEMINI_API_KEY=your-gemini-api-key
ANTIGRAVITY_TOKEN=your-antigravity-token
応用パターン:マルチエージェント並列テスト
Advanced Multi-Agent Orchestration の手法を応用し、複数のブラウザエージェントを並列実行することでテスト時間を大幅に短縮できます。
<!-- e2e/parallel-test-orchestration.agent.md -->
# Parallel E2E Test Orchestration
## 並列実行計画
Agent Manager を使って以下を同時実行する:
### Agent A: 認証フロー
- e2e/auth-flow.agent.md を実行
- ポート: 3000
### Agent B: EC フロー
- e2e/checkout-flow.agent.yaml を実行
- ポート: 3001(別インスタンス)
### Agent C: ビジュアルリグレッション
- e2e/visual-baseline.agent.md を実行
- ポート: 3002(別インスタンス)
## 同期ポイント
全エージェントの完了後に consolidated-report.md を生成する。
いずれかが失敗した場合は全エージェントの実行結果を含めてレポート。Manager Surface への指示:
@manager e2e/parallel-test-orchestration.agent.md を実行して。
3 つのエージェントを並列起動して、全完了後に統合レポートを生成して。
詳細な Manager Surface の使い方は Manager Surface Guide を参照してください。
よくあるエラーと対処法
エラー 1: Browser Sub-Agent: Navigation timeout
原因: アプリの起動が遅い、またはネットワークが不安定 対処:
<!-- AGENTS.md に追記 -->
## Browser Sub-Agent
- page_load_timeout: 30000 # デフォルト 10000 から延長
- action_timeout: 15000
- retry_on_timeout: 3エラー 2: Gemini Vision: Element not found
原因: Gemini が UI 要素を認識できない(低コントラスト、動的ローディング等) 対処: より具体的なセマンティックヒントを指定します。
# 曖昧な指定(NG)
- action: click
selector_hint: "ボタン"
# 具体的な指定(OK)
- action: click
selector_hint: "青い「カートに追加」と書かれたプライマリボタン"
wait_for_stable: true # アニメーション完了を待つエラー 3: Rate limit exceeded / クォータエラー
Browser Sub-Agent は Gemini API を大量消費します。長時間テストではクォータを使い切ることがあります。
# AGENTS.md でスクリーンショット頻度を制限
## Browser Sub-Agent
- screenshot_frequency: "on_failure_only" # 失敗時のみ撮影
- max_vision_calls_per_session: 100
- compress_screenshots: true # 画像圧縮で API コスト削減エラー 4: Headless mode: CSS not rendering
原因: フォントや CSS アニメーションがヘッドレスモードで正しく動作しない 対処:
## Browser Sub-Agent
- headless: false # 問題の切り分け時は headed モードで確認
- disable_animations: true # アニメーションを無効化
- font_rendering: "force-color-profile"パフォーマンス考慮事項
ビジョン API コストの最適化
Browser Sub-Agent の最大のコスト要因は Gemini Vision API の呼び出し数です。以下の戦略でコストを削減できます:
| 戦略 | 効果 | 設定 |
|---|---|---|
| スクリーンショット圧縮 | API コスト 40〜60% 削減 | compress_screenshots: true |
| 失敗時のみ撮影 | 呼び出し数 70% 削減 | screenshot_frequency: on_failure_only |
| ビューポート縮小 | 画像サイズ縮小 | viewport: {width: 1024, height: 768} |
| キャッシュ活用 | 同一ページの再スキャン不要 | cache_dom_snapshot: true |
テスト並列化による時間短縮
シーケンシャル実行と並列実行のコスト比較:
シーケンシャル(5テスト × 2分)= 10分
並列(5テスト ÷ 3エージェント)= 約 3分 20秒(67% 短縮)
ローカルキャッシュの活用
## AGENTS.md
## Browser Sub-Agent
- dom_cache_ttl: 300 # DOM スナップショットを 5 分キャッシュ
- asset_cache: true # 静的アセットをキャッシュ
- reuse_browser_context: true # セッション間でコンテキストを再利用個人開発者の視点から(実体験メモ)
まとめ
Antigravity Browser Sub-Agent は、従来のテスト自動化の概念を根本から変えるツールです。セレクターを書く必要がなく、Gemini の視覚能力によって人間のテスターに近い精度でアプリを検証できます。
今日から始められるアクションは 3 つです:
- AGENTS.md を作成して Browser Sub-Agent を有効化する
- 1 つの E2E テスト仕様(auth-flow.agent.md)を書いて動作確認する
- GitHub Actions に統合して PR のたびに自動テストを実行する
多エージェント並列テストの詳細については Advanced Multi-Agent Orchestration を、テスト自動化と Playwright MCP の組み合わせについては Playwright MCP と Antigravity の統合 を参照してください。