browser-testing-with-screenshots
WebアプリケーションのUIが正しく機能しているかを確認するため、Chromeブラウザを操作し、要素を選択してスクリーンショットを自動で撮影し、視覚的に検証するテストを効率化するSkill。
📜 元の英語説明(参考)
Use when testing web applications with visual verification - automates Chrome browser interactions, element selection, and screenshot capture for confirming UI functionality
🇯🇵 日本人クリエイター向け解説
WebアプリケーションのUIが正しく機能しているかを確認するため、Chromeブラウザを操作し、要素を選択してスクリーンショットを自動で撮影し、視覚的に検証するテストを効率化するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o browser-testing-with-screenshots.zip https://jpskill.com/download/17071.zip && unzip -o browser-testing-with-screenshots.zip && rm browser-testing-with-screenshots.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17071.zip -OutFile "$d\browser-testing-with-screenshots.zip"; Expand-Archive "$d\browser-testing-with-screenshots.zip" -DestinationPath $d -Force; ri "$d\browser-testing-with-screenshots.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
browser-testing-with-screenshots.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
browser-testing-with-screenshotsフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
スクリーンショットを用いたブラウザテスト
概要
browser-tools を使用して、ビジュアル検証による Chrome ブラウザテストを自動化します。 Chrome DevTools Protocol に接続して、ナビゲーション、インタラクション、およびスクリーンショットのキャプチャを行い、アプリケーションの機能を確認します。
前提条件
必須: https://github.com/badlogic/agent-tools から agent-tools をインストールします。
# agent-tools をクローンしてインストールします
git clone https://github.com/badlogic/agent-tools.git
cd agent-tools
# リポジトリ内のインストール手順に従ってください
# すべての実行可能ファイル (browser-start.js, browser-nav.js など) が PATH にあることを確認してください
インストールの確認:
# ブラウザツールが利用可能であることを確認します
which browser-start.js
which browser-nav.js
which browser-screenshot.js
このスキルで参照されるすべての browser-* コマンドは、agent-tools リポジトリからのものであり、システム PATH に適切にインストールされ、アクセス可能である必要があります。
使用場面
このスキルは、以下の場合に使用します。
- Web アプリケーションの UI フローをテストする場合
- ビジュアルな変更やレイアウトを検証する場合
- 繰り返しのブラウザ操作を自動化する場合
- スクリーンショットでアプリケーションの動作をドキュメント化する場合
- 開発中に localhost アプリケーションをテストする場合
- 人間のような選択を必要とする要素と対話する必要がある場合
以下の場合には使用しないでください。
- API テスト (直接 HTTP 呼び出しを使用)
- ビジュアルが重要でないヘッドレステスト
- 単純なページコンテンツの検証 (curl/wget を使用)
クイックリファレンス
| タスク | コマンド | 目的 |
|---|---|---|
| ブラウザの起動 | browser-start.js |
デバッグで Chrome を起動 |
| ナビゲーション | browser-nav.js http://localhost:5172/dashboard |
特定の URL に移動 |
| スクリーンショットの撮影 | browser-screenshot.js |
現在のビューポートをキャプチャ |
| 要素の選択 | browser-pick.js "Select the login button" |
インタラクティブな要素選択 |
| JavaScript の実行 | browser-eval.js 'document.title' |
ページコンテキストでコードを実行 |
| コンテンツの抽出 | browser-content.js |
読み取り可能なページコンテンツを取得 |
| Cookie の表示 | browser-cookies.js |
セッション Cookie を一覧表示 |
セットアップと基本的なワークフロー
1. リモートデバッグで Chrome を起動する
# デバッグを有効にして Chrome を起動します (ユーザープロファイルを保持します)
browser-start.js
# または、新たに開始します (Cookie なし、クリーンな状態)
browser-start.js --fresh
期待される結果: DevTools Protocol が有効になった状態で、Chrome がポート 9222 で開きます。
2. アプリケーションに移動する
# アプリケーションの開始点に移動します
browser-nav.js http://localhost:5172/dashboard
検証: ブラウザがダッシュボードページに移動します。
3. ベースラインのスクリーンショットをキャプチャする
# ページがロードされたことを確認するために、最初のスクリーンショットを撮影します
browser-screenshot.js
出力: スクリーンショットファイルへのパスを返します (例: screenshot_20231203_141532.png)。
スクリーンショットを用いたテストワークフロー
テストシナリオの完全な例
#!/bin/bash
# ログインとダッシュボードの機能をテストします
echo "🚀 ブラウザテストを開始します..."
# 1. ブラウザを起動します
browser-start.js --fresh
# 2. ログインページに移動します
browser-nav.js http://localhost:5172/login
sleep 2
# 3. ログインページのスクリーンショットを撮影します
LOGIN_SHOT=$(browser-screenshot.js)
echo "📸 ログインページ: $LOGIN_SHOT"
# 4. ログインフォームに入力します (インタラクティブな要素選択)
browser-pick.js "Click the username field"
browser-eval.js 'document.activeElement.value = "testuser"'
browser-pick.js "Click the password field"
browser-eval.js 'document.activeElement.value = "password123"'
# 5. フォーム入力後のスクリーンショット
FORM_SHOT=$(browser-screenshot.js)
echo "📸 フォーム入力後: $FORM_SHOT"
# 6. フォームを送信します
browser-pick.js "Click the login button"
sleep 3
# 7. ダッシュボードがロードされたことを確認します
browser-nav.js http://localhost:5172/dashboard
DASHBOARD_SHOT=$(browser-screenshot.js)
echo "📸 ダッシュボード: $DASHBOARD_SHOT"
# 8. 特定のダッシュボード要素を検証します
browser-pick.js "Select the navigation menu"
browser-eval.js 'console.log("Navigation found:", !!document.querySelector(".nav"))'
echo "✅ テスト完了。スクリーンショットが保存されました。"
要素インタラクションのパターン
# インタラクティブな要素選択 (動的なコンテンツに最適)
browser-pick.js "Select the submit button"
# ユーザーがブラウザで要素をクリック → CSS セレクターを返します
# 返されたセレクターを自動化に使用します
SELECTOR=$(browser-pick.js "Select the submit button" | grep "selector:")
browser-eval.js "document.querySelector('$SELECTOR').click()"
# スクリーンショットを撮影してアクションを検証します
browser-screenshot.js
高度な使用法
複雑なインタラクションのための JavaScript 評価
# インタラクションの前に要素が存在するかどうかを確認します
browser-eval.js 'document.querySelector("#login-form") !== null'
# 動的なコンテンツを待ちます
browser-eval.js '
new Promise(resolve => {
const check = () => {
if (document.querySelector(".loaded")) resolve(true);
else setTimeout(check, 100);
};
check();
})
'
# フォームデータを抽出します
browser-eval.js 'JSON.stringify(Object.fromEntries(new FormData(document.querySelector("form"))))'
タイミング付きのスクリーンショット
# ナビゲートして、スクリーンショットを撮影する前に待ちます
browser-nav.js http://localhost:5172/slow-page
sleep 5 # アニメーション/ロードを待ちます
browser-screenshot.js
検証のためのコンテンツ抽出
# ページタイトルを取得します
PAGE_TITLE=$(browser-eval.js 'document.title')
echo "現在のページ: $PAGE_TITLE"
# 読み取り可能なコンテンツを抽出します
browser-content.js > page_content.md
# 特定のテキストを確認します
browser-eval.js 'document.body.textContent.includes("Welcome to Dashboard")'
よくある間違い
| 間違い | 問題 | 解決策 |
|---|---|---|
| ナビゲーション後のスリープがない | ロード中のページのスクリーンショット | nav の後に sleep 2-5 を追加 |
| ハードコードされたセレクター | UI が変更されると壊れる | 選択に browser-pick.js を使用 |
| Chrome のセットアップがない | "Connection refused" エラー | 最初に browser-start.js を実行 |
| 間違った localhost ポート | ナビゲーションが失敗する | アプリケーションが正しいポートで実行されていることを確認 |
| スクリーンショットのタイミング | コンテンツがロードされる前にキャプチャ | ページロードまたは特定の要素を待つ |
| 状態が保持されない | コマンド間でログインが失われる | デフォルトを使用 |
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Browser Testing with Screenshots
Overview
Automate Chrome browser testing with visual verification using browser-tools. Connect to Chrome DevTools Protocol for navigation, interaction, and screenshot capture to confirm application functionality.
Prerequisites
REQUIRED: Install agent-tools from https://github.com/badlogic/agent-tools
# Clone and install agent-tools
git clone https://github.com/badlogic/agent-tools.git
cd agent-tools
# Follow installation instructions in the repository
# Ensure all executables (browser-start.js, browser-nav.js, etc.) are in your PATH
Verify installation:
# Check that browser tools are available
which browser-start.js
which browser-nav.js
which browser-screenshot.js
All browser-* commands referenced in this skill come from the agent-tools repository and must be properly installed and accessible in your system PATH.
When to Use
Use this skill when:
- Testing web application UI flows
- Verifying visual changes or layouts
- Automating repetitive browser interactions
- Documenting application behavior with screenshots
- Testing localhost applications during development
- Need to interact with elements that require human-like selection
Don't use for:
- API testing (use direct HTTP calls)
- Headless testing where visuals don't matter
- Simple page content validation (use curl/wget)
Quick Reference
| Task | Command | Purpose |
|---|---|---|
| Start browser | browser-start.js |
Launch Chrome with debugging |
| Navigate | browser-nav.js http://localhost:5172/dashboard |
Go to specific URL |
| Take screenshot | browser-screenshot.js |
Capture current viewport |
| Pick elements | browser-pick.js "Select the login button" |
Interactive element selection |
| Run JavaScript | browser-eval.js 'document.title' |
Execute code in page context |
| Extract content | browser-content.js |
Get readable page content |
| View cookies | browser-cookies.js |
List session cookies |
Setup and Basic Workflow
1. Start Chrome with Remote Debugging
# Launch Chrome with debugging enabled (preserves user profile)
browser-start.js
# Or start fresh (no cookies, clean state)
browser-start.js --fresh
Expected Result: Chrome opens on port 9222 with DevTools Protocol enabled
2. Navigate to Application
# Go to your application starting point
browser-nav.js http://localhost:5172/dashboard
Verify: Browser navigates to dashboard page
3. Capture Baseline Screenshot
# Take initial screenshot to confirm page loaded
browser-screenshot.js
Output: Returns path to screenshot file (e.g., screenshot_20231203_141532.png)
Testing Workflow with Screenshots
Complete Test Scenario Example
#!/bin/bash
# Test login and dashboard functionality
echo "🚀 Starting browser test..."
# 1. Launch browser
browser-start.js --fresh
# 2. Navigate to login page
browser-nav.js http://localhost:5172/login
sleep 2
# 3. Take screenshot of login page
LOGIN_SHOT=$(browser-screenshot.js)
echo "📸 Login page: $LOGIN_SHOT"
# 4. Fill login form (interactive element picking)
browser-pick.js "Click the username field"
browser-eval.js 'document.activeElement.value = "testuser"'
browser-pick.js "Click the password field"
browser-eval.js 'document.activeElement.value = "password123"'
# 5. Screenshot filled form
FORM_SHOT=$(browser-screenshot.js)
echo "📸 Filled form: $FORM_SHOT"
# 6. Submit form
browser-pick.js "Click the login button"
sleep 3
# 7. Verify dashboard loaded
browser-nav.js http://localhost:5172/dashboard
DASHBOARD_SHOT=$(browser-screenshot.js)
echo "📸 Dashboard: $DASHBOARD_SHOT"
# 8. Verify specific dashboard elements
browser-pick.js "Select the navigation menu"
browser-eval.js 'console.log("Navigation found:", !!document.querySelector(".nav"))'
echo "✅ Test complete. Screenshots saved."
Element Interaction Pattern
# Interactive element selection (best for dynamic content)
browser-pick.js "Select the submit button"
# User clicks element in browser → returns CSS selector
# Use returned selector for automation
SELECTOR=$(browser-pick.js "Select the submit button" | grep "selector:")
browser-eval.js "document.querySelector('$SELECTOR').click()"
# Take screenshot to verify action
browser-screenshot.js
Advanced Usage
JavaScript Evaluation for Complex Interactions
# Check if element exists before interaction
browser-eval.js 'document.querySelector("#login-form") !== null'
# Wait for dynamic content
browser-eval.js '
new Promise(resolve => {
const check = () => {
if (document.querySelector(".loaded")) resolve(true);
else setTimeout(check, 100);
};
check();
})
'
# Extract form data
browser-eval.js 'JSON.stringify(Object.fromEntries(new FormData(document.querySelector("form"))))'
Screenshot with Timing
# Navigate and wait before screenshot
browser-nav.js http://localhost:5172/slow-page
sleep 5 # Wait for animations/loading
browser-screenshot.js
Content Extraction for Verification
# Get page title
PAGE_TITLE=$(browser-eval.js 'document.title')
echo "Current page: $PAGE_TITLE"
# Extract readable content
browser-content.js > page_content.md
# Check for specific text
browser-eval.js 'document.body.textContent.includes("Welcome to Dashboard")'
Common Mistakes
| Mistake | Problem | Solution |
|---|---|---|
| No sleep after navigation | Screenshots of loading page | Add sleep 2-5 after nav |
| Hardcoded selectors | Breaks when UI changes | Use browser-pick.js for selection |
| Missing Chrome setup | "Connection refused" errors | Run browser-start.js first |
| Wrong localhost port | Navigation fails | Verify application is running on correct port |
| Screenshot timing | Captures before content loads | Wait for page load or specific elements |
| Not preserving state | Login lost between commands | Use default profile, not --fresh |
Error Handling
# Check if Chrome is running
if ! browser-eval.js 'true' 2>/dev/null; then
echo "❌ Chrome not connected. Running browser-start.js..."
browser-start.js
fi
# Verify navigation succeeded
if browser-eval.js 'location.href.includes("dashboard")'; then
echo "✅ Navigation successful"
else
echo "❌ Navigation failed"
exit 1
fi
File Output Patterns
- Screenshots:
screenshot_YYYYMMDD_HHMMSS.pngin current directory - Content: Markdown format via stdout from
browser-content.js - Selectors: CSS selectors from
browser-pick.jsinteraction - JavaScript results: JSON or string values from
browser-eval.js
Integration with Testing Frameworks
# Create test evidence directory
mkdir -p test-results/$(date +%Y%m%d_%H%M%S)
cd test-results/$(date +%Y%m%d_%H%M%S)
# Run tests with organized screenshots
browser-start.js
for page in login dashboard profile; do
browser-nav.js "http://localhost:5172/$page"
sleep 2
screenshot=$(browser-screenshot.js)
mv "$screenshot" "${page}_page.png"
echo "✅ $page page tested"
done
Real-World Impact
Benefits:
- Visual verification: Screenshots provide immediate feedback on UI state
- Interactive debugging: Element picker works with dynamic/complex selectors
- State preservation: Maintains login sessions between commands
- Evidence collection: Automated screenshot capture for test documentation
- Development workflow: Quick verification of localhost changes
Results:
- Faster UI testing iteration (visual confirmation vs manual checking)
- Reliable element selection (human picks, automation uses)
- Test documentation with visual proof
- Catches visual regressions immediately
Key principle: Combine automated navigation with human element selection for robust, maintainable browser testing.