Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Microsoft Playwright BidiOverCdp

From Leeroopedia
Knowledge Sources
Domains BiDi, CDP
Last Updated 2026-02-12 00:00 GMT

Overview

Concrete tool for bridging the WebDriver BiDi protocol over Chrome DevTools Protocol (CDP) for Chromium browsers provided by the Playwright library.

Description

The `connectBidiOverCdp` function creates a BiDi protocol transport layer on top of an existing CDP connection using the `chromium-bidi` library. It instantiates a `BidiServer` (from chromium-bidi's `BidiMapper`) that translates between BiDi commands and CDP commands. The module defines internal adapter classes: `BidiTransportImpl` bridges BiDi messages between the server and the returned `BidiConnection`, `CdpTransportImpl` wraps the raw CDP transport for the mapper, and `BidiConnection` implements `ConnectionTransport` to expose the BiDi connection as a standard Playwright transport.

Usage

Use BidiOverCdp when Playwright needs to communicate with Chromium browsers using the BiDi protocol, since Chromium does not natively support BiDi and requires this CDP-to-BiDi translation layer.

Code Reference

Source Location

Signature

export async function connectBidiOverCdp(cdp: ConnectionTransport): Promise<ConnectionTransport>;

Import

import { connectBidiOverCdp } from '../server/bidi/bidiOverCdp';

I/O Contract

Inputs

Name Type Required Description
cdp ConnectionTransport Yes The raw CDP transport connected to a Chromium browser

Outputs

Name Type Description
transport ConnectionTransport A BiDi protocol transport wrapping the CDP connection

Usage Examples

import { connectBidiOverCdp } from '../server/bidi/bidiOverCdp';

// Given a raw CDP transport to a Chromium browser
const bidiTransport = await connectBidiOverCdp(cdpTransport);
// bidiTransport can now be used to send/receive BiDi protocol messages
bidiTransport.onmessage = (message) => handleBidiMessage(message);
bidiTransport.send(JSON.stringify({ method: 'browser.close', params: {} }));

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment