AWS AgentCore Browser skill for automated web testing and screenshot capture. Use this skill when the user asks to: - Test if a website works - Take a screenshot of a webpage - Check for JavaScript or console errors - Verify API health endpoints - Open a URL in a cloud browser - Debug website loading issues This skill uses AWS Bedrock AgentCore Browser (cloud-based; no local browser required).
This skill uses AWS Bedrock AgentCore Browser to perform automated web testing in the cloud. No local browser or display required - tests run on AWS infrastructure.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock-agentcore:StartBrowserSession",
"bedrock-agentcore:StopBrowserSession",
"bedrock-agentcore:GetBrowserSession"
],
"Resource": "*"
}
]
}
pip install bedrock-agentcore playwright boto3 nest-asyncio
# Test a URL
python scripts/browser_test.py https://example.com
# Test with screenshot
python scripts/browser_test.py https://example.com --screenshot screenshot.png
# Test with API health check
python scripts/browser_test.py https://example.com --check-api
# Full test with JSON output
python scripts/browser_test.py https://example.com -s screenshot.png -a --json
from browser_test import test_url
# test_url is a synchronous function
results = test_url(
url="https://example.com",
screenshot_path="screenshot.png",
check_api=True
)
print(f"Status: {results['status']}")
print(f"Title: {results['title']}")
print(f"Errors: {results['errors']}")
from bedrock_agentcore.tools.browser_client import BrowserClient
from playwright.async_api import async_playwright
async def custom_test():
client = BrowserClient(region="us-west-2")
session = await client.start_browser_session(
session_name="my-test",
timeout=300,
viewport={"width": 1920, "height": 1080}
)
ws_url, headers = await client.generate_ws_headers()
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(ws_url, headers=headers)
page = browser.contexts[0].pages[0]
# Your custom test logic
await page.goto("https://example.com")
await page.click("button#submit")
await page.wait_for_selector(".result")
content = await page.content()
await browser.close()
await client.stop_browser_session()
return content
| Option | Short | Description |
|--------|-------|-------------|
| url | - | URL to test (required) |
| --screenshot | -s | Path to save screenshot |
| --check-api | -a | Check /api/health endpoint |
| --region | -r | AWS region (default: us-west-2) |
| --json | -j | Output results as JSON |
🚀 Starting browser session in us-west-2...
✅ Browser session started: sess-abc123
🔗 Connecting to remote browser...
🌐 Navigating to https://example.com...
📄 Page title: Example Domain
📊 HTTP status: 200
📸 Screenshot saved: screenshot.png
==================================================
📋 Test Results
==================================================
URL: https://example.com
Status: 200
Title: Example Domain
Errors: 0
✅ All checks passed!
{
"url": "https://example.com",
"status": 200,
"title": "Example Domain",
"errors": [],
"api_check": {
"url": "https://example.com/api/health",
"status": 200,
"body": "{\"status\":\"healthy\"}"
},
"screenshot": "screenshot.png"
}
While tests are running, you can watch the browser in real-time:
If tests timeout, increase the session timeout:
session = await client.start_browser_session(
session_name="long-test",
timeout=600 # 10 minutes
)
Ensure your IAM role/user has the required permissions for AgentCore Browser.
Check that the target URL is accessible from AWS infrastructure. Internal/private URLs may not be reachable.
AgentCore Browser is available in:
AgentCore Browser uses consumption-based pricing with no upfront costs. See AWS Pricing for details.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer