Next-Gen App & Browser Testing Cloud
Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

On This Page
Discover WebDriver BiDi, a novel browser automation protocol bridging unidirectional automation with dynamic bidirectional interaction.

TestMu AI
January 30, 2026
Traditional browser automation protocols like WebDriver ‘Classic’ and Chrome DevTools Protocol (CDP) have been widely used for automating browser interactions. These protocols have limitations in terms of communication efficiency and smooth control.
This has led us to a more advanced solution that combines the strengths of both protocols. As the field of automation continues to evolve, there is a need for growing standards to revolutionize how frameworks and browsers interact. WebDriver BiDi is an emerging browser automation protocol that aims to bridge the gap between traditional unidirectional automation and the need for more dynamic bidirectional communication.
In this session, the speaker has covered the process of making WebDriver BiDi transform cross-browser testing, its benefits, and how it can be used in Selenium WebdriverIO.
Sri Harsha is a well-versed software professional working as a Senior Test Automation Engineer at EPAM SYSTEMS. He is an expert in testing, focused on tools like Selenium and WebdriverIO. Harsha is also passionate about open-source projects and contributing to the testing community.
In this incredible session of the Testμ Conference 2023, Sri Harsha explained the working of classic WedDriver to WebDriver BiDi and walked through the difference between them and the benefits of the WebDriver over CDP and how this combination helped emerger WebDriver BiDi.
If you couldn’t catch all the sessions live, don’t worry! You can access the recordings at your convenience by visiting the TestMu AI YouTube Channel.
Let’s dive into the session in detail.
The agenda of this session planned by the Harsha was as follows:
WebDriver BiDi (Bidirectional) is a protocol that facilitates communication between a WebDriver client and a remote WebDriver server, enabling the automation of browser interactions and actions. This protocol allows for two-way communication, where both the client and the server can send requests and responses to each other.
Further, Harsha discussed using WebDriver BiDi in automation like Selenium and WebdriverIO.
Harsha walked us through the entire process and history of automation and explained WebDriverBiDi.

Many tools are in the market, but Harsha only focuses on automation tools that use WebDriver Classic.
These tools are high-level automation tools that use WebDriver Classic.
Web Driver isn’t the sole protocol for browser automation, given that web development and technologies have become integral to our daily lives. Alongside this, there has been a significant demand for JavaScript creation scripts.
Other sets of protocols can be used to automate browser testing. The protocols that are covered by Harsha in this session are Web API and CDP.
The emergence of WebDriver BiDi marks a significant step forward in browser automation. While WebDriver has long been the standard, modern demands—especially the rise of JavaScript-heavy applications—have prompted the exploration of other protocols like CDP and Web APIs, as discussed by Harsha in this session.
Adding to this conversation, industry expert Christian shares his perspective on how BiDi, agentic workflows, and the Model Context Protocol (MCP) are shaping the next generation of intelligent browser automation. From challenges to potential breakthroughs, his insights offer a practical look at where browser standards are headed.
Cypress uses Web APIs directly and bypasses WebDrivers to interact with the browser; it leverages the native JavaScript and modern browser automation APIs for fast and reliable end-to-end testing.
For example, Harsha demonstrated the button’s working in Cypress Code standard.

Cypress Code for Button using Click():

Puppeteer uses CDP to programmatically control Chrome and Chrome-based browsers for web automation and testing.
For example, Harsha demonstrated the working of the button written in CDP commands.


| Web Driver Classic | CDP |
|---|---|
| The standard protocol that supports all browsers. | Supported only Chrome-based browsers. |
| Communicates via an HTTP request. | Communicates via WebSockets. |
| Does not support low-level controls. | Supports low-level controls. |
There are also some limits to using WebDriver that Harsha highlighted.
Wondering what is the necessity to have WebDriver BiDi? Sri Harsha deep dives into the limitations of WebDriver Classic as well as CDP – limitations of which are overcome using BiDi pic.twitter.com/CcdRXHwOjq
— LambdaTest (@testmuai) August 22, 2023

Because CDP is explicitly designed for Chrome-based browsers, it cannot be directly utilized by other browsers. Because each browser has its unique interface or protocol that is not shared.
Switching between various Chrome versions using CDP might lead to changes, and some features could become outdated, impacting how well older versions are supported.
To overcome the limitation, there was a new protocol introduced called WebDriver BiDi, as the tester finds the need where they can leverage both the WebDriver Classic and CDP to gather and become a better process. Hence, the need for WebDriver BiDi.
WebDriver BiDi represents a fresh standard protocol that blends elements from the traditional WebDriver and CDP, and there isn’t a substantial difference between the classic WebDriver and CDP when compared to WebDriver BiDi since this protocol is built upon the foundation of the classic WebDriver.

As WebDriver BiDi is the new standard protocol course, they have benefits, which Harsha discusses further.

WebDriver BiDi enables bidirectional communication, allowing the browser to send real-time updates to the test script, improve synchronization, and make tests faster and more reliable.
WebDriver BiDi enables Low-Level Controls, enabling interactions, complex scenarios simulation, and thorough testing, which are mainly useful for JavaScript-heavy or browser-specific features in web applications.
This follows W3C standards, enabling cross-browser compatibility and allowing the same test scripts to automate tests across multiple browsers without significant modifications.
Low-level controls can control and interact with various aspects of a browser.
Listens to JS errors, allowing real-time detection and reporting and improving debugging capabilities during test execution.
Listen to console logs, allowing real-time capturing and analysis of console logs, helping debug and log during test execution.
Allows monitoring and reacting to changes in DOM, facilitating dynamic web application testing and validation.
Enables capturing and manipulating network requests, reducing advanced testing and analysis of web applications performance.
Check the current status of WebDriver BiDi. These are the current implementations of WebDriver BiDi. The chart below shows the real-time updates from the web applications.

Follow the code snippet to implement the WebDriver BiDi in Selenium.

The line of code responsible for implementing is by adding the following capabilities.

Here, the code enables the WebSockets, which is set to be true, to build a connection in the backend. Now, with this connection, you can listen to logs or JS errors.
Second, Harsha tries to start the server with WebSocket.

Then, the code tries to inspect the console logs displayed in the developer panel.

The code will visit the URL mentioned. This URL consists of some buttons based on the console log errors and getting the result in the browser console, which we will cover further.

Then, the console log entry is fetched using the WebDriver BiDi.

The URL consists of a button for explanation purposes. Each click on the button displays the log in the console logs area of the developer panel.



The code of WebDriver BiDi is written in a key-value pair.

You can see the first code set where the connection with WebDriver BiDi is built with some capabilities, as mentioned in the code.

In the next set of codes, the server is getting started with the WebSocket, but you need to subscribe to the sessions to log the entry.

With the help of the next line of the code, the results are captured and stored in the sample log error.

Now that the log error is captured, the same tries to fetch the same on the following line of the code from the console log.

When you execute the code, you will have the WebDriver BiDi process, as shown below.
Using WebDriver BiDi, you will get detailed information on the command you previously executed. The below screen appears when a WebDriver BiDi connection is built into the backend.


Unlike selenium, the result of the WebDriver BiDi is in JSON format, giving you a complete insight into your execution process.

Some of the concerns presented by the Harsha
Harsha: Playwright’s WebSocket API enables direct interaction with the WebSocket endpoint during browser automation. In contrast, Web Platform Tests validate the browsers with web standards through test cases.
Harsha: WebDriver BiDi may automatically incorporate self-healing elements to handle minor script failures and continue execution without manual intervention.
Harsha: The end of WebDriver BiDi includes hypothetical improvement, increased adoption, and improved browser automation. Chrome DevTools Protocol (CDP) might continue to coexist with WebDriver BiDi because they serve different purposes, with CDP focusing on debugging and inspection while WebDriver BiDi is for browser automation. Both can complement each other to provide a comprehensive toolkit for developers and testers.
Feel free to post more questions on the TestMu AI Community.
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance