From atr-skills
Control browser, automate browser interactions, navigate to URLs, click on webpages, fill forms, take screenshots, inspect webpages, web scraping with browser, test websites manually, or interact with web pages programmatically using ATR browser server mode.
npx claudepluginhub imyousuf/agentic-test-runner --plugin atr-skillsThis skill is limited to using the following tools:
This skill provides browser automation capabilities through ATR's browser server mode. The browser server runs as a daemon process and accepts CLI commands for browser control.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
This skill provides browser automation capabilities through ATR's browser server mode. The browser server runs as a daemon process and accepts CLI commands for browser control.
Claude Code --> atr CLI (client) --> ATR Server + Browser
The browser runs in visible (non-headless) mode by default for debugging and verification.
Before any browser operations, verify the browser server is running:
atr browser status
If the server is not running, start it:
atr browser start
The server stores state at ~/.atr/browser.state which allows subsequent commands to discover the endpoint automatically.
Once running, use navigation and interaction commands to control the browser.
| Command | Description |
|---|---|
atr browser start [--port PORT] | Start browser daemon (default port: 9333) |
atr browser stop | Stop browser daemon |
atr browser status | Check if browser is running |
| Command | Description |
|---|---|
atr browser navigate <url> | Navigate to URL |
atr browser back | Go back in history |
atr browser forward | Go forward in history |
atr browser reload | Reload current page |
| Command | Description |
|---|---|
atr browser new-page [url] | Open new tab |
atr browser list-pages | List all tabs |
atr browser select-page <index> | Switch to tab (0-based) |
atr browser close-page <index> | Close tab |
| Command | Description |
|---|---|
atr browser click <target> [--double] | Click element (use --double for double-click) |
atr browser fill <target> <value> | Type into input field |
atr browser hover <target> | Hover over element |
atr browser press-key <key> | Press keyboard key (e.g., Enter, Tab, Control+A) |
atr browser drag <from> <to> | Drag element |
atr browser wait <selector> [--timeout] [--visible] | Wait for element to appear |
atr browser scroll --selector "<sel>" [--y N] [--to-bottom] | Scroll inside an element |
atr browser download-images "<sel>" [--output-dir] [--fallback-screenshot] | Download/screenshot images within elements |
atr browser viewport [W H] [--preset mobile|tablet|desktop|wide] | Get or set viewport size |
atr browser batch [--file F] [--on-error stop|continue|retry:N] | Execute multiple commands from stdin/file |
| Command | Description |
|---|---|
atr browser record [--url URL] [-o FILE] | Record browser interactions as a behavior test |
| Command | Description |
|---|---|
atr browser snapshot [--verbose] | Get page elements with UIDs |
atr browser screenshot --file [--full] [-s SELECTOR] | Capture screenshot (saves to /tmp/) |
atr browser screenshot --file --selector-all "<sel>" | Screenshot all matching elements |
atr browser computed-styles "<selector>" [--properties] | Get computed CSS styles for single element |
atr browser computed-styles --selector-all "<sel>" | Get computed CSS styles for all matching elements |
atr browser computed-styles-diff "<sel>" --against N | Compare styles between pages |
atr browser text "<selector>" [--flat|--links|--headings] | Extract text content |
atr browser font-check "<font-family>" | Check if font is loaded and rendering |
atr browser clean-snapshot "<selector>" [--depth N] [--max-length N] | Get cleaned DOM subtree (no noise/tracking attrs) |
atr browser computed-styles --selector "h1" --selector "p" | Batch computed styles for multiple selectors |
atr browser computed-styles-diff --selector "h1" --selector "p" --against 0 | Batch style diff with overall score |
atr browser html | Get page HTML |
atr browser url | Get current URL |
atr browser title | Get page title |
atr browser eval <script> | Execute JavaScript |
atr browser ask "<question>" | Ask a question about the current page |
Screenshot Note: Use --file to save screenshots to /tmp/ with a timestamped filename (e.g., /tmp/atr-screenshot-20240105-103045.png). Add --full for full-page screenshots. Use --selector / -s to screenshot a specific element by CSS selector (e.g., -s "header", -s "#nav", -s "main > section:nth-child(2)"). Combine --selector with --full to capture an element's full scrollable height. Use --selector-all to screenshot every matching element as numbered PNGs — elements that fail or timeout are skipped (use --timeout <ms> to control per-element timeout, default 30s). Without --file, returns base64-encoded image data.
| Command | Description |
|---|---|
atr browser console [--limit N] | Get console messages (default: 50) |
atr browser network [--limit N] | Get network requests (default: 50) |
atr browser errors | Get failed requests |
Follow this workflow for browser automation tasks:
Ensure Server Running
atr browser status || atr browser start
Navigate to Target
atr browser navigate https://example.com
Inspect Page Elements
atr browser snapshot
This returns elements with unique IDs (UIDs) like e0, e1, etc.
Interact with Elements Target elements by:
"Sign In"e5.submit-buttonVerify Results
atr browser url
atr browser title
atr browser screenshot --file
Cleanup When Done
atr browser stop
Use atr browser ask when you need specific information from a page without flooding your context with raw HTML or snapshot data. A lightweight sub-agent inspects the page using multiple tools and returns a concise text answer.
atr browser ask "What is the main heading on this page?"
atr browser ask "How many items are in the navigation menu?"
atr browser ask "Is there a login form on this page?"
Prefer ask over html or snapshot when:
Use atr browser record to capture user interactions and output a .test.txt behavior test file. A floating overlay appears in the browser showing recorded steps in real time.
# Record interactions on a page
atr browser record --url https://example.com -o repro-steps.test.txt
# Record on the already-open page
atr browser record -o flow.test.txt
Stop recording with Ctrl+C in the terminal or the "Stop" button in the browser overlay.
The recorder captures clicks, form fills, keyboard shortcuts, navigation, scrolling, and select changes. It handles shadow DOM (web components) and generates stable CSS selectors. Password fields are automatically masked.
The output .test.txt file can be replayed with atr run --behavior repro-steps.test.txt.
Add --json flag for structured output when parsing is needed:
atr browser snapshot --json
atr browser list-pages --json
atr browser network --json
The <target> parameter in click, fill, hover, and drag commands accepts:
e0, e5 (from snapshot output)"Sign In", "Submit Form"#login-button, .nav-link, header, footer, nav, main > section, div.hero, li:nth-child(2)Best practice: Use atr browser snapshot first to see available elements and their UIDs.
For press-key command:
Enter, Tab, Escape, BackspaceControl+a, Shift+Tab, Alt+EnterArrowUp, ArrowDown, ArrowLeft, ArrowRightBrowser won't start:
atr browser status
rm ~/.atr/browser.state # If stale state
atr browser start
Port already in use:
atr browser start --port 9334
Element not found:
atr browser snapshot --verbose --json
For complete command reference with all flags, see references/commands-reference.md.