WebDriver BiDi support

WebDriver BiDi is a new cross-browser automation protocol currently under development, aiming to combine the best of both WebDriver “Classic” and CDP. WebDriver BiDi enables bi-directional communication, making it fast by default, and it comes packed with low-level control.

Automate with Chrome and Firefox

Puppeteer supports WebDriver BiDi automation with Chrome and Firefox. When launching Firefox with Puppeteer, the WebDriver BiDi Protocol is enabled by default. When launching Chrome, CDP is still used by default since not all CDP features are supported by WebDriver BiDi yet. If a certain Puppeteer feature is not supported over WebDriver BiDi yet, UnsupportedOperation error is thrown. Also see the lists below on what is supported with WebDriver BiDi.

Get started

Below is an example of launching Firefox or Chrome with WebDriver BiDi:

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Puppeteer features not supported over WebDriver BiDi

Puppeteer features fully supported over WebDriver BiDi

See also