ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-03-17上級

Antigravity Browser Sub-Agent による E2E テスト自動化

Antigravity の Browser Sub-Agent を活用した E2E テスト・ビジュアルリグレッションテスト・CI/CD 統合の完全実践ガイド。Gemini の視覚能力でブラウザ自動化を次のレベルへ引き上げる。

antigravity435browser-agent2e2e-testingvisual-regression2ci-cd15automation51agents90

取り組みの背景

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/ に保存して。

エージェントは自動的に:

  1. npm run dev で開発サーバーを起動
  2. 各テストケースを順番に実行
  3. 各ステップのスクリーンショットを保存
  4. 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 つです:

  1. AGENTS.md を作成して Browser Sub-Agent を有効化する
  2. 1 つの E2E テスト仕様(auth-flow.agent.md)を書いて動作確認する
  3. GitHub Actions に統合して PR のたびに自動テストを実行する

多エージェント並列テストの詳細については Advanced Multi-Agent Orchestration を、テスト自動化と Playwright MCP の組み合わせについては Playwright MCP と Antigravity の統合 を参照してください。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Agents & Manager2026-07-01
対話では動いたのに夜間だけ黙る——Antigravity のエージェント定義を対話と無人で同じ挙動にする
デスクトップの Antigravity では正しく動くのに、スケジュールした CLI 実行だと黙って何もしないエージェント。承認・文脈・秘密情報・実行環境の4点で経路差を吸収し、1つの定義を対話でも無人でも同じ挙動にする設計を、動くコードとプリフライト検査つきでまとめます。
Agents & Manager2026-06-28
処理させる記事の本文が、そのままエージェントへの指示になっていた話
Antigravity CLI で無人のコンテンツ整形パイプラインを回していると、処理対象ファイルの本文に紛れた指示文がエージェントの動作を乗っ取ります。指示チャネルとデータチャネルを構造的に分離し、出力スコープの受け入れゲートで逸脱を弾く設計をまとめました。
Agents & Manager2026-06-25
大型更新で無人実行が一晩で止まる前に — バージョンを段階導入するカナリアゲートの設計
大型更新の直後に無人実行が半分しか通らなくなった経験から、動作中の構成を凍結し、隔離プロファイルのカナリア検証で合否を判定してから本採用する段階導入ゲートの設計を、bashとPythonの実装とともにまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →