Loading...
Loading...
Use when debugging web applications in chrome via the remote debugging protocol. Provides capabilities for inspecting DOM, executing JS, taking screenshots, and automating browser interactions.
npx skill4agent add zenobi-us/dotfiles chrome-debugmise x node@20 -- mcporter call chrome-devtools.list_pagesgoogle-chrome --remote-debugging-port=9222| Tool | Purpose |
|---|---|
| List all open pages/tabs |
| Select a specific page/tab to work with |
| Create a new browser page/tab |
| Close a browser page/tab |
| Navigate to a URL, back, forward, or reload |
| Take a DOM snapshot for inspection (returns UIDs) |
| Capture a screenshot of the current page |
| Click an element on the page |
| Fill input fields with text |
| Hover over an element |
| Press keyboard keys (Enter, Tab, Escape, etc.) |
| Execute JavaScript code in the page context |
| Wait for elements, navigation, or conditions |
| Get all console messages (logs, errors, warnings) |
| Get all network requests made by the page |
| Emulate device settings (network, CPU throttling) |
| Resize the browser viewport |
| Start performance tracing |
| Stop performance tracing and get results |
[!TIP] Get full tool list:mcporter list chrome-devtools --json | jq -r '.tools[] | [.name, .description] | @tsv' | column -t -s $'\t'
list_pagesselect_pagetake_snapshot--argsfilePathfullPagepageIdx--file-path--full-pageevaluate_scriptargs# List and select page
mise x node@20 -- mcporter call chrome-devtools.list_pages
mise x node@20 -- mcporter call chrome-devtools.select_page --args '{"pageIdx":0}'
# Take snapshot to get UIDs
mise x node@20 -- mcporter call chrome-devtools.take_snapshot
# Take screenshot
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --args '{"filePath":"./screen.png"}'
# Take full-page screenshot
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --args '{"filePath":"./full.png","fullPage":true}'
# Navigate to URL
mise x node@20 -- mcporter call chrome-devtools.navigate_page --args '{"type":"url","url":"http://localhost:3000"}'
# Navigate back/forward/reload
mise x node@20 -- mcporter call chrome-devtools.navigate_page --args '{"type":"back"}'
mise x node@20 -- mcporter call chrome-devtools.navigate_page --args '{"type":"reload"}'
# Click element (requires UID from snapshot)
mise x node@20 -- mcporter call chrome-devtools.click --args '{"uid":"12"}'
# Fill input field
mise x node@20 -- mcporter call chrome-devtools.fill --args '{"uid":"5","value":"test@example.com"}'
# Hover element
mise x node@20 -- mcporter call chrome-devtools.hover --args '{"uid":"8"}'
# Press key
mise x node@20 -- mcporter call chrome-devtools.press_key --args '{"key":"Enter"}'
# Run JavaScript
mise x node@20 -- mcporter call chrome-devtools.evaluate_script --args '{"function":"() => { return document.title }"}'
# Run JS with element argument
mise x node@20 -- mcporter call chrome-devtools.evaluate_script --args '{"function":"(el) => { return el.innerText }","args":[{"uid":"12"}]}'
# List console messages
mise x node@20 -- mcporter call chrome-devtools.list_console_messages
# List only errors
mise x node@20 -- mcporter call chrome-devtools.list_console_messages --args '{"types":["error"]}'
# List network requests
mise x node@20 -- mcporter call chrome-devtools.list_network_requests
# Filter network by type
mise x node@20 -- mcporter call chrome-devtools.list_network_requests --args '{"types":["fetch","xhr"]}'
# Wait for text to appear
mise x node@20 -- mcporter call chrome-devtools.wait_for --args '{"text":"Success"}'
# Emulate network conditions
mise x node@20 -- mcporter call chrome-devtools.emulate --args '{"networkConditions":"Slow 3G"}'# 1. Select page and take snapshot
mise x node@20 -- mcporter call chrome-devtools.list_pages
mise x node@20 -- mcporter call chrome-devtools.select_page --args '{"pageIdx":0}'
SNAPSHOT=$(mise x node@20 -- mcporter call chrome-devtools.take_snapshot)
echo "$SNAPSHOT"
# 2. Find element UID in snapshot output
# Example: uid=12 input type="email"
# 3. Interact with element using its UID
mise x node@20 -- mcporter call chrome-devtools.fill --args '{"uid":"12","value":"user@example.com"}'
mise x node@20 -- mcporter call chrome-devtools.click --args '{"uid":"15"}'# Take viewport screenshot
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --args '{"filePath":"./screen.png"}'
# Take full-page screenshot
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --args '{"filePath":"./full.png","fullPage":true}'
# Screenshot specific element
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --args '{"uid":"20","filePath":"./button.png"}'# Check console for errors
mise x node@20 -- mcporter call chrome-devtools.list_console_messages --args '{"types":["error","warn"]}'
# Check network requests
mise x node@20 -- mcporter call chrome-devtools.list_network_requests --args '{"types":["fetch","xhr"]}'# Execute JavaScript to get performance metrics
mise x node@20 -- mcporter call chrome-devtools.evaluate_script \
--args '{"function":"() => { const perf = performance.getEntriesByType(\"navigation\")[0]; return { loadTime: perf.loadEventEnd - perf.fetchStart, domInteractive: perf.domInteractive - perf.fetchStart }; }"}'# ❌ WRONG - CSS selectors don't work
mise x node@20 -- mcporter call chrome-devtools.click --selector "#login-button"
# ✅ CORRECT - Use UIDs from snapshot
mise x node@20 -- mcporter call chrome-devtools.take_snapshot # Get UIDs first
mise x node@20 -- mcporter call chrome-devtools.click --args '{"uid":"12"}'# After navigation, UIDs are invalid
mise x node@20 -- mcporter call chrome-devtools.navigate_page --args '{"type":"url","url":"..."}'
# Take fresh snapshot to get new UIDs
mise x node@20 -- mcporter call chrome-devtools.take_snapshot# ❌ WRONG - Individual flags don't work
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --file-path "./screen.png"
# ✅ CORRECT - Use --args with JSON
mise x node@20 -- mcporter call chrome-devtools.take_screenshot --args '{"filePath":"./screen.png"}'| Error | Solution |
|---|---|
| "Element not found" / "Invalid UID" | Take fresh snapshot: |
| "No page selected" | Select page: |
| "Connection refused" | Start Chrome: |
| Screenshot not created | Ensure directory exists and use |
| UIDs not working | UIDs expired after navigation - take new snapshot |
| Reference | When to Use |
|---|---|
| Element Interaction | When working with UIDs, clicking, hovering, or measuring elements |
| Form Filling | When filling forms, submitting data, or handling keyboard input |
| Screenshots | When capturing screenshots, visual testing, or documenting state |
| Performance | When measuring page performance, network timing, or emulating conditions |
| Debugging | When investigating console errors, network failures, or script evaluation |
| Navigation | When navigating pages, managing tabs, or handling viewports |
| Troubleshooting | When encountering errors or unexpected behavior |
[!IMPORTANT] Load references only when needed - Don't read all files upfront. Read the specific reference that matches your current task.