QA Engineer Skills 2026QA-2026Evolution: From Selenium to WebDriver BiDi

Evolution: From Selenium to WebDriver BiDi

The Timeline

2004 ──── Selenium 1.0 (JavaScript injection)
   │
2011 ──── Selenium 2.0 / WebDriver (HTTP + JSON)
   │
2017 ──── Chrome DevTools Protocol (CDP) gains traction
   │      Puppeteer launches (CDP-based)
   │
2018 ──── WebDriver becomes W3C standard
   │
2020 ──── Playwright launches (CDP-based, multi-browser)
   │
2021 ──── WebDriver BiDi work begins at W3C
   │
2023 ──── Puppeteer adds BiDi support
   │
2024 ──── Selenium 4 integrates BiDi
   │
2025 ──── Vibium launches (BiDi-native)
   │      Playwright MCP server ships
   │
2026 ──── BiDi ecosystem matures
         CLI + Skills pattern emerges for AI agents

Fun fact: Vibium is created by the same person who created Selenium (2004) and Appium (2012).


Era 1: Selenium and JavaScript Injection (2004-2011)

How It Worked

Selenium injected JavaScript into the browser to simulate user actions. A Java-based "Selenium RC" server acted as a proxy.

Test Script → Selenium RC Server → Injected JS in Browser

Problems

  • Same-Origin Policy: JavaScript couldn't cross domain boundaries
  • Browser security: Increasingly restricted what injected JS could do
  • Fragile: Depended on browser internals that changed frequently
  • Slow: HTTP round trips for every action

Era 2: WebDriver and Native Browser APIs (2011-2017)

How It Worked

Each browser vendor provided a "driver" binary (chromedriver, geckodriver) that used native browser APIs to control the browser. Communication was HTTP + JSON.

Test Script ──HTTP──► ChromeDriver ──Native API──► Chrome

The WebDriver Protocol (W3C Standard, 2018)

POST /session                          → Create session
POST /session/{id}/url                 → Navigate
POST /session/{id}/element             → Find element
POST /session/{id}/element/{id}/click  → Click element
POST /session/{id}/element/{id}/value  → Type text
GET  /session/{id}/screenshot          → Take screenshot
DELETE /session/{id}                   → Close session

Advantages Over Selenium 1

  • Native control: No JavaScript injection needed
  • Cross-domain: No same-origin restrictions
  • Standardized: W3C standard, all browsers implement it
  • Reliable: Using browser's own APIs

Limitations

  • Unidirectional: Client asks, browser answers. No events.
  • Coarse-grained: Limited to what the spec defines
  • No real-time: Can't listen for console logs, network events, etc.
  • Polling required: To detect page changes, must repeatedly ask

Era 3: Chrome DevTools Protocol — CDP (2017-present)

How It Worked

Chrome exposed its developer tools interface as a WebSocket API. Puppeteer (Google) and Playwright (Microsoft) built on this.

Test Script ──WebSocket──► Chrome (DevTools)

What CDP Enabled

// Bidirectional: Browser pushes events
{"method": "Console.messageAdded", "params": {"message": {"text": "error!"}}}

// Network interception
{"method": "Network.requestWillBeSent", "params": {"request": {"url": "..."}}}

// DOM manipulation
{"method": "DOM.getDocument", "params": {}}

// Performance profiling
{"method": "Performance.getMetrics", "params": {}}

Advantages Over WebDriver

  • Bidirectional: Events push from browser to client
  • Rich: Network, performance, DOM, coverage, accessibility
  • Fast: WebSocket is lower overhead than HTTP

Problems

  • Chrome-only: CDP is Chrome's internal protocol
  • Unstable: Google can change it without notice (it's "internal")
  • Browser-specific: Playwright had to write separate backends for Firefox, WebKit
  • Vendor lock-in: Your tests depend on a Google-controlled protocol

Playwright's Workaround

Playwright abstracts CDP (Chrome), a patched Firefox protocol, and WebKit's debugging protocol behind a unified API. This is impressive engineering but creates a maintenance burden — Playwright must track internal changes in three browsers.


Era 4: WebDriver BiDi (2021-present)

The Best of Both Worlds

Feature WebDriver CDP BiDi
Standardized W3C No (Chrome internal) W3C
Bidirectional No Yes Yes
Cross-browser Yes No (Chrome only) Yes
Events No Yes Yes
Transport HTTP WebSocket WebSocket
Stability Stable (standard) Unstable (internal) Stable (standard)

How BiDi Solves CDP's Problems

  1. Standardized by W3C — Browser vendors commit to implementing it
  2. Cross-browser by design — Chrome, Firefox, Safari, Edge all participate
  3. Stable API contract — Changes go through a standards process
  4. Same power as CDP — Events, network, scripting, input

Current Browser Support (2026)

Browser Status Notes
Chrome Full support Via chromedriver
Firefox Full support Native (no separate driver!)
Edge Full support Chromium-based
Safari Partial Improving each release

Where Vibium Fits

Vibium is BiDi-native from day one. It doesn't abstract over CDP or legacy WebDriver — it speaks BiDi directly.

Traditional stack:           Vibium stack:

Test → Playwright → CDP      Test → Vibium → BiDi
       Playwright → Firefox         (same protocol for all browsers)
       Playwright → WebKit

Advantages

  • No abstraction overhead — BiDi is the protocol, not a compatibility layer
  • Future-proof — As BiDi improves, Vibium improves
  • Cross-browser potential — When Safari completes BiDi support, Vibium works there
  • Simple — One protocol, one implementation, one binary

The Trade-off

  • BiDi is newer than CDP — some advanced features (network interception, coverage) are still being standardized
  • Chrome's CDP is more feature-rich today — but it's not standardized
  • Playwright's CDP-based approach gives you more features now at the cost of vendor dependency

Impact on Test Automation Strategy

For Architects Choosing a Stack

If You Need... Choose Why
Maximum features now Playwright (CDP) Most mature feature set
Standards compliance Vibium (BiDi) W3C standard, vendor-neutral
AI agent integration Vibium (skill) Token-efficient, agent-native
Cross-browser testing BiDi-based (long term) Native cross-browser support
Enterprise stability Selenium 4 (BiDi migration) Existing ecosystem + BiDi path

The Convergence

All major tools are converging on BiDi:

  • Selenium 4 is adding BiDi support
  • Puppeteer has BiDi mode
  • Playwright acknowledges BiDi as the future direction
  • Vibium is BiDi-native

Within 2-3 years, BiDi will likely be the dominant protocol, making the CDP vs BiDi debate moot.


Interview Talking Point

"Browser automation has evolved through four eras. Selenium 1 used JavaScript injection, WebDriver added native browser APIs over HTTP, CDP brought bidirectional WebSocket communication but was Chrome-specific and unstable, and now WebDriver BiDi combines standardization with bidirectionality. Vibium chose to build on BiDi from day one rather than abstracting over CDP — which means one protocol, one implementation, and native cross-browser support as browsers complete their BiDi implementations. It's the same creator who started Selenium in 2004, now building on the protocol that succeeds it. The trade-off is that BiDi's feature set is still catching up to CDP in some areas, but the standards trajectory is clear."