Skip to content

Releases: microsoft/playwright

v1.57.0

25 Nov 11:16

Choose a tag to compare

Speedboard

In HTML reporter, there's a new tab we call "Speedboard":

speedboard

It shows you all your executed tests sorted by slowness,
and can help you understand where your test suite is taking longer than expected.
Take a look at yours - maybe you'll find some tests that are spending a longer time waiting than they should!

Chrome for Testing

Starting with this release, Playwright switches from Chromium, to using Chrome for Testing builds. Both headed and headless browsers are subject to this. Your tests should still be passing after upgrading to Playwright 1.57.

We're expecting no functional changes to come from this switch. The biggest change is the new icon and title in your toolbar.

new and old logo

If you still see an unexpected behaviour change, please file an issue.

On Arm64 Linux, Playwright continues to use Chromium.

Waiting for webserver output

testConfig.webServer added a wait field. Pass a regular expression, and Playwright will wait until the webserver logs match it.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  webServer: {
    command: 'npm run start',
    wait: {
      stdout: '/Listening on port (?<my_server_port>\\d+)/'
    },
  },
});

If you include a named capture group into the expression, then Playwright will provide the capture group contents via environment variables:

import { test, expect } from '@playwright/test';

test.use({ baseUrl: `http://localhost:${process.env.MY_SERVER_PORT ?? 3000}` });

test('homepage', async ({ page }) => {
  await page.goto('/');
});

This is not just useful for capturing varying ports of dev servers. You can also use it to wait for readiness of a service that doesn't expose an HTTP readiness check, but instead prints a readiness message to stdout or stderr.

Breaking Change

After 3 years of being deprecated, we removed Page#accessibility from our API. Please use other libraries such as Axe if you need to test page accessibility. See our Node.js guide for integration with Axe.

New APIs

  • New property testConfig.tag adds a tag to all tests in this run. This is useful when using merge-reports.
  • worker.on('console') event is emitted when JavaScript within the worker calls one of console API methods, e.g. console.log or console.dir. worker.waitForEvent() can be used to wait for it.
  • locator.description() returns locator description previously set with locator.describe(), and Locator.toString() now uses the description when available.
  • New option steps in locator.click() and locator.dragTo() that configures the number of mousemove events emitted while moving the mouse pointer to the target element.
  • Network requests issued by Service Workers are now reported and can be routed through the BrowserContext, only in Chromium. You can opt out using the PLAYWRIGHT_DISABLE_SERVICE_WORKER_NETWORK environment variable.
  • Console messages from Service Workers are dispatched through worker.on('console'). You can opt out of this using the PLAYWRIGHT_DISABLE_SERVICE_WORKER_CONSOLE environment variable.

Browser Versions

  • Chromium 143.0.7499.4
  • Mozilla Firefox 144.0.2
  • WebKit 26.0

v1.56.1

17 Oct 00:50
54c7115

Choose a tag to compare

Highlights

#37871 chore: allow local-network-access permission in chromium
#37891 fix(agents): remove workspaceFolder ref from vscode mcp
#37759 chore: rename agents to test agents
#37757 chore(mcp): fallback to cwd when resolving test config

Browser Versions

  • Chromium 141.0.7390.37
  • Mozilla Firefox 142.0.1
  • WebKit 26.0

v1.56.0

06 Oct 14:53
b6af258

Choose a tag to compare

Playwright Agents

Introducing Playwright Agents, three custom agent definitions designed to guide LLMs through the core process of building a Playwright test:

  • 🎭 planner explores the app and produces a Markdown test plan
  • 🎭 generator transforms the Markdown plan into the Playwright Test files
  • 🎭 healer executes the test suite and automatically repairs failing tests

Run npx playwright init-agents with your client of choice to generate the latest agent definitions:

# Generate agent files for each agentic loop
# Visual Studio Code
npx playwright init-agents --loop=vscode
# Claude Code
npx playwright init-agents --loop=claude
# opencode
npx playwright init-agents --loop=opencode

Note

VS Code v1.105 (currently on the VS Code Insiders channel) is needed for the agentic experience in VS Code. It will become stable shortly, we are a bit ahead of times with this functionality!

Learn more about Playwright Agents

New APIs

UI Mode and HTML Reporter

  • Added option to 'html' reporter to disable the "Copy prompt" button
  • Added option to 'html' reporter and UI Mode to merge files, collapsing test and describe blocks into a single unified list
  • Added option to UI Mode mirroring the --update-snapshots options
  • Added option to UI Mode to run only a single worker at a time

Breaking Changes

Miscellaneous

  • Aria snapshots render and compare input placeholder
  • Added environment variable PLAYWRIGHT_TEST to Playwright worker processes to allow discriminating on testing status

Browser Versions

  • Chromium 141.0.7390.37
  • Mozilla Firefox 142.0.1
  • WebKit 26.0

v1.55.1

23 Sep 09:56
ae51df7

