Architecture and Protocol

How each end-to-end testing tool actually communicates with and controls the browser.

Playwright

Uses its own custom browser protocol, communicating directly with patched builds of Chromium, Firefox, and WebKit, which is a large part of why it can offer consistent behavior across all three.

Cypress

Runs inside the browser alongside the application under test, executing commands in the same run loop as the app itself rather than driving the browser from an entirely separate process.

Selenium

Uses the standardized W3C WebDriver protocol (increasingly with WebDriver BiDi for richer bidirectional communication), talking to a separate browser driver executable for each browser.

Puppeteer

Uses the Chrome DevTools Protocol (CDP) directly, giving fine-grained control specifically over Chromium-based browsers.

WebdriverIO

Supports both the WebDriver protocol and Chrome DevTools Protocol, letting teams choose the standardized cross-browser approach or CDP’s deeper Chromium-specific control as needed.

TestCafe

Uses neither WebDriver nor CDP — it works by injecting a proxy script into the page itself, intercepting and controlling behavior directly in the browser without an external automation protocol.