Overview
Implement a WebSocket client that speaks Chrome DevTools Protocol JSON-RPC.
Tasks
- Implement WebSocket connection to Chrome CDP endpoint (
ws://host:port/devtools/browser/...)
- JSON-RPC message framing:
{id, method, params} → {id, result} / {id, error}
- Async event handling for CDP events (e.g.,
Page.loadEventFired)
- Auto-incrementing message IDs (atomic counter)
- Pending response map:
AutoHashMap(u32, *ResponsePromise)
- Connection lifecycle: connect, reconnect, close
- CDP domain helpers:
Page.navigate, Runtime.evaluate, DOM.getDocument, Accessibility.getFullAXTree
Reference
- Pinchtab uses Go's
chromedp library wrapping CDP
- We implement raw CDP over WebSocket for zero-overhead
Acceptance Criteria
- Can connect to a running Chrome instance
- Can send
Target.getTargets and parse response
- Can navigate to a URL and wait for load
- Unit tests with mock WebSocket server
Overview
Implement a WebSocket client that speaks Chrome DevTools Protocol JSON-RPC.
Tasks
ws://host:port/devtools/browser/...){id, method, params}→{id, result}/{id, error}Page.loadEventFired)AutoHashMap(u32, *ResponsePromise)Page.navigate,Runtime.evaluate,DOM.getDocument,Accessibility.getFullAXTreeReference
chromedplibrary wrapping CDPAcceptance Criteria
Target.getTargetsand parse response