Execute browser debug steps using Chrome DevTools MCP. Navigate to URL, capture baseline snapshots/screenshots, perform interactions (click, fill, hover, press_key), collect console messages and network requests, validate results. Use when executing planned debug interactions with visual/DOM evidence capture.
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Purpose: Execute debug plan using Chrome DevTools MCP tools with evidence capture Trigger: After debug-plan and chrome-devtools-testing complete Input: Debug plan (URL, interactions, expectations) Output: Evidence bundle (screenshots, snapshots, console logs, network requests, validation results)
Navigate to target URL:
navigate_page(url) MCP toolCapture baseline state:
take_snapshot() to capture initial DOM structuretake_screenshot() to capture initial visual stateFor each interaction in the debug plan:
a. Execute Interaction:
click(element) - Click element (button, link, etc.)fill(element, text) - Input text into fieldhover(element) - Hover over elementpress_key(key) - Keyboard input (Enter, Escape, Tab, etc.)b. Capture Post-Interaction Evidence:
take_screenshot() to capture visual state after interactiontake_snapshot() to capture DOM changesc. Validate Interaction Result:
After all interactions complete:
Collect console messages:
list_console_messages() to retrieve all console outputCollect network activity:
list_network_requests() to retrieve all network requestsCompare results to debug plan expectations:
Generate validation summary:
Organize all captured evidence:
Evidence Bundle:
- Baseline: screenshot + snapshot
- Interactions: [
{step: 1, action: "click login", screenshot, snapshot},
{step: 2, action: "fill email", screenshot, snapshot},
{step: 3, action: "submit form", screenshot, snapshot}
]
- Console: {errors, warnings, logs}
- Network: {requests, failures, slow}
- Validation: {met, failed, unexpected}
plan = {url, interactions, expectations}
evidence = {baseline: {}, interactions: [], console: [], network: [], validation: {}}
// Step 1: Navigate and baseline
navigate_page(plan.url)
evidence.baseline.snapshot = take_snapshot()
evidence.baseline.screenshot = take_screenshot()
// Step 2: Execute interactions
for each interaction in plan.interactions:
// Execute
result = execute_mcp_tool(interaction.type, interaction.params)
// Capture evidence
screenshot = take_screenshot()
snapshot = take_snapshot()
evidence.interactions.push({
step: interaction.step,
action: interaction.description,
screenshot: screenshot,
snapshot: snapshot,
status: result.status
})
// Validate
validation = compare_to_expected(interaction.expected, snapshot, screenshot)
evidence.validation.interactions.push(validation)
// Step 3: Collect diagnostics
evidence.console = list_console_messages()
evidence.network = list_network_requests()
// Step 4: Final validation
evidence.validation.summary = validate_against_expectations(plan.expectations, evidence)
return evidence
| Tool | Purpose | Parameters |
|---|---|---|
navigate_page | Navigate to URL | url: string |
take_snapshot | Capture DOM structure | None |
take_screenshot | Capture visual state | None |
click | Click element | element: selector/coords |
fill | Input text | element, text |
hover | Hover over element | element: selector/coords |
press_key | Keyboard input | key: string |
list_console_messages | Get console logs | None |
list_network_requests | Get network activity | None |
Compare to expectations:
for each expectation in plan.expectations:
if expectation.type == "visual":
check screenshots for expected change
if expectation.type == "dom":
check snapshots for expected elements/attributes
if expectation.type == "console":
check console logs for expected messages/errors
if expectation.type == "network":
check network requests for expected calls/responses
record validation.status (pass/fail)
record validation.details (what matched/failed)
Categorize findings:
{
"url": "http://localhost:5173/login",
"navigation": { "status": "success", "timestamp": "2025-01-15T10:30:00Z" },
"baseline": {
"screenshot": "baseline.png",
"snapshot": "baseline-dom.json",
"timestamp": "2025-01-15T10:30:01Z"
},
"interactions": [
{
"step": 1,
"action": "Click login button",
"type": "click",
"element": "#login-btn",
"status": "success",
"screenshot": "step-1-after.png",
"snapshot": "step-1-dom.json",
"validation": {
"status": "pass",
"details": "Button clicked, form submitted"
}
}
],
"console": {
"errors": ["Uncaught TypeError at login.js:42"],
"warnings": ["Deprecated API usage"],
"logs": ["User login initiated"],
"count": { "error": 1, "warning": 1, "log": 1 }
},
"network": {
"requests": [
{
"url": "/api/auth/login",
"method": "POST",
"status": 200,
"duration": 150
}
],
"failures": [],
"slow": []
},
"validation": {
"summary": {
"total": 5,
"met": 4,
"failed": 1,
"unexpected": 0
},
"critical": ["Console error: Uncaught TypeError"],
"warnings": ["Deprecated API usage"],
"info": ["Login flow completed in 2.5s"]
}
}
On navigation failure:
On interaction failure:
On MCP tool failure:
Called by: /debug command (Phase 3) Requires: chrome-devtools-testing (MCP connection verified) Calls: Chrome DevTools MCP tools (navigate_page, click, fill, take_screenshot, etc.) Next phase: report-phase (format evidence into debug report)
/debug "test login form validation"
Debug Plan:
URL: http://localhost:5173/login
Interactions:
1. Fill email with invalid format
2. Click submit
3. Check for validation error
Expectations:
- Validation error displayed
- Form not submitted
- No console errors
Debug Execution (this skill):
→ navigate_page(http://localhost:5173/login)
→ take_snapshot() - baseline DOM
→ take_screenshot() - baseline visual
→ fill(#email, "invalid-email")
→ take_screenshot() - after fill
→ take_snapshot() - DOM state
→ click(#submit-btn)
→ take_screenshot() - after submit
→ take_snapshot() - validation error visible
→ list_console_messages() - no errors (✓)
→ list_network_requests() - no requests (✓)
Validation:
✓ Validation error displayed
✓ Form not submitted (no POST request)
✓ No console errors
Output: Evidence bundle with 3 screenshots, 3 snapshots, console logs, network logs