name: webapp-testing description: | Test and verify local web applications using browser automation. Triggers: 「ブラウザでテスト」「UIの動作確認」「スクリーンショット」「実際に動かして確認」 Use when: Verifying frontend functionality, debugging UI behavior, capturing screenshots. Uses AntiGravity's browser_subagent for browser interaction.
Web Application Testing
ブラウザ自動化を使用してローカルWebアプリケーションをテスト・検証するスキル。
[!NOTE] エージェントによって使用するツールが異なります:
- AntiGravity:
browser_subagent(内蔵ツール)- Claude Code:
playwright(MCPツール)[!WARNING] このスキルはAntiGravityの
browser_subagentに最適化されています。Claude Codeで使用する場合は、browser_subagentツールが利用できないため、手動でplaywrightMCPツールを呼び出す必要があります。自動実行は失敗する可能性があります。
Decision Tree
タスク → 静的HTML?
├─ Yes → HTMLファイルを直接読んでセレクタを特定
│ └─ browser_subagent / Playwright MCP
│
└─ No (動的Webapp) → サーバーが起動している?
├─ No → run_commandでサーバーを起動
│ → browser_subagent / Playwright MCP
│
└─ Yes → Reconnaissance-then-action
AntiGravity Usage (browser_subagent)
browser_subagent ツールを呼び出す際のタスク記述例:
1. http://localhost:<port> にアクセス
2. ページのロードを待つ
3. [対象要素]が表示されていることを確認
4. スクリーンショットを撮影
5. 結果を報告
Claude Code Usage (Playwright MCP)
Claude Codeでは、Playwright MCPサーバーを使用してブラウザ操作を行います。
1. Setup & Tools
必要に応じてPlaywrightブラウザをインストール:
npx playwright install --with-deps chromium
主要ツール:
playwright_navigate: ページ遷移playwright_click: 要素のクリックplaywright_fill: フォーム入力playwright_evaluate: JS実行playwright_screenshot: スクリーンショット
2. Page Object Model Example
テストコードを作成する場合の推奨パターン:
// pages/LoginPage.ts
export class LoginPage {
constructor(private page: Page) {}
get emailInput() { return this.page.getByLabel('Email'); }
get loginButton() { return this.page.getByRole('button', { name: 'Login' }); }
async login(email: string) {
await this.emailInput.fill(email);
await this.loginButton.click();
}
}
3. Example Workflow
- Navigate:
playwright_navigate(url="http://localhost:3000") - Inspect:
playwright_screenshotでページ状態を確認 - Action:
playwright_click(selector="text=Login")
3. Reconnaissance-Then-Action
重要: 動的アプリでは、DOM検査の前にページの完全なロードを待つこと。
- ページに移動 → ロード完了を待つ
- DOM/スクリーンショットを確認 → セレクタを特定
- アクション実行 → 特定したセレクタを使用
Best Practices
- サーバー起動は
run_commandで行い、バックグラウンドで実行 browser_subagentのタスク記述は具体的かつ明確にする- テスト完了条件を明示する
- セマンティックなセレクタを優先(
text=,role=, aria属性) - スクリーンショットは検証結果の証拠として活用