Browser automation evolved from JavaScript injection (Selenium RC) to HTTP-based native control (WebDriver) to persistent WebSocket-based control (Playwright).
Playwright's architectural advantages --- auto-waiting, browser contexts, trace viewer --- are consequences of its protocol design, not features bolted on top.
Flakiness is the central enemy of browser automation. Most flakiness is architectural, not inevitable.
WebDriver BiDi is shipping today --- low-level in Selenium 4.x (roughly 70% of the CDP surface) and the default protocol in WebdriverIO v9 --- but Selenium is still on the 4.x line as of July 2026, and Playwright's high-level advantages remain available now.
Tool selection should be based on architecture and team context, not popularity or tradition.