--- name: 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, or compare UI with Figma designs. allowed-tools: Bash(browser-devtools-cli:*) --- # Browser DevTools CLI Command-line interface for browser automation, debugging, and testing using Playwright. ## Installation ```bash npm install -g browser-devtools-mcp ``` ## Quick Start ```bash # Navigate to a URL browser-devtools-cli navigation go-to --url "https://example.com" # Take a screenshot browser-devtools-cli content take-screenshot --name "homepage" # Get page content as text browser-devtools-cli content get-as-text ``` ## Global Options | Option | Description | Default | |--------|-------------|---------| | `--port ` | Daemon server port | `2020` | | `--session-id ` | 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 ` | 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 ` | Browser user data directory | OS temp | | `--use-system-browser` | Use system Chrome | `false` | | `--browser-path ` | Custom browser path | auto | **AI Agent Recommended Options:** ```bash # JSON output for parsing, quiet mode for clean output, session for state persistence browser-devtools-cli --json --quiet --session-id "my-session" ``` ## Tool Domains The CLI provides tools organized by domain: | Domain | Description | Reference | |--------|-------------|-----------| | [navigation](./references/navigation.md) | Page navigation (go-to, back, forward, reload) | | [content](./references/content.md) | Content extraction (screenshot, PDF, HTML, text) | | [interaction](./references/interaction.md) | User interactions (click, fill, hover, scroll) | | [a11y](./references/a11y.md) | Accessibility snapshots (ARIA, AX tree) | | [o11y](./references/o11y.md) | Observability (Web Vitals, console, HTTP, traces) | | [run](./references/run.md) | JavaScript execution (browser, sandbox) | | [stub](./references/stub.md) | HTTP mocking (intercept, mock, clear) | | [sync](./references/sync.md) | Synchronization (wait for network idle) | | [react](./references/react.md) | React DevTools integration | | [figma](./references/figma.md) | Figma design comparison | ## CLI Management Commands ### Daemon Management ```bash browser-devtools-cli daemon status # Check daemon status browser-devtools-cli daemon info # Show daemon info (version, uptime, sessions) browser-devtools-cli daemon start # Start daemon browser-devtools-cli daemon stop # Stop daemon browser-devtools-cli daemon restart # Restart daemon ``` ### Session Management ```bash browser-devtools-cli session list # List active sessions browser-devtools-cli session info # Show session details browser-devtools-cli session delete # Delete a session ``` ### Tool Discovery ```bash browser-devtools-cli tools list # List all available tools browser-devtools-cli tools search # Search tools by name or description browser-devtools-cli tools info # Show tool details and parameters ``` ### Configuration ```bash browser-devtools-cli config # Show current configuration ``` ### Updates ```bash browser-devtools-cli update --check # Check for updates browser-devtools-cli update # Check and install updates ``` ## Examples ### Basic Navigation and Screenshot ```bash # Navigate to URL browser-devtools-cli navigation go-to --url "https://example.com" # Take screenshot browser-devtools-cli content take-screenshot --name "homepage" # Get page text browser-devtools-cli content get-as-text ``` ### Form Automation ```bash # Use same session for state persistence SESSION="--session-id login-test" # Navigate to login page browser-devtools-cli $SESSION navigation go-to --url "https://app.example.com/login" # Fill form fields browser-devtools-cli $SESSION interaction fill --selector "#email" --value "user@example.com" browser-devtools-cli $SESSION interaction fill --selector "#password" --value "password123" # Submit form browser-devtools-cli $SESSION interaction click --selector "button[type=submit]" # Wait for navigation browser-devtools-cli $SESSION sync wait-for-network-idle # Capture result browser-devtools-cli $SESSION content take-screenshot --name "dashboard" ``` ### Performance Analysis ```bash # Navigate browser-devtools-cli navigation go-to --url "https://example.com" # Get Web Vitals metrics browser-devtools-cli --json o11y get-web-vitals # Check console for errors browser-devtools-cli --json o11y get-console-messages --types error,warn # Analyze HTTP requests browser-devtools-cli --json o11y get-http-requests ``` ### Accessibility Audit ```bash # Navigate browser-devtools-cli navigation go-to --url "https://example.com" # Get ARIA snapshot browser-devtools-cli a11y take-aria-snapshot # Get detailed AX tree browser-devtools-cli --json a11y take-ax-tree-snapshot --roles button,link,textbox ``` ### API Mocking ```bash # Mock API response browser-devtools-cli stub mock-http-response \ --url-pattern "**/api/users" \ --body '[{"id": 1, "name": "Test User"}]' # Navigate and test browser-devtools-cli navigation go-to --url "https://app.example.com" # Clear mocks browser-devtools-cli stub clear --all ``` ### Shell Script for CI/CD ```bash #!/bin/bash set -e CLI="browser-devtools-cli --json --quiet --session-id ci-test-$$" # Navigate $CLI navigation go-to --url "https://example.com" # Wait for load $CLI sync wait-for-network-idle # Take screenshot $CLI content take-screenshot --name "ci-test" # Get Web Vitals VITALS=$($CLI o11y get-web-vitals) echo "Web Vitals: $VITALS" # Check for console errors ERRORS=$($CLI o11y get-console-messages --types error) if [ "$ERRORS" != "[]" ]; then echo "Console errors found: $ERRORS" exit 1 fi # Cleanup $CLI session delete "ci-test-$$" ``` ## Interactive Mode (Human Users) For manual exploration, an interactive REPL mode is available: ```bash browser-devtools-cli interactive browser-devtools-cli --no-headless interactive # With visible browser ``` | Command | Description | |---------|-------------| | `help` | Show available commands | | `exit`, `quit` | Exit interactive mode | | ` ` | Execute a tool | ## Shell Completions ```bash # Generate and install completions echo 'eval "$(browser-devtools-cli completion bash)"' >> ~/.bashrc echo 'eval "$(browser-devtools-cli completion zsh)"' >> ~/.zshrc ```