Skip to content

CDP WebSocket Client: pure Zig Chrome DevTools Protocol client #2

@justrach

Description

@justrach

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions