Skip to content

zchromeChrome DevTools Protocol for Zig

Native CDP client with zero external dependencies

zchrome

Quick Example

zig
const std = @import("std");
const cdp = @import("cdp");

pub fn main(init: std.process.Init) !void {
    const allocator = init.gpa;

    // Launch browser
    var browser = try cdp.Browser.launch(.{
        .headless = .new,
        .allocator = allocator,
        .io = init.io,
    });
    defer browser.close();

    // Create new page and navigate
    var session = try browser.newPage();
    var page = cdp.Page.init(session);
    try page.enable();

    _ = try page.navigate(allocator, "https://example.com");

    // Capture screenshot
    const screenshot = try page.captureScreenshot(allocator, .{ .format = .png });
    defer allocator.free(screenshot);
}

Supported Domains

DomainDescription
PageNavigation, screenshots, PDF generation
DOMDocument querying and manipulation
RuntimeJavaScript execution
NetworkRequest/response tracking
InputMouse and keyboard events
EmulationDevice and viewport emulation
FetchNetwork request interception
StorageCookies and local storage
TargetTab and target management
PerformancePerformance metrics
BrowserBrowser-level operations

Released under the MIT License.