| name | ironbee-browser-devtools-cli |
| description | Automates browser interactions using Playwright for web testing, debugging, and automation. Use when the user needs to navigate websites, take screenshots, fill forms, click elements, extract page content (HTML/text), audit accessibility (ARIA/AX tree), measure Web Vitals performance, monitor console logs and HTTP requests, mock API responses, execute JavaScript in browser, inspect React components, compare UI with Figma designs, manage reusable scenarios, or perform non-blocking debugging with tracepoints, logpoints, and exception monitoring. Also covers the creds-gated Jira and Linear issue-tracker domains: fetch/search issues, download attachments, attach evidence, comment, transition/set state, and report verification results back to the tracker. |
IronBee Browser DevTools CLI
Command-line interface for browser automation, debugging, and testing using Playwright. Part of IronBee DevTools. This CLI targets the browser platform; for Node.js backend debugging see ironbee-node-devtools-cli, and for HTTP/gRPC/GraphQL/WS + log + database verification see ironbee-backend-devtools-cli.
ironbee-browser-devtools-cli and ironbee-devtools-cli are aliases — both ship with the same package and target the browser platform by default. Examples in this doc use ironbee-browser-devtools-cli; substitute ironbee-devtools-cli if you prefer the shorter name.
Installation
npx skills add ironbee-ai/ironbee-devtools-skills
npm install -g @ironbee-ai/devtools
Quick Start
ironbee-browser-devtools-cli navigation go-to --url "https://example.com"
ironbee-browser-devtools-cli content take-screenshot --name "homepage"
ironbee-browser-devtools-cli content get-as-text
Ref-based workflow (recommended for AI agents): Call a11y take-aria-snapshot first to get refs (e1, e2, ...), then use refs in interaction click --selector "e1" or content take-screenshot --annotate for numbered element labels.
Global Options
| Option | Description | Default |
|---|
--port <number> | Daemon server port | 2020 |
--session-id <string> | Session ID for browser state persistence | auto |
--json | Output results as JSON (recommended for AI) | false |
--quiet | Suppress log messages | false |
--verbose | Enable debug output | false |
--timeout <ms> | Operation timeout | 30000 |
--headless | Run browser in headless mode | true |
--no-headless | Run browser with visible window | - |
--persistent | Preserve cookies/localStorage | false |
--no-persistent | Clear state on session end | - |
--user-data-dir <path> | Browser user data directory | OS temp |
--use-system-browser | Use system Chrome | false |
--browser-path <path> | Custom browser path | auto |
AI Agent Recommended Options:
ironbee-browser-devtools-cli --json --quiet --session-id "my-session" <command>
Tool Domains
The CLI provides tools organized by domain:
| Domain | Description | Reference |
|---|
| navigation | Page navigation (go-to, back, forward, reload) | navigation |
| content | Content extraction (screenshot, PDF, HTML, text, video recording) | content |
| interaction | User interactions (click, fill, hover, scroll) | interaction |
| a11y | Accessibility snapshots (ARIA, AX tree) | a11y |
| o11y | Observability (Web Vitals, console, HTTP, traces) | o11y |
| debug | Non-blocking debugging (tracepoints, logpoints, exceptions) | debug |
| stub | HTTP mocking (intercept, mock, clear) | stub |
| sync | Synchronization (wait for network idle) | sync |
| react | React DevTools integration | react |
| figma | Figma design comparison | figma |
| scenario | Reusable JS scripts (add, update, delete, list, search, run) | scenario |
| execute | Batch JavaScript execution (run execute; CLI and MCP) | execute |
| jira | Jira issue tracker: intake, evidence, outcome, verification report (creds-gated shared domain; writes opt-in) | jira |
| linear | Linear issue tracker: intake, evidence, outcome, verification report (creds-gated shared domain; writes opt-in) | linear |
Jira / Linear are platform-agnostic shared issue-tracker domains (like scenario/execute) — registered on every platform CLI, but only when credentials are configured: jira needs JIRA_BASE_URL plus JIRA_EMAIL + JIRA_API_TOKEN (Cloud) or JIRA_PAT (Server/DC); linear needs LINEAR_API_KEY. Without creds the jira / linear subcommand group does not exist. Write tools (add-comment, attach-file, create/update-issue, transition-issue / set-state, link-issue, report-verification) additionally require JIRA_WRITE_ENABLED=true / LINEAR_WRITE_ENABLED=true (default off ⇒ read-only intake tools only). Close the loop after a verification run: ironbee-browser-devtools-cli jira report-verification --key PROJ-123 --result pass --report "..." --artifacts ./artifacts/evidence.png (linear: same shape with --state instead of --transition). See jira / linear.
Execute is available in both CLI and MCP. Use it to run JavaScript and batch tool calls: CLI run execute --code "<js>" (or --file <path>, optionally --timeout-ms); MCP tool execute with the same params. Inside the VM: page (browser only) — Playwright Page; use await page.title(), await page.evaluate(...), etc. callTool(name, input, returnOutput?) — invoke any tool; always await; name is underscore form (e.g. 'navigation_go-to'); input is an object (camelCase keys); returnOutput: true adds the result to the response toolOutputs. See execute reference for full bindings and args.
Scenarios are reusable JS scripts stored as per-scenario <name>.json files under ${WORKING_DIR}/.ironbee-devtools/scenarios/ (project) or ~/.ironbee-devtools/scenarios/ (global). They run inside the same VM as execute (with the same callTool and page bindings). See scenario reference.
CLI Management Commands
Daemon Management
ironbee-browser-devtools-cli daemon status
ironbee-browser-devtools-cli daemon info
ironbee-browser-devtools-cli daemon start
ironbee-browser-devtools-cli daemon stop
ironbee-browser-devtools-cli daemon restart
Session Management
ironbee-browser-devtools-cli session list
ironbee-browser-devtools-cli session info <session-id>
ironbee-browser-devtools-cli session delete <session-id>
Tool Discovery
ironbee-browser-devtools-cli tools list
ironbee-browser-devtools-cli tools search <query>
ironbee-browser-devtools-cli tools info <tool-name>
Configuration
ironbee-browser-devtools-cli config
Updates
ironbee-browser-devtools-cli update --check
ironbee-browser-devtools-cli update
Examples
Basic Navigation and Screenshot
ironbee-browser-devtools-cli navigation go-to --url "https://example.com"
ironbee-browser-devtools-cli content take-screenshot --name "homepage"
ironbee-browser-devtools-cli content get-as-text
Form Automation
SESSION="--session-id login-test"
ironbee-browser-devtools-cli $SESSION navigation go-to --url "https://app.example.com/login"
ironbee-browser-devtools-cli $SESSION interaction fill --selector "#email" --value "user@example.com"
ironbee-browser-devtools-cli $SESSION interaction fill --selector "#password" --value "password123"
ironbee-browser-devtools-cli $SESSION interaction click --selector "button[type=submit]"
ironbee-browser-devtools-cli $SESSION sync wait-for-network-idle
ironbee-browser-devtools-cli $SESSION content take-screenshot --name "dashboard"
Performance Analysis
ironbee-browser-devtools-cli navigation go-to --url "https://example.com"
ironbee-browser-devtools-cli --json o11y get-web-vitals
ironbee-browser-devtools-cli --json o11y get-console-messages --type warning
ironbee-browser-devtools-cli --json o11y get-http-requests
Accessibility Audit
ironbee-browser-devtools-cli navigation go-to --url "https://example.com"
ironbee-browser-devtools-cli a11y take-aria-snapshot
ironbee-browser-devtools-cli --json a11y take-ax-tree-snapshot --roles button,link,textbox
Batch Execution (execute)
ironbee-browser-devtools-cli run execute --code "return await page.title();"
ironbee-browser-devtools-cli run execute --code "await callTool('a11y_take-aria-snapshot', {}, true); await callTool('content_take-screenshot', {}, true);"
ironbee-browser-devtools-cli run execute --file ./scripts/login-flow.js
Scenarios (reusable JS)
The scenario tools are platform-agnostic shared tools — their CLI commands live under the auto-generated default group (they have no domain prefix in their tool id). The full set (CRUD + scenario-run) is registered on all six platform CLIs (browser, node, python, backend, android, terminal). A scenario can declare an optional typed params contract (defaults + shallow validation applied by scenario-run) — see the scenario reference.
ironbee-browser-devtools-cli default scenario-add \
--name "login-flow" \
--description "Logs in and verifies dashboard" \
--script "await callTool('navigation_go-to', { url: 'https://app.example.com/login' });"
ironbee-browser-devtools-cli default scenario-list
ironbee-browser-devtools-cli default scenario-search --query "login"
ironbee-browser-devtools-cli default scenario-run --name login-flow
ironbee-browser-devtools-cli default scenario-run --name login-flow --param email=user@example.com
Equivalent MCP tool names (all six are MCP-registered): scenario-add, scenario-update, scenario-delete, scenario-list, scenario-search, scenario-run (flat, no domain prefix).
API Mocking
ironbee-browser-devtools-cli stub mock-http-response \
--pattern "**/api/users" \
--body '[{"id": 1, "name": "Test User"}]'
ironbee-browser-devtools-cli navigation go-to --url "https://app.example.com"
ironbee-browser-devtools-cli stub clear
Non-Blocking Debugging
SESSION="--session-id debug-session"
ironbee-browser-devtools-cli $SESSION navigation go-to --url "http://localhost:3000"
ironbee-browser-devtools-cli $SESSION debug put-tracepoint \
--url-pattern "app.js" \
--line-number 42
ironbee-browser-devtools-cli $SESSION debug add-watch --expression "this"
ironbee-browser-devtools-cli $SESSION debug put-exceptionpoint --state uncaught
ironbee-browser-devtools-cli $SESSION interaction click --selector "#submit-btn"
ironbee-browser-devtools-cli $SESSION --json debug get-probe-snapshots
ironbee-browser-devtools-cli $SESSION --json debug get-probe-snapshots --types tracepoint,exceptionpoint
Shell Script for CI/CD
#!/bin/bash
set -e
CLI="ironbee-browser-devtools-cli --json --quiet --session-id ci-test-$$"
$CLI navigation go-to --url "https://example.com"
$CLI sync wait-for-network-idle
$CLI content take-screenshot --name "ci-test"
VITALS=$($CLI o11y get-web-vitals)
echo "Web Vitals: $VITALS"
ERRORS=$($CLI o11y get-console-messages --type error)
if [ "$ERRORS" != "[]" ]; then
echo "Console errors found: $ERRORS"
exit 1
fi
$CLI session delete "ci-test-$$"
Interactive Mode (Human Users)
For manual exploration, an interactive REPL mode is available:
ironbee-browser-devtools-cli interactive
ironbee-browser-devtools-cli --no-headless interactive
| Command | Description |
|---|
help | Show available commands |
exit, quit | Exit interactive mode |
<domain> <tool> | Execute a tool |
Shell Completions
ironbee-browser-devtools-cli completion bash
echo 'eval "$(ironbee-browser-devtools-cli completion bash)"' >> ~/.bashrc
ironbee-browser-devtools-cli completion zsh
echo 'eval "$(ironbee-browser-devtools-cli completion zsh)"' >> ~/.zshrc