home / skills / tsaol / awesome-claude / browser-use-agentcore

browser-use-agentcore skill

/skills/browser-use-agentcore

This skill automates browser-based testing in the cloud using AWS Bedrock AgentCore Browser to capture screenshots, verify API health, and surface errors.

npx playbooks add skill tsaol/awesome-claude --skill browser-use-agentcore

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
5.2 KB
---
name: browser-use-agentcore
description: >
  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 errors 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 needed).
license: MIT
---

# Browser Use AgentCore Skill

## Overview

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.

## Features

- Test any URL with a real browser
- Capture full-page screenshots
- Check for JavaScript console errors
- Verify API health endpoints
- View live browser session in AWS Console

## Prerequisites

1. AWS credentials configured
2. IAM permissions for AgentCore Browser
3. Python 3.10+

### Required IAM Policy

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:StartBrowserSession",
        "bedrock-agentcore:StopBrowserSession",
        "bedrock-agentcore:GetBrowserSession"
      ],
      "Resource": "*"
    }
  ]
}
```

## Quick Start

### Install Dependencies

```bash
pip install bedrock-agentcore playwright boto3 nest-asyncio
```

### Basic Usage

```bash
# 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
```

## Python API

### Simple Test

```python
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']}")
```

### Advanced Usage with Playwright

```python
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
```

## Command Line Options

| 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 |

## Output Format

### Console Output

```
🚀 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!
```

### JSON Output

```json
{
  "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"
}
```

## Live View

While tests are running, you can watch the browser in real-time:

1. Open [AWS Console - AgentCore Browser](https://us-west-2.console.aws.amazon.com/bedrock-agentcore/builtInTools)
2. Navigate to **Built-in tools**
3. Find your active session
4. Click **View live session**

## Troubleshooting

### Session Timeout

If tests timeout, increase the session timeout:

```python
session = await client.start_browser_session(
    session_name="long-test",
    timeout=600  # 10 minutes
)
```

### Permission Denied

Ensure your IAM role/user has the required permissions for AgentCore Browser.

### Network Errors

Check that the target URL is accessible from AWS infrastructure. Internal/private URLs may not be reachable.

## Regional Availability

AgentCore Browser is available in:
- us-east-1 (N. Virginia)
- us-west-2 (Oregon)

## Pricing

AgentCore Browser uses consumption-based pricing with no upfront costs. See [AWS Pricing](https://aws.amazon.com/bedrock/agentcore/pricing/) for details.

Overview

This skill uses AWS Bedrock AgentCore Browser to run automated web tests and capture screenshots in the cloud. It requires no local browser or display and runs tests on AWS infrastructure for reliable, remote verification. Use it to validate page load, surface console errors, confirm API health endpoints, and collect artifacts like screenshots and JSON reports.

How this skill works

The skill starts a managed AgentCore Browser session, connects a Playwright-compatible client to the remote browser, and navigates to the target URL. It collects page metadata (title, HTTP status), inspects the JavaScript console for errors, optionally calls /api/health endpoints, and can save full-page screenshots and structured JSON results. Sessions can be viewed live in the AWS Console and stopped programmatically.

When to use it

  • Verify that a website loads correctly from AWS cloud regions
  • Capture a full-page screenshot for visual regression or reporting
  • Detect JavaScript console errors or runtime exceptions
  • Validate a public API health endpoint like /api/health
  • Debug loading or interaction issues without a local browser

Best practices

  • Ensure AWS credentials and IAM permissions include bedrock-agentcore Start/Stop/Get actions
  • Run tests from the same AWS region as your target when possible to reduce network variance
  • Increase session timeout for long-running or complex flows (e.g., 600 seconds)
  • Save both screenshot and JSON output for visual and programmatic validation
  • Confirm target URLs are reachable from AWS (internal services may require VPC/config changes)

Example use cases

  • Scheduled smoke tests that verify main pages and API health every deployment
  • Capture screenshots for QA approval or automated visual checks
  • Investigate a user-reported console error by reproducing it in a cloud session
  • Run end-to-end flows (login, submit form, check result) via Playwright over AgentCore
  • CI job that outputs JSON test results and artifacts for artifact storage

FAQ

Do I need a local browser or display?

No. The skill runs the browser in AWS AgentCore Browser so no local display is required.

What permissions are required?

Your IAM identity needs bedrock-agentcore:StartBrowserSession, StopBrowserSession, and GetBrowserSession permissions.

Can I view the session live?

Yes. Active sessions can be viewed in the AWS Console under AgentCore Browser built-in tools.