cdp

MoonBit Chrome DevTools Protocol library

cdp
chrome-devtools-protocol
chrome
devtools
browser-automation
moon add justjavac/cdp@0.1.9
Download zip
Author
Version
0.1.9
License
MIT
Last updated
24 days ago
Downloads
5K

Dependencies

README

#justjavac/cdp

License: MIT Non-generated library coverage

MoonBit library for the Chrome DevTools Protocol (CDP).

#Features

  • Target parsing: 9222, host:port, HTTP discovery URLs, browser/page WebSocket URLs.
  • Discovery: /json/version, /json/list, /json/protocol.
  • Commands: raw, bundled-schema-validated, remote-schema-checked, generated typed builders.
  • Events: buffering, filtering, synchronous handlers.
  • Targets: browser-level Target.* helpers and flattened sessions.
  • Launch: optional Chrome/Edge/Chromium startup with remote debugging.

#Packages

PackagePurpose
justjavac/cdp/protocolWire types, bundled manifest, schema validation, remote schema diff.
justjavac/cdp/protocol/typedGenerated params, command builders, event builders, result decoders.
justjavac/cdp/clientDiscovery, WebSocket client, event buffer, target helpers, launch helpers.

#Docs

#Quick Start

Install deps:

moon install

Start Chrome with remote debugging:

chrome --remote-debugging-port=9222 --user-data-dir=/tmp/mbt-cdp-profile

PowerShell:

& "C:\Program Files\Google\Chrome\Application\chrome.exe" ` --remote-debugging-port=9222 ` --user-data-dir="$env:TEMP\mbt-cdp-profile"

Browser-level command:

let target = @client.parse_cdp_target("9222")
let browser = @client.connect_cdp_browser_target(target)
defer browser.close()

let response = browser.send_schema_command("Browser.getVersion")
println(@client.cdp_response_result_json(response).stringify())

Page-level command:

let page = @client.connect_cdp_page_target(@client.parse_cdp_target("9222"))
defer page.close()

let response = page.send_schema_command(
"Runtime.evaluate",
params={
"expression": "1 + 1",
"returnByValue": true,
},
)
println(@client.cdp_response_result_json(response).stringify())

Typed command builders live in justjavac/cdp/protocol/typed, for example @typed.runtime_evaluate_command.

#Command Modes

  • Raw: send_cdp_command + recv_cdp_response.
  • Schema-aware: send_schema_command.
  • Remote-schema-aware: send_remote_schema_command.
  • Typed: generated builders + send_cdp_message.

#Examples

$env:MBT_CDP_TARGET = "9222" $env:MBT_CDP_EXAMPLE = "discover_version" moon -C examples run cmd $env:MBT_CDP_EXAMPLE = "runtime_evaluate" moon -C examples run cmd

#Checks

moon test node tools/check_non_generated_coverage.mjs 100

Opt-in real-browser E2E:

$env:MBT_CDP_E2E = "1" $env:MBT_CDP_TARGET = "9222" moon test client --filter "*real Chrome CDP E2E*"

#License

MIT. See LICENSE.

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io