WebDriver-BiDi defines a WebSockets-based bidirectional protocol for external tools to interact with and control a web browser. The initial target use case is automated testing of web applications.
The WebDriver “Classic” specification implemented by major browser engines lacks bidirectional capabilities, making it difficult to test contemporary web applications, which are often highly interactive and event-driven. Consequently modern testing tools (e.g. Puppeteer, Playwright, Cypress) have been written on top of browser-specific proprietary protocols which provide a bidirectional communications model. Tools designed around the WebDriver standard (e.g. Selenium) have also begun to implement new functionality that depends on browser-specific protocols because of this limitation in the architecture of the existing specification.
The widespread use of browser-specific protocols for remote automation and testing makes it harder for web developers to write tests across multiple browsers. This in turn disadvantages implementations of the web platform that don't enjoy specific support from popular testing tools, and makes it more likely that users will run into content that doesn't work in their choice of user agent.
WebDriver-BiDi aims at providing a standard & cross-browser alternative to those browser-specific protocols, allowing testing tools to work with any compliant implementation.
The specification already includes a solid core as well as brand new features that weren’t feasible to design within the WebDriver Classic protocol (such as Logging). Additional modules with commands & events are under active development.
WebKittens
@gsnedders
Title of the spec
WebDriver BiDi
URL to the spec
https://w3c.github.io/webdriver-bidi/
URL to the spec's repository
https://github.com/w3c/webdriver-bidi
Issue Tracker URL
https://github.com/w3c/webdriver-bidi/issues
Explainer URL
https://github.com/w3c/webdriver-bidi/blob/main/explainer.md
TAG Design Review URL
https://github.com/w3ctag/design-reviews/issues/869
Mozilla standards-positions issue URL
https://github.com/mozilla/standards-positions/issues/632
WebKit Bugzilla URL
No response
Radar URL
No response
Description
WebDriver-BiDi defines a WebSockets-based bidirectional protocol for external tools to interact with and control a web browser. The initial target use case is automated testing of web applications.
The WebDriver “Classic” specification implemented by major browser engines lacks bidirectional capabilities, making it difficult to test contemporary web applications, which are often highly interactive and event-driven. Consequently modern testing tools (e.g. Puppeteer, Playwright, Cypress) have been written on top of browser-specific proprietary protocols which provide a bidirectional communications model. Tools designed around the WebDriver standard (e.g. Selenium) have also begun to implement new functionality that depends on browser-specific protocols because of this limitation in the architecture of the existing specification.
The widespread use of browser-specific protocols for remote automation and testing makes it harder for web developers to write tests across multiple browsers. This in turn disadvantages implementations of the web platform that don't enjoy specific support from popular testing tools, and makes it more likely that users will run into content that doesn't work in their choice of user agent.
WebDriver-BiDi aims at providing a standard & cross-browser alternative to those browser-specific protocols, allowing testing tools to work with any compliant implementation.
The specification already includes a solid core as well as brand new features that weren’t feasible to design within the WebDriver Classic protocol (such as Logging). Additional modules with commands & events are under active development.
Both Chrome/ChromeDriver 106 and Firefox 102 shipped support for the WebDriver BiDi standard in 2022.