Choose a tag to compare

Highlights

#37479 - [Bug]: Upgrade Chromium to 140.0.7339.186.
#37147 - [Regression]: Internal error: step id not found.
#37146 - [Regression]: HTML reporter displays a broken chip link when there are no projects.
#37137 - Revert "fix(a11y): track inert elements as hidden".
#37532 - chore: do not use -k option

Browser Versions

  • Chromium 140.0.7339.186
  • Mozilla Firefox 141.0
  • WebKit 26.0

This version was also tested against the following stable channels:

  • Google Chrome 139
  • Microsoft Edge 139

v1.55.0

20 Aug 10:26
f992162

Choose a tag to compare

New APIs

  • New Property testStepInfo.titlePath Returns the full title path starting from the test file, including test and step titles.

Codegen

  • Automatic toBeVisible() assertions: Codegen can now generate automatic toBeVisible() assertions for common UI interactions. This feature can be enabled in the Codegen settings UI.

Breaking Changes

  • ⚠️ Dropped support for Chromium extension manifest v2.

Miscellaneous

  • Added support for Debian 13 "Trixie".

Browser Versions

  • Chromium 140.0.7339.16
  • Mozilla Firefox 141.0
  • WebKit 26.0

This version was also tested against the following stable channels:

  • Google Chrome 139
  • Microsoft Edge 139

v1.54.2

01 Aug 07:01
00ce6a8

Choose a tag to compare

Highlights

#36714 - [Regression]: Codegen is not able to launch in Administrator Terminal on Windows (ProtocolError: Protocol error)
#36828 - [Regression]: Playwright Codegen keeps spamming with selected option
#36810 - [Regression]: Starting Codegen with target language doesn't work anymore

Browser Versions

  • Chromium 139.0.7258.5
  • Mozilla Firefox 140.0.2
  • WebKit 26.0

This version was also tested against the following stable channels:

  • Google Chrome 140
  • Microsoft Edge 140

v1.54.1

11 Jul 14:06
97b6b88

Choose a tag to compare

Highlights

#36650 - [Regression]: 1.54.0 breaks downloading browsers when an HTTP(S) proxy is used

Browser Versions

  • Chromium 139.0.7258.5
  • Mozilla Firefox 140.0.2
  • WebKit 26.0

This version was also tested against the following stable channels:

  • Google Chrome 140
  • Microsoft Edge 140

v1.54.0

10 Jul 10:56

Choose a tag to compare

Highlights

  • New cookie property partitionKey in browserContext.cookies() and browserContext.addCookies(). This property allows to save and restore partitioned cookies. See CHIPS MDN article for more information. Note that browsers have different support and defaults for cookie partitioning.

  • New option noSnippets to disable code snippets in the html report.

    import { defineConfig } from '@playwright/test';
    
    export default defineConfig({
      reporter: [['html', { noSnippets: true }]]
    });
  • New property location in test annotations, for example in testResult.annotations and testInfo.annotations. It shows where the annotation like test.skip or test.fixme was added.

Command Line

  • New option --user-data-dir in multiple commands. You can specify the same user data dir to reuse browsing state, like authentication, between sessions.

    npx playwright codegen --user-data-dir=./user-data
  • Option -gv has been removed from the npx playwright test command. Use --grep-invert instead.

  • npx playwright open does not open the test recorder anymore. Use npx playwright codegen instead.

Miscellaneous

  • Support for Node.js 16 has been removed.
  • Support for Node.js 18 has been deprecated, and will be removed in the future.

Browser Versions

  • Chromium 139.0.7258.5
  • Mozilla Firefox 140.0.2
  • WebKit 26.0

This version was also tested against the following stable channels:

  • Google Chrome 140
  • Microsoft Edge 140

v1.53.2

30 Jun 18:46
8c38de4

Choose a tag to compare

Highlights

#36317 - [Regression]: Merging pre-1.53 blob reports loses attachments
#36357 - [Regression (Chromium)]: CDP missing trailing slash
#36292 - [Bug (MSEdge)]: Edge fails to launch when using msRelaunchNoCompatLayer

Browser Versions

  • Chromium 138.0.7204.23
  • Mozilla Firefox 139.0
  • WebKit 18.5

This version was also tested against the following stable channels:

  • Google Chrome 137
  • Microsoft Edge 137

v1.53.1

18 Jun 18:02
3c60cb4

Choose a tag to compare

Highlights

#36339 - [Regression]: Click can fail when scrolling required
#36307 - [Regression (Chromium)]: Under some scenarios filling a textarea doesn't fill
#36294 - [Regression (Firefox)]: setViewportSize times out
#36350 - [Fix]: Display HTTP method for fetch trace entries

Browser Versions

  • Chromium 138.0.7204.23
  • Mozilla Firefox 139.0
  • WebKit 18.5

This version was also tested against the following stable channels:

  • Google Chrome 137
  • Microsoft Edge 137