| name | agent-browser |
| description | Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages. |
| allowed-tools | ["Bash","Read","Write","Glob"] |
Browser Automation with agent-browser
Quick start
agent-browser open <url>
agent-browser snapshot -i
agent-browser click @e1
agent-browser fill @e2 "text"
agent-browser close
Core workflow
- Navigate:
agent-browser open <url>
- Snapshot:
agent-browser snapshot -i (returns elements with refs like @e1, @e2)
- Interact using refs from the snapshot
- Re-snapshot after navigation or significant DOM changes
Commands
Navigation
agent-browser open <url>
agent-browser back
agent-browser forward
agent-browser reload
agent-browser close
Snapshot (page analysis)
agent-browser snapshot
agent-browser snapshot -i
agent-browser snapshot -c
agent-browser snapshot -d 3
Interactions (use @refs from snapshot)
agent-browser click @e1
agent-browser dblclick @e1
agent-browser fill @e2 "text"
agent-browser type @e2 "text"
agent-browser press Enter
agent-browser press Control+a
agent-browser hover @e1
agent-browser check @e1
agent-browser uncheck @e1
agent-browser select @e1 "value"
agent-browser scroll down 500
agent-browser scrollintoview @e1
Get information
agent-browser get text @e1
agent-browser get value @e1
agent-browser get title
agent-browser get url
Screenshots
agent-browser screenshot
agent-browser screenshot path.png
agent-browser screenshot --full
Wait
agent-browser wait @e1
agent-browser wait 2000
agent-browser wait --text "Success"
agent-browser wait --load networkidle
Semantic locators (alternative to refs)
agent-browser find role button click --name "Submit"
agent-browser find text "Sign In" click
agent-browser find label "Email" fill "user@test.com"
Example: Form submission
agent-browser open https://example.com/form
agent-browser snapshot -i
agent-browser fill @e1 "user@example.com"
agent-browser fill @e2 "password123"
agent-browser click @e3
agent-browser wait --load networkidle
agent-browser snapshot -i
Example: Authentication with saved state
agent-browser open https://app.example.com/login
agent-browser snapshot -i
agent-browser fill @e1 "username"
agent-browser fill @e2 "password"
agent-browser click @e3
agent-browser wait --url "**/dashboard"
agent-browser state save auth.json
agent-browser state load auth.json
agent-browser open https://app.example.com/dashboard
Sessions (parallel browsers)
agent-browser --session test1 open site-a.com
agent-browser --session test2 open site-b.com
agent-browser session list
JSON output (for parsing)
Add --json for machine-readable output:
agent-browser snapshot -i --json
agent-browser get text @e1 --json
Debugging
agent-browser open example.com --headed
agent-browser console
agent-browser errors
Web3 Testing (Anchor Integration)
For Web3 dApps, agent-browser integrates with Anchor to provide wallet mocking and contract state injection.
Prerequisites
anchor --version
anchor session create --network mainnet --block 18500000
anchor fork create --session <id> --rpc-url $ETH_RPC_URL
Web3 Mock Mode
Launch browser with mock wallet state:
agent-browser open http://localhost:3000 --web3-mock \
--address 0x1234...abcd \
--balance 1000000000000000000
agent-browser open http://localhost:3000 --web3-mock \
--address 0x1234...abcd \
--balance 1eth \
--mock-reads mock-state.json
Mock State File Format
Create mock-state.json for complex contract mocking:
{
"wallet": {
"address": "0x1234567890abcdef1234567890abcdef12345678",
"balance": "1000000000000000000",
"chainId": 1
},
"contracts": {
"0xVaultAddress": {
"balanceOf(address)": {
"0x1234...": "500000000000000000"
},
"totalSupply()": "10000000000000000000000"
}
},
"badges": {
"count": 5,
"rebatePercentage": 1666
}
}
Anchor Fork Integration
Use Anchor to manage blockchain state for testing:
anchor fork create --session dev --rpc-url $ETH_RPC_URL --block 18500000
anchor snapshot create <fork-id>
agent-browser open http://localhost:3000 --web3-mock \
--rpc-url http://localhost:8545 \
--address 0x1234...
agent-browser screenshot rewards-card.png
anchor snapshot revert <snapshot-id>
Transaction Flow Testing
Test pessimistic sync flows without real transactions:
agent-browser open http://localhost:3000 --web3-mock \
--address 0x1234... \
--tx-state pending
agent-browser screenshot claim-pending.png
agent-browser open http://localhost:3000 --web3-mock \
--address 0x1234... \
--tx-state success \
--tx-hash 0xabc...
agent-browser screenshot claim-success.png
Example: Screenshot Wallet-Dependent Component
anchor session create --network mainnet --block latest
anchor fork create --session dev --rpc-url $ETH_RPC_URL
agent-browser open http://localhost:3000/rewards --web3-mock \
--address 0x1234567890abcdef1234567890abcdef12345678 \
--balance 10eth \
--mock-reads ./test-fixtures/rewards-state.json
agent-browser wait --text "Fee Rebate"
agent-browser wait 500
agent-browser screenshot pr-assets/rewards-card.png
agent-browser close
anchor fork kill <fork-id>
Environment Variables
export ANCHOR_SESSION_ID=dev
export WEB3_MOCK_ADDRESS=0x1234...
export WEB3_MOCK_RPC=http://localhost:8545
Limitations
- Mock state is injected via localStorage/window, not actual chain
- Complex contract interactions may need Anchor fork with actual state
- Transaction signing still requires mock connector setup in app