NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3549 most downloaded on npm
A high-level API to automate web browsers
Last release today
06 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 43 of 43 stable releases
1959 versions withdrawn
withdrawn after publishing
6 years old
3397 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
Playwright Test can now test your React, Vue.js or Svelte components. You can use all the features of Playwright Test (such as parallelization, emulat
Playwright Test can now test your React, Vue.js or Svelte components. You can use all the features of Playwright Test (such as parallelization, emulation & debugging) while running components in real browsers.
<a href="https://youtu.be/y3YxX4sFJbM"></a> <a href="https://youtu.be/y3YxX4sFJbM">Component Tests (Preview)</a>
Here is what a typical component test looks like:
// App.spec.tsx
import { test, expect } from '@playwright/experimental-ct-react';
import App from './App';
// Let's test component in a dark scheme!
test.use({ colorScheme: 'dark' });
test('should render', async ({ mount }) => {
const component = await mount(<App></App>);
// As with any Playwright test, assert locator text.
await expect(component).toContainText('React');
// Or do a screenshot 🚀
await expect(component).toHaveScreenshot();
// Or use any Playwright method
await component.click();
});
Read more in our documentation.
<a href="https://youtu.be/keV2CIgtBlg"></a> <a href="https://youtu.be/keV2CIgtBlg">Playwright v1.22 updates</a>
Role selectors allow selecting elements by their ARIA role, ARIA attributes and accessible name.
// Click a button with accessible name "log in"
await page.click('role=button[name="log in"]')
Read more in our documentation.
New locator.filter([options]) API to filter an existing locator
const buttons = page.locator('role=button');
// ...
const submitButton = buttons.filter({ hasText: 'Submit' });
await submitButton.click();
New web-first assertions expect(page).toHaveScreenshot() and expect(locator).toHaveScreenshot() that wait for screenshot stabilization and enhances test reliability.
The new assertions has screenshot-specific defaults, such as:
await page.goto('https://playwright.dev');
await expect(page).toHaveScreenshot();
The new expect(page).toHaveScreenshot() saves screenshots at the same location as expect(screenshot).toMatchSnapshot().
This version was also tested against the following stable channels:
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This patch includes the following bug fixes:
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/pull/13597 - [BUG] fullyParallel created too many workers, slowing down test run https://github.com/microsoft/playwright/issues/13530 - [REGRESSION]: Pull request #12877 prevents the library from being used on any linux distro that is not Ubuntu
This version was also tested against the following stable channels:
Nothing published for this version
Nothing published for this version
Nothing published for this version
!release 1.21 Playwright v1.21 updates
<a href="https://youtu.be/45HZdbmgEw8"></a> <a href="https://youtu.be/45HZdbmgEw8">Playwright v1.21 updates</a>
New experimental role selectors that allow selecting elements by their ARIA role, ARIA attributes and accessible name.
// Click a button with accessible name "log in"
await page.click('role=button[name="log in"]')
To use role selectors, make sure to pass PLAYWRIGHT_EXPERIMENTAL_FEATURES=1 environment variable:
// playwright.config.js
process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES = '1';
module.exports = {
/* ... */
};
Read more in our documentation.
New scale option in Page.screenshot for smaller sized screenshots.
New caret option in Page.screenshot to control text caret. Defaults to "hide".
New method expect.poll to wait for an arbitrary condition:
// Poll the method until it returns an expected result.
await expect.poll(async () => {
const response = await page.request.get('https://api.example.com');
return response.status();
}).toBe(200);
expect.poll supports most synchronous matchers, like .toBe(), .toContain(), etc.
Read more in our documentation.
PLAYWRIGHT_EXPERIMENTAL_TS_ESM env variable is
no longer required.mcr.microsoft.com/playwright docker image no longer contains Python. Please use mcr.microsoft.com/playwright/python
as a Playwright-ready docker image with pre-installed Python.Locator.setInputFiles API.This version was also tested against the following stable channels:
Your coding agent can read these notes before it upgrades. Set up the MCP server →