Playwright vs Cypress vs Selenium in 2026: the MCP axis nobody charts

Every other 2026 comparison on these three frameworks ranks them on browser support, language bindings, parallelism, and IDE tooling. Those rows have all converged. The row that flipped this year is whether the framework's own maintainers ship an MCP server that lets an AI agent drive a real browser. Microsoft ships @playwright/mcp. Cypress shipped a Cloud MCP in March 2026 for reading test-run history. Selenium has no first-party MCP. That single row decides most greenfield 2026 picks.

Direct answer (verified 2026-05-07)

For new web E2E suites in 2026, pick Playwright. It is the only one of the three with an officially maintained browser-driving MCP server (@playwright/mcp from the same Microsoft team that ships @playwright/test). Cypress's official Cloud MCP (March 2026) reads test-run history; it does not click buttons. The proposal for a browser-driving @cypress/mcp is Issue #33412 and is open. Selenium has no first-party MCP; the community implementations work, with no SeleniumHQ maintenance backstop. Stay on Cypress or Selenium only when your existing investment outweighs the AI-agent ergonomics gain. Authoritative sources: microsoft/playwright-mcp, npmjs.com/package/@playwright/mcp.

M
Matthew Diakonov
9 min read
4.8from independently verified May 2026
@playwright/mcp 0.0.70 published on the @playwright npm scope, microsoft/playwright-mcp repo
Cypress Cloud MCP (March 2026) is run-history only; Issue #33412 tracks the missing browser-driving server
No first-party Selenium MCP; community shims (mcp-selenium, selenium-mcp-server) carry no SLA

The three frameworks, scored on the row that flipped

Treat the rest of the comparison (browsers, languages, parallelism) as a tie. Every framework runs Chromium, every framework can shard, every framework has a TypeScript or JavaScript path. The decisive row in 2026 is whether the maintainers themselves ship the bridge an AI agent uses to drive the browser.

Playwright

First-party browser-driving MCP

@playwright/mcp ships from microsoft/playwright-mcp on the same release cadence as Playwright itself. Tools: navigate, snapshot, click, type_text, select_option, scroll, press_key, wait, screenshot, evaluate. Verdict on the 2026 axis: yes.

Cypress

Cloud MCP only, browser-driving open

Cypress Cloud MCP (March 2026) connects an AI agent to the Cypress Cloud MCP endpoint to query run statuses, flaky tests, Test Replay links. It reads history; it does not click. A first-party browser-driving server is proposed in Issue #33412. Verdict: partial.

Selenium

No first-party MCP, community covers

SeleniumHQ ships no MCP. Community implementations exist (Angie Jones's mcp-selenium, naveenanimation20/selenium- mcp, PyPI selenium-mcp-server, released April 2026). All MIT, no maintenance SLA. Verdict on the 2026 axis: no, with community workarounds.

1 of 3

Pick the framework whose vendor is on the hook to keep MCP working when the next major version drops. That is what 'first-party' means and that is the warranty other vs pages skip.

The 2026 framework selection note

What an AI agent actually does on a Playwright run

The diagram below is not abstract; it is what happens on every scenario step in Assrt, which is built on top of @playwright/mcp. The agent reads a Markdown plan, snapshots the accessibility tree, picks an element ref, calls a primitive, and Playwright executes the real call against real Chromium. The same shape of diagram for Cypress today would have a community shim in the middle box; for Selenium it would have a community shim plus a WebDriver hop. Drawing it makes the asymmetry concrete.

Markdown plan, AI agent, @playwright/mcp, real Chromium

tests/checkout.md
App URL
Model key
@playwright/mcp
Real Chromium
results/latest.json
screenshots/
recording.webm

Anchor fact: the dependency that proves the framework choice

A common pushback on this kind of vs page is that the differences are rhetorical. Here is the part that is not. Assrt is a real shipped runtime; its package.json declares @playwright/mcp ^0.0.70 as a hard dependency. On startup, the runtime calls require_.resolve("@playwright/mcp/package.json") inside assrt-mcp/src/core/browser.ts near line 284 and spawns it as a child process over stdio. If @playwright/mcp is missing, the runtime errors before the first scenario starts. This dependency cannot be redirected to a Cypress MCP (no first-party browser-driving server exists) or a Selenium MCP (no first-party server exists at all). Anyone who proposes "just port it" would have to ship the missing MCP themselves, or wire the agent to a community shim with no maintenance backstop. That is the load-bearing version of this comparison.

dependency, resolution, run

Before and after the new axis

Two snapshots of the same comparison. The 2024 view weighs the conventional axes; the 2026 view weighs the MCP row. Toggle them and watch the verdict move.

Same three frameworks, two scoring eras

Playwright wins on auto-waits and cross-browser reach. Cypress wins on developer experience and time-travel debugging. Selenium wins on language reach and Grid maturity. Verdict is taste-driven; all three remain defensible.

  • Browser support tied (all cover Chromium)
  • Authoring ergonomics: Cypress and Playwright neck and neck
  • Cross-language: Selenium leads
  • AI agent fitness: not yet on the rubric

The agent loop that needs an MCP, drawn step by step

One click in an AI-driven test is not one call. It is snapshot, pick a ref, click, observe. If the framework you picked does not ship that loop natively, every step of it is your problem. The diagram below is the loop running through @playwright/mcp; the equivalent for Cypress today and Selenium today routes through a shim, which means a fourth box (and a fifth team) in the chain.

A click, end to end through @playwright/mcp

AI agentAssrt runtime@playwright/mcpChromium pagetool: snapshotMCP: snapshota11y tree dump{ refs: [...] }snapshot resultrefs to choose fromtool: click ref=e14MCP: click ref=e14real Playwright clicknavigation eventclick resultok, continue

What each framework actually gives you in 2026

Five tiles. Three rows you already know about and two that flipped this year. If the only rows you read are the bottom two, you can almost always pick correctly without finishing the page.

Playwright (2026)

Out-of-process runner driving real Chromium, Firefox, WebKit through CDP. Microsoft ships @playwright/mcp (0.0.70) on the same release engineering cadence as @playwright/test. Browser-driving primitives are first-party, not community shims.

Cypress (2026)

In-browser runner, time-travel debugger, Test Replay. Official Cloud MCP shipped March 2026 reads run history and identifies flaky tests; it does not click buttons. Issue #33412 proposes @cypress/mcp for browser-driving; status: open.

Selenium (2026)

WebDriver protocol, polyglot bindings, mature Grid story. No first-party MCP exists. Community implementations (mcp-selenium by Angie Jones, naveenanimation20/selenium-mcp, PyPI's selenium-mcp-server) cover the gap, with no SeleniumHQ maintenance backstop.

First-party MCP scoring

Yes for Playwright (driving), partial for Cypress (cloud-only), no for Selenium. This is the only row in the comparison that flipped in 2026.

Migration weight

Greenfield: pick Playwright. Existing Cypress suite: keep until Issue #33412 closes or migration cost crosses agent-time savings. Existing Selenium with Grid: keep; build with community MCP if AI-driving is needed.

The three checks that close the framework choice in two minutes

Do not trust this page. Trust the npm registry, the GitHub issue tracker, and the upstream docs. The chips below are the exact sources of truth that produced the verdict; click each one when you are doing your own diligence.

npm: @playwright/mcpgithub.com/microsoft/playwright-mcpcypress.io/blog/cloud-mcpgithub.com/cypress-io/cypress/issues/33412docs.cypress.io/cloud/integrations/cloud-mcpgithub.com/angiejones/mcp-seleniumpypi.org/project/selenium-mcp-serverselenium.dev (search: mcp)node -e require.resolve('@playwright/mcp/package.json')

When each framework is still the right answer in 2026

The MCP axis is decisive for greenfield, not for everyone. There are real reasons to keep what you have.

Stay on Cypress if your team owns thousands of cy.* tests, lives inside Cypress Cloud (Test Replay, Smart Orchestration), and the rewrite cost outweighs the AI-agent ergonomics gain. The browser-driving Cypress MCP is proposed (Issue #33412); when it ships, the gap closes. If your testing is mostly component-shaped rather than full-app E2E, Cypress component testing remains very strong.

Stay on Selenium if your shop is polyglot (Java, Python, Ruby, .NET, JS), if your CI is built on Selenium Grid, or if you need WebDriver-protocol coverage Playwright cannot match (some native mobile, some embedded browsers, some Edge legacy). Community MCP servers from Angie Jones and others wrap WebDriver into MCP-compatible tools well enough for an AI-agent layer; what you give up is a first-party warranty when Selenium 5 ships.

Pick Playwright for greenfield JavaScript or TypeScript work in 2026. The MCP axis costs nothing to take, the framework itself is among the strongest authoring stories on the shelf, and you can layer an AI agent on top the same week you ship the first Playwright test. That is what Assrt does, with the dependency wired exactly as described above.

Want to see the AI-driven Playwright stack on your own app?

Thirty minutes. Bring a real flow; we will show you the Markdown plan, the @playwright/mcp run, and the artifacts on disk.

Frequently asked questions

What does 'first-party MCP server' mean for picking a 2026 testing framework?

An MCP (Model Context Protocol) server is the bridge an AI agent uses to take real actions inside a tool. For testing, that means the agent calling navigate, snapshot, click, or type_text and the framework actually executing those calls against a real browser. 'First-party' means the framework's own maintainers ship and own the MCP. As of May 2026, only Playwright has one of those: @playwright/mcp on the microsoft/playwright-mcp GitHub repo. Cypress has an official Cloud MCP, but it queries Cypress Cloud test results (flaky tests, run statuses, Test Replay links); it does not click buttons in your app. The proposal to add a first-party browser-driving Cypress MCP is open as Issue #33412 on cypress-io/cypress and not yet shipped. Selenium has no first-party MCP. There are community implementations (Angie Jones's mcp-selenium, naveenanimation20/selenium-mcp, others on PyPI), but the Selenium project itself does not maintain one. If your 2026 plan is to layer an AI agent on top, the framework you pick is the framework whose vendor already ships the MCP.

Why is the MCP axis suddenly more important than browser support or language bindings?

Because the bottleneck moved. In 2018 the bottleneck was 'can I run my tests on Firefox' and Selenium won. In 2021 the bottleneck was 'can I write a test without flaky waits' and Playwright won. In 2026 the bottleneck is 'how much human time goes into authoring and maintaining selectors' and the answer is an AI agent that calls real framework primitives off a plain English plan. That answer needs an MCP. Browser support is now table stakes (all three cover Chromium; Playwright adds WebKit and Firefox). Language bindings are mostly solved (TypeScript/JS for Playwright and Cypress, polyglot for Selenium). Parallel execution is solved (every framework parallelizes, every CI runner shards). The new axis differentiates because only one of the three has it.

Cypress shipped Cloud MCP in March 2026. Doesn't that count?

Cloud MCP counts for what it does, which is read-only access to your existing Cypress Cloud run history. The blog post and docs are explicit: an AI agent connects to the Cypress Cloud MCP endpoint and queries run statuses, flaky tests, and Test Replay links. It is observability for the run, not control of the browser. To make Cypress click buttons via an agent in 2026 you have to write or adopt a community MCP. The proposal for an official @cypress/mcp that drives the browser is Issue #33412 and is open. So the honest summary is: Cypress has the official MCP for the runs you have already executed, not for the runs you want an agent to execute next.

Can I use a community Cypress MCP and get the same outcome as @playwright/mcp?

You can get the rough outcome: an agent issues click and type calls, Cypress executes them. The difference is the warranty. yashpreetbathla/cypress-mcp and jprealini/cypress-mcp are MIT-licensed community projects, maintained by individuals, with no SLA. When Cypress 14 ships and changes a runner internal, those repos may or may not adapt. @playwright/mcp is published on the same npm namespace as @playwright/test, lives in the same GitHub org, and ships from the same release engineering team. That is the security argument for the framework choice in 2026: not 'who has features today' but 'who is on the hook to keep MCP working when their next major version drops'.

Is Cypress's in-browser architecture really a barrier to a browser-driving MCP?

It is a real architectural constraint. Cypress runs the test runner inside the browser as a same-origin iframe alongside your app, which gives Cypress its time-travel debugger and synchronous-feeling commands. An MCP server is a separate process that talks to the AI agent over stdio. To bridge the two you need either a browser-extension shim (the Cloud MCP path is HTTP, not browser-side) or a HTTP/WebSocket plug into the runner. Both are doable; both are why the proposal is still open in May 2026 instead of shipped. Playwright's architecture is the inverse: the runner is out-of-process, controlling the browser through CDP. Wrapping that in MCP was straightforward enough that Microsoft shipped @playwright/mcp v0.0.70 with the snapshot, click, type_text, and select_option primitives all backed by Playwright locator calls.

Where does this leave Selenium in 2026?

Selenium is still the right answer when you need WebDriver-protocol cross-language reach (Java, Python, Ruby, .NET, JS), or when you have a fleet of Selenium Grid nodes you cannot rip out. The community MCP servers from Angie Jones (mcp-selenium), naveenanimation20, and others wrap WebDriver into MCP-compatible tools. They work. They are not first-party. Most teams that show up asking 'Playwright vs Cypress vs Selenium' in 2026 are not coming from a Java enterprise stack with a Selenium Grid; they are coming from a Node app and a CI pipeline. For that team, Selenium's lack of a first-party MCP combined with the fact that none of its language ergonomics are required puts it third on the list.

What does Assrt actually require at runtime, and why does that prove the framework choice?

On startup, Assrt calls require_.resolve('@playwright/mcp/package.json') from /Users/matthewdi/assrt-mcp/src/core/browser.ts line 284 and spawns it as a child process over stdio. If the package is not installed, the runtime errors out before the first scenario starts. There is no fallback path that targets a Cypress MCP or a Selenium WebDriver session. That is not a marketing position; it is a hard dependency declared in the package.json (@playwright/mcp ^0.0.70). Anyone proposing 'just port it to Cypress' has to either (a) ship the missing browser-driving Cypress MCP themselves, or (b) wire the agent to a community shim with no maintenance guarantee. Both are real engineering projects, not config swaps. That asymmetry is the framework choice in 2026.

Are there any reasons to still pick Cypress in 2026?

Yes. If your team already owns thousands of cy.* tests and the maintenance cost of rewriting them outweighs the AI-agent ergonomics gain, do not migrate. If you live inside the Cypress Cloud product (Test Replay, Smart Orchestration, the new Cloud MCP for run analytics) and the value you get from those is high, the AI-driving gap is solvable later via a community MCP or a shipped @cypress/mcp when Issue #33412 closes. If your testing surface is mostly component testing rather than full-app E2E, Cypress component tests remain very good. The 2026 framework choice is a tradeoff, not a verdict.

Are there any reasons to still pick Selenium in 2026?

Yes. Cross-browser reach beyond Playwright's matrix (Edge, Safari on iOS, native Android Chrome) often still routes through WebDriver. Cross-language teams (a Java backend QA org, a Python data-science team that writes its own UI tests) have ergonomics in Selenium that Playwright cannot match without language-specific bindings of varying quality. Existing Selenium Grid investments are real and not free to retire. For greenfield JavaScript or TypeScript work in 2026, the MCP gap is decisive against Selenium; for established polyglot or Grid-backed shops, the migration cost almost always exceeds the AI-agent gain.

How do I verify the framework's MCP coverage myself before I commit?

Three checks, two minutes each. One: visit npmjs.com/package/@playwright/mcp and confirm the publisher is the @playwright npm scope, the repo is microsoft/playwright-mcp, and the most recent version is current (0.0.70 or newer in May 2026). Two: visit github.com/cypress-io/cypress/issues/33412 and read the proposal status. If it is still open, there is no first-party browser-driving Cypress MCP yet. If it has shipped, the framework comparison should be re-run. Three: search the official selenium.dev docs and github.com/SeleniumHQ for 'mcp'. If the result set is empty or only points at community forks, Selenium remains in the no-first-party-MCP column. That is the entire diligence loop for the new axis.

assrtOpen-source AI testing framework
© 2026 Assrt. MIT License.