WebDriver BiDi is a proposed protocol that builds on and extends WebDriver. This article tries to explain the need for a new protocol and the testing challenges it aims to solve.
The working group behind this proposal includes participants from companies such as Google, Apple, Microsoft, Salesforce, the W3C organisation, and Mozilla Foundation. This ensures that all popular browser vendors are onboard and promises a bright future for the project.
Currently, the implementation status is not yet ready, and only minimal functionalities are available for testing. Nevertheless, the idea behind the new protocol is exciting and promises to improve automation tools in general.
What challenges is WebDriver BiDi trying to solve?
In an article on the Chrome Developers Blog, there is an overview of the evolution of test automation with the goal of examining the current state and starting point for WebDriver BiDi.
The journey before Selenium WebDriver became what we know it as today was a very long one. It started in the 90s, gained serious traction in the 2000s, and finally became a W3C standard in 2018. The technology behind WebDriver has also evolved over the years. In the beginning, Selenium was implemented not via APIs, but by injecting the script into the browser. Later on, it evolved to implementation via API calls, enabling automation of the browser from outside. This enabled Selenium WebDriver to establish itself as a reliable option for cross-browser testing, which was a rare case, especially during the time of Internet Explorer.
Over time, we have witnessed the evolution of web development with Node.js, supported by a variety of modern front-end frameworks. At the same time, there has been an evolution of test automation frameworks based on Selenium WebDriver, such as Selenium WebDriverIO, Nightwatch, and many others. While many users found the features and capabilities of Cypress and TestCafe attractive, these two testing frameworks are not built on Selenium WebDriver. Instead, they leverage web APIs and Node.js to execute directly in the browser.