What’s Changed and Upgrading
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production. The reference material consulted while preparing these pages is listed in the section bibliography. |
Browser testing tools move quickly: Playwright ships a minor release roughly every month, Cypress shipped a new major version in September 2026, and Selenium publishes a release every few weeks. This page collects the changes that matter to someone maintaining an existing suite or writing a new one, organised by tool, and for every change it states the version that introduced it, where this section documents it, and what an upgrade needs from you. It is written for Playwright 1.64.1, Cypress 16.2.0 and Selenium 4.51.0, and every version, date and requirement was checked against the official release notes, changelogs and migration guides on 25 October 2026.
Nothing on this page needed a running Bookshelf application. The only commands executed were version checks: in the
Playwright example project npx playwright --version printed Version 1.64.1, and in the Cypress example project
npx cypress --version reported Cypress package and binary version 16.2.0 (Electron 41.7.0). The migration snippets
below come from the official guides and were not run here; the pages linked in the tables contain the examples that
were run against Bookshelf. Items on this page that depend on commercial services or on AI products that need accounts
or paid keys are described from their official announcements and documentation.
How to approach an upgrade
The same routine works for all three tools, and it keeps the number of simultaneous variables low.
-
Read the release notes between your version and the target. Skipping versions is allowed for minor releases, but the breaking changes accumulate, so read every version in between. Cypress and the other major-version tools ask for one major at a time: the Cypress 16 migration guide explicitly says to be on 15.x first.
-
Upgrade the runtime before the tool. Node.js, Python, the JDK and the operating system are the usual blockers; each section below lists the versions that were dropped.
-
Pin the version. Use an exact version in
package.json,pom.xmlorrequirements.txt, and upgrade deliberately in a dedicated branch. Browser binaries move with the tool (Playwright) or independently of it (Cypress, Selenium), so record the browser versions too. -
Run the suite once without changes and read the failures by category. Most upgrade failures come from changed defaults (visibility, headless mode, snapshot behaviour), removed APIs and updated screenshots, not from the tests.
-
Regenerate visual baselines in a controlled run and review the differences, as described in Visual Regression Testing.
-
Update the container images and CI actions at the same time, because the browser and the runner must match; see Running in CI/CD.
npm install --save-exact --save-dev @playwright/test@1.64.1
npx playwright install --with-deps
npx playwright --version
Executed here: npx playwright --version printed Version 1.64.1 for the pinned example project; the install commands
are the documented upgrade steps and were already part of the project setup.
Source: Playwright: Installation
Playwright 1.49 to 1.64
Playwright 1.49 (late 2024) to 1.64 (October 2026) covers sixteen releases. The tables group the changes by theme; the last two tables list everything that was removed or changed incompatibly and the runtime requirements.
Locators and assertions
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
1.49 |
|
Optional. Adopt it for structural checks; generate snapshots with codegen and update them with |
|
1.51 |
|
Optional; replaces ad-hoc |
|
1.52 |
|
Optional; replaces regular expressions against the |
|
1.53 |
|
Optional. |
|
1.59 |
|
Optional. |
|
1.60 |
|
Optional. |
|
1.63 |
|
Replace |
|
1.64 |
|
Optional. |
Agents, MCP and the command line
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
1.51 |
A Copy prompt button on errors in the HTML report, the trace viewer and UI Mode copies a prompt that contains the error message and context for an AI assistant. 1.56 adds an option to the HTML reporter to disable the button. |
None. Disable the button in the reporter options if you do not want it shown to your team. |
|
1.56 |
Playwright Test Agents: three agent definitions (planner, generator and healer) that guide an LLM through writing
tests. |
Optional. Regenerate the agent files after each Playwright upgrade, because the definitions track the release. |
|
1.59 |
|
Optional. |
|
1.62 |
Playwright bundles the Playwright MCP server and |
Optional. You no longer need a separate |
|
1.64 |
WebMCP: |
Review what an agent can now call on your own pages; see Securing Browser Agents. |
At the check date the npm packages were @playwright/mcp 0.0.83 and @playwright/cli 0.1.22, both still 0.x, so
expect their flags to change between releases and pin them as you would any other test dependency.
Browsers, video, traces and reports
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
1.49 |
The |
Run the suite once; expect to update screenshots and PDF or extension tests. |
|
1.57 |
Playwright runs on Chrome for Testing builds instead of Chromium: headed mode uses |
Re-download browsers with |
|
1.59 |
The Screencast API ( |
Optional; use it for evidence videos with action annotations. |
|
1.60 |
|
Optional. |
|
1.62 |
|
Keep PNG baselines unless you want to switch; mixing formats needs a baseline refresh. |
|
1.63 |
Traces can record aria and screen snapshots ( |
Optional. |
|
1.64 |
Video can use a custom frame rate ( |
Optional; the |
State, authentication and component testing
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
1.51 |
|
Add the option if your application keeps its session in IndexedDB. |
|
1.59 |
|
Optional. |
|
1.61 |
The WebStorage API ( |
Optional; replaces |
|
1.62 |
New component testing model: stories plus a gallery page and the |
Migrate component tests before the old packages fall behind the test runner; the page explains the path. |
|
1.63 |
|
Optional. |
|
1.64 |
|
Authentication & Isolation, Network Mocking, Clock & API Testing |
Optional. |
Test runner, parallelism and reporting
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
1.50 |
|
See the breaking-change table: |
|
1.52 |
|
Enable |
|
1.56 |
|
Optional. |
|
1.62 |
|
Optional. |
|
1.63 |
Test locks: |
Use locks for shared external state instead of serial mode. |
|
1.64 |
|
Configuration, Fixtures & Projects, Flaky Tests & Reliability |
Optional; |
Removed features and breaking changes
Read this table before moving across the listed versions; each row is a change that can fail a previously green suite.
| Version | Breaking change | Upgrade action |
|---|---|---|
1.49 |
|
Re-run the suite and refresh screenshots. |
1.50 |
|
Use |
1.52 |
URL glob patterns in |
Use regular expressions in route patterns; set cookies on the context. |
1.54 |
Node.js 16 support removed and Node.js 18 deprecated. The |
Update scripts and CI to the runtimes in the table below. |
1.55 |
Chromium extension manifest v2 support dropped. |
Port extensions to manifest v3; see Advanced Topics. |
1.56 |
|
Use service-worker based extension testing. |
1.57 |
|
Use an axe integration; see Accessibility Checks in E2E Tests. |
1.58 |
The |
Use role, test id or CSS locators; pass |
1.59 |
WebKit updates stop for macOS 14. |
Check CI parsers that read |
1.60 |
Long-deprecated APIs removed: |
Use |
1.62 |
Debian 11 is no longer supported. |
Move CI to a supported image. |
1.63 |
Ubuntu 20.04 is no longer supported. The experimental React and Vue component-testing packages stop being updated. |
Use a current |
1.64 |
|
Set |
Runtime and operating-system requirements
| Item | Status at Playwright 1.64.1 | Documented here |
|---|---|---|
Node.js |
22.x, 24.x or 26.x. Node.js 16 was removed in 1.54, and Node.js 18 was deprecated there. The release notes between 1.55 and 1.64 do not announce the exact release that removed 18 and 20, so read the requirements page when planning. |
|
Operating systems |
Windows 11 and later, Windows Server 2019 and later, WSL, macOS 14 and later, Debian 12 and 13, and Ubuntu 22.04, 24.04 and 26.04 on x64 or arm64. Ubuntu 26.04 arrived in 1.61 and Debian 13 in 1.55. The 1.59 notes also say WebKit stopped being updated on macOS 14, so check the system requirements page for the browser you need. |
|
Docker images |
The images moved from Node.js 22 to 24 in 1.57 (and from 20 to 22 in 1.49); use |
|
Python, Java and .NET bindings |
Newer releases than the 1.63.0 used for the examples exist (Python 1.64.1, Maven 1.64.0, NuGet 1.64.1). Python 3.10 or later is required. |
Cypress 15 to 16
Cypress 15.0.0 (August 2025) and 16.0.0 (1 September 2026) are the two majors in this window. Version 16.2.0 was released on 13 October 2026.
Breaking changes in 16.0
The official migration guide lists each change with an "action needed" column; this table follows it.
| Change | What happens | Documented here | Upgrade action |
|---|---|---|---|
Native browser network |
Chrome, Chromium and Edge send test traffic over the native browser network, so the application negotiates HTTP/1.1,
HTTP/2 or HTTP/3 exactly as in production. Firefox, WebKit and Electron keep the legacy path. |
Usually none. Update tests that assert on those fields; |
|
Node.js |
Node.js 20 and 25 are dropped; 22.x, 24.x or 26.x and later are required. The bundled Node.js moved from 22.19.0 to 24.15.0. |
Upgrade the runtime on developer machines and CI before the package. |
|
|
Use |
Migrate every call (see the example below). |
|
|
Use |
Register the command as a task in |
|
|
The default delay in |
Only if a test relied on the delay: set |
|
Visibility |
|
Rewrite assertions that relied on ancestor overflow clipping, transform-based hiding or coverage by fixed elements. |
|
Browser memory |
|
If you set the old option to |
|
Cookie and storage reads |
|
Move assertions from |
|
Config at run time |
|
Use |
|
Other removals |
|
Remove the options; convert |
|
Component testing minimums |
Angular 21 (18, 19 and 20 dropped), Vite 8 (5, 6 and 7 dropped), Next.js 15.0.4 (14 dropped). |
Upgrade the framework tooling first. |
|
Electron deprecated |
The bundled Electron browser is deprecated as a test browser and will be removed in a future major version; targeting it prints a warning. |
Set |
The example below is the migration pattern from the official guide, shown with the replacement for a secret and for a public value. It is documentation, not a run.
// Before (Cypress 15): synchronous, everything is serialised into the browser
// const apiKey = Cypress.env('apiKey')
// After (Cypress 16): sensitive values stay in the Node process until requested
it('reads the API key', () => {
cy.env(['apiKey']).then(({ apiKey }) => {
expect(Boolean(apiKey)).to.be.true
})
})
// Public configuration: declare it in the config under `expose`
// and read it synchronously
const apiVersion = Cypress.expose('apiVersion')
cypress run --expose FEATURE_FLAG=true
Breaking changes in 15.0
If you are still on Cypress 14, upgrade to 15.x first. The 15.0.0 release removed Node.js 18 and 23, Linux distributions
with glibc older than 2.31, and Chrome DevTools Protocol automation of Firefox (Firefox is automated with WebDriver BiDi
only, which sets a minimum Firefox version). It also removed the three-argument form of cy.stub(), webpack 4 support,
Vite 4 and Angular 17 for component testing, renamed Cypress.SelectorPlayground to Cypress.ElementSelector, renamed
the code property of cy.exec() to exitCode, dropped the direct-download installation and made @cypress/vite-dev-server
ESM-only. Cypress 14 had earlier dropped Node.js 16 and macOS older than 11 and removed open-ct and run-ct.
New features from 15 to 16.2
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
15.4.0 |
Cypress Studio is available by default (the |
Rename any custom command called |
|
15.10.0 |
|
Migrate on 15.10 or later, then upgrade to 16. |
|
15.13.0 |
|
Optional; requires a Cypress Cloud account. |
|
15.17.0 |
|
Optional. |
|
15.21.0 |
|
Debugging, Studio, Plugins & Reporters, AI Features in Cypress & Selenium |
Optional. |
16.0.0 |
HTTP/2 and HTTP/3 in Chrome, Chromium and Edge; faster |
See the breaking-change table above. |
|
16.1.0 |
|
Use it instead of disabling certificate checks. |
|
16.2.0 |
The |
Test Design & Page Objects, Queries, Assertions & Custom Commands |
Optional; prefer it over test-id selectors when the role and name are stable. |
Third-party packages may lag a Cypress major: at the check date the peer range of cypress-axe 1.7.0 ends at Cypress 15,
so installing it next to Cypress 16 needed --legacy-peer-deps; see
Accessibility Checks in E2E Tests.
Selenium 4.x
Selenium has no new major version in this window: the 4.x line continues, and the policy is to deprecate for two releases before removing. The table runs from the Selenium Manager releases that changed how drivers and browsers are obtained up to 4.51.0 (9 October 2026).
| Version | Change | Documented here | Upgrade action |
|---|---|---|---|
4.6 and 4.11 |
Selenium Manager (a Rust command-line tool) ships in every binding from 4.6 and downloads the matching driver. From 4.11 it also uses the Chrome for Testing endpoints to manage chromedriver and the Chrome browser itself, and the current documentation describes it as automated driver and browser management. |
Delete manual driver management and driver-manager libraries; in locked-down CI, pre-populate the cache or point to your own binaries. |
|
4.29 |
Chrome DevTools Protocol support for Firefox removed after two releases of deprecation; use WebDriver BiDi. |
Replace Firefox CDP code with the BiDi APIs. |
|
4.37 |
Python 3.9 no longer supported; Python 3.10 or later is needed. Selenium 4.51 adds Python 3.15. |
Upgrade the interpreter in CI images and virtual environments. |
|
4.44 to 4.46 |
.NET assemblies strongly signed (around 4.44); Redis-backed |
Pin the version when you use BiDi classes in Java, because beta APIs may change. |
|
4.47 to 4.49 |
A BiDi transport layer for generated modules, subscription parameters for events, removal of FTP proxy support and of a deprecated Grid file-download endpoint, and a prebuilt Selenium Manager for Linux arm64 in every binding. |
Stop using FTP proxy settings. |
|
4.50 |
Relative locators can be anchored to elements and shadow roots (Java and .NET); deprecated |
Replace profile-based extension and certificate installation with the supported options or BiDi. |
|
4.51 |
Java: Guava is no longer a dependency of the client bindings, so |
Search for |
|
4.53 (planned) |
The removal of the deprecated |
Use |
Only code that explicitly typed a variable, field or parameter as Guava’s Function is affected by the 4.51 change; passing
the result of an ExpectedConditions factory straight to WebDriverWait.until() or implementing ExpectedCondition with
a lambda compiles unchanged.
// Before 4.51: compiled because ExpectedCondition also extended Guava's Function
// com.google.common.base.Function<WebDriver, WebElement> condition = ExpectedConditions.elementToBeClickable(By.id("submit"));
// 4.51 and later: use the JDK interface (the apply method has the same signature)
java.util.function.Function<WebDriver, WebElement> condition =
ExpectedConditions.elementToBeClickable(By.id("submit"));
The Java minimum is the part of the Selenium requirements that is easiest to get wrong. Selenium announced in June 2023 that
Java 11 is the minimum for the Java bindings and the Grid, because the default HTTP client moved to the JDK’s built-in
client. The 4.50 and 4.51 changelogs announce no higher minimum, and this section’s Maven examples compile with
--release 11 and ran on JDK 17, but the documentation’s own requirements wording was not re-read for every binding on the
check date, so confirm it on the downloads page before moving a Java 11 runtime. The other bindings state their floors in their
package metadata: Python 3.10, Ruby 3.3, Node.js 22 and, for .NET, the net462, netstandard2.0 and net8.0 targets.
Selenium also published a documentation page on driving the browser with AI agents (announced in a blog post of 29 September 2026); it is covered in AI Features in Cypress & Selenium. For the Selenium IDE, which has had no release for about two years, and for the Selenium 3 to 4 migration, see Selenium IDE & Legacy.
Services and products that were renamed or retired
The tools are not the only thing that changed. Several services this section mentions have a new name or no longer exist.
| Old name | What happened | Documented here | Action |
|---|---|---|---|
Microsoft Playwright Testing |
Retired on 8 March 2026. The successor is Playwright Workspaces in Azure App Testing, generally available. |
Move cloud-hosted Playwright runs to a Playwright Workspace; check the Azure documentation for the configuration package. |
|
LambdaTest |
The company now trades as TestMu AI; its documentation at testmuai.com states "TestMu AI (Formerly LambdaTest)" and the older lambdatest.com documentation address still serves the same text. TestMu AI also became a Selenium development partner. |
Update hub URLs and credentials variable names from the vendor documentation when you renew a plan. |
|
Copilot coding agent |
GitHub’s documentation now calls it the Copilot cloud agent (the documentation path is |
Search for the new name when following current documentation. |
|
ChatGPT Atlas |
OpenAI announced on 9 July 2026 that the standalone Atlas browser would stop working on 9 August 2026, with browsing and agent features moving into the ChatGPT desktop app and a Chrome extension. The OpenAI help article returned an access error when fetched, so this relies on the announcement as reported by search. |
Treat it as history; do not build tests around it. |
|
Operator, ChatGPT agent and Project Mariner |
Operator was the earlier OpenAI browser agent and "ChatGPT agent" its successor; no source found on the check date confirms whether the standalone ChatGPT agent was discontinued, so its status is uncertain. The Project Mariner page fetched on the check date contains no retirement wording; it is a research prototype whose capabilities moved to Gemini Computer Use according to the product announcements. |
Prefer the documented computer-use APIs over consumer browser agents for anything repeatable. |
|
|
The React, React 17, Vue, Svelte and Solid packages are discontinued in favour of the built-in |
Follow the migration path in the component-testing page. |
|
|
The Cypress Cloud AI features page lists |
Re-check the release status before relying on a beta feature in CI. |
For the security considerations of letting a model operate a browser, which changed as much as the product names, see Securing Browser Agents.
Protractor end of life
Protractor, the Angular team’s former end-to-end test runner built on Selenium, is deprecated: the notice on its npm
package says it reached end of life by summer 2023, and its last published version, 7.0.0, dates from May 2020. The Angular
CLI no longer generates Protractor tests; ng e2e asks which package to add and offers Playwright, Cypress, Nightwatch,
WebdriverIO and Puppeteer schematics. With no maintained release, existing Protractor suites should be migrated rather than patched.
-
To keep the WebDriver model, move to Selenium with explicit waits; see Waits & Expected Conditions.
-
To move to a tool with built-in auto-waiting, see Choosing a Tool, which also links Cypress’s migration guide for Protractor users.
-
Translate page objects first, because they are the largest reusable part of a Protractor suite; see Test Design & Page Objects.
What changed recently
| Date | Change |
|---|---|
13 October 2026 |
Cypress 16.2.0: the |
9 October 2026 |
Selenium 4.51.0 for Java, Python, .NET, Ruby, JavaScript and the Grid: Guava removed from the Java client bindings. |
September 2026 |
Cypress 16.0.0 (1 September) and 16.1.0 (15 September, |
At the check date |
Playwright 1.64.1 is the latest release on npm and the examples in this section run on it. The |