browser-agent
Autonomous human-like browser control and professional QA/QC testing. Powered by agent-browser (Rust native CDP, zero Playwright) with ISTQB test matrix generation, automated testcase execution, conso
SKILL.mdplugins/supergraph/skills/browser-agent/SKILL.md
GitHub/supergraph:browser-agent
Autonomous human-like browser control and professional QA/QC testcase execution without Playwright.
Powered by native Rust agent-browser (Chrome DevTools Protocol direct, zero bot-detection footprint).
Announce: "🌐 /supergraph:browser-agent — professional QA testing with real user emulation (Rust CDP)..."
Why Agent-Browser over Playwright?
- Zero Bot Detection Footprint: Native Rust client communicating directly via CDP. Removes
navigator.webdriverand disables Blink automation flags. - Human Input Mode (
--input-mode human): Natural Bezier mouse curves, randomized typing cadence, natural dwell times. - Token Efficiency: Compact Accessibility Tree snapshots with
@refidentifiers (~100-300 tokens vs 20,000 HTML tokens). - Session & Profile Reuse: Effortlessly attaches to your authenticated Chrome profile or
--auto-connectto running Chrome on port 9222.
Available Tools / Commands
Can be invoked via MCP (mcp__supergraph-browser__*) or CLI (agent-browser):
| Action | MCP Tool | CLI Command | Purpose |
|---|---|---|---|
| Open URL | agent_browser_open |
agent-browser open <url> |
Navigate to page |
| Read State | agent_browser_snapshot |
agent-browser snapshot -i |
Accessibility tree with @ref |
| Find Target | agent_browser_find |
agent-browser find role button click |
Locate elements semantically |
| Click | agent_browser_click |
agent-browser click @ref |
Click element by ref |
| Type/Fill | agent_browser_fill |
agent-browser fill @ref <text> |
Fill input with human keystrokes |
| Key Press | agent_browser_press |
agent-browser press Enter |
Send keyboard event |
| Wait | agent_browser_wait_for_text |
agent-browser wait <ms> |
Wait for condition or pause |
| Screenshot | agent_browser_screenshot |
agent-browser screenshot <path> |
Capture visual evidence |
| Console Logs | agent_browser_eval |
agent-browser console |
View browser console errors |
| Page Errors | agent_browser_eval |
agent-browser errors |
Catch unhandled exceptions |
| Network Requests | agent_browser_eval |
agent-browser network requests |
Inspect failed API calls |
| Close | agent_browser_close |
agent-browser close |
Close session |
The 4-Step Human Interaction Loop
[1. Open] ───────> [2. Snapshot @refs] ───> [3. Human Action] ───> [4. Verify & Settle]
open <url> snapshot -i click @e2 wait_for_text
find fill @e3 "text" snapshot
1. Observe Before Acting (Never Guess Selectors)
Call snapshot to get verified element references (@e1, @e2, ...).
2. Bypassing Strict Bot Walls (Cloudflare, Akamai, CAPTCHA)
Connect directly to your active browser using either method:
Method A: Supergraph Chrome Relay Extension (Recommended - Zero restart, 100% human profile)
# 1. Start relay server
node plugins/supergraph/extensions/chrome-relay/relay-server.js
# 2. Attach agent
export SG_BROWSER_CDP="http://127.0.0.1:9333"
Method B: Chrome Remote Debugging Port
# Attach to existing Chrome
export SG_BROWSER_CDP="http://127.0.0.1:9222"
# Or auto-discover running Chrome instance
export SG_BROWSER_AUTO_CONNECT="true"
Uses your real user session, cookies, extensions, canvas fingerprints, and hardware profile.
Professional QA/Tester Workflow (ISTQB Standard)
When tasked with testing a feature or application, the agent acts as a Senior QA Automation Engineer:
Phase 0: Graph Context & Impact Prioritization
Before running test automation, query graph context to prioritize coverage on changed paths:
Use CBM_PROJECT: call detect_changes, search_graph for changed routes/pages, then trace_path for inbound/outbound call and data-flow paths. Run validated test-gaps recipes. If results are unavailable, fall back to filesystem inspection.
Phase 1: Test Matrix Generation
Generate a comprehensive test matrix covering 5 dimensions and save to docs/qa/test-matrix-<feature>.md (scaffold quickly with scripts/init-qa.sh matrix <feature> [ui|api|fullstack] [target-url] from templates/):
- Happy Path: Expected valid user flow / 200 OK API contract from entrance to success.
- Negative Path: Missing required fields, invalid credentials, malformed emails/JSON, schema violations.
- Boundary Value Analysis: 0 chars, 1 char, limit max chars, SQLi/XSS probe strings (
<script>,' OR 1=1). - Network & Fault Resilience: Simulating 500 API errors, timeout, offline state, DB rollback verification.
- RBAC & Authorization: Guest/User attempting to access restricted routes or perform unauthorized operations (401/403/IDOR).
Phase 2: Autonomous Execution & Verification
For each testcase in the matrix:
- Navigate to target URL (
agent-browser open <url>). - Input test data with human cadence (
agent-browser fill @ref <data>). - Trigger action (
agent-browser click @ref). - Assert outcome:
- Check URL transition:
agent-browser get url - Check UI feedback:
agent-browser is visible <selector>oragent-browser get text @ref - Capture evidence on failure:
agent-browser screenshot docs/qa/evidence/TC-xxx.png
- Check URL transition:
Phase 3: Console & Network Diagnostics
Assert that no silent runtime bugs were introduced:
agent-browser console --clear→ Detect React hydration warnings, runtimeconsole.error.agent-browser errors→ Unhandled Promise rejections.agent-browser network requests→ Identify failed HTTP 4xx/500 endpoints.
Phase 4: Structured Defect Reporting
If defects are found, generate a formal Bug Report at docs/qa/bug-report-<timestamp>.md (scaffold quickly with scripts/init-qa.sh bug <feature> <defect-id> <defect-title> from templates/bug-report-template.md):
- Defect ID & Title: e.g.,
BUG-AUTH-001: Missing password validation triggers unhandled 500 error. - Severity: Blocker / Critical / Major / Minor.
- Preconditions & Environment: Browser profile, viewport, user state.
- Steps to Reproduce: Exact command sequence or clicks.
- Expected vs Actual Result: Clear contrast.
- Evidence: Attached screenshot link + Console/Network error dump.
CLI Quick Examples (in bash)
agent-browser open https://example.com
agent-browser snapshot -i
agent-browser click @e1
agent-browser fill @e2 "user@example.com"
agent-browser screenshot docs/qa/evidence/verify.png
agent-browser close