Sourced from @playwright/test's releases.
v1.63.0
🔒 Test locks
Tests that access a shared resource — an external service, a global account setting — can now declare a named
lock. Tests that share a lock name never run concurrently, across files, workers and projects, while everything else keeps running in parallel:test('update user settings', { lock: 'user-settings' }, async ({ page }) => { // never runs at the same time as other tests holding 'user-settings' });A test can hold multiple locks, and test.describe() accepts a
lockfor the whole group. Learn more about test locks.🪟 Locate across frames
page.frameLocator() and frame.frameLocator() called without a selector search in any frame of the subtree, so you no longer need to locate the iframe first:
// Finds the button in any frame on the page. await page.frameLocator().getByRole('button').click();The rest of the locator resolves inside a single frame, just like a regular locator, and an error is thrown when it matches elements in several frames.
👁️ Visible-only locators
New locator.visible() returns a locator that matches only visible elements. It is the recommended replacement for the
:visibleCSS pseudo-class:await page.locator('button').visible().click();🧾 Step params and subtitles
Steps now carry structured data for reporters. Playwright API steps report the target locator and call arguments, and test.step() accepts
subtitleandparamsoptions for your own steps:await test.step('Login', async () => { // ... }, { subtitle: 'as admin', params: { user: 'admin' } });Reporters receive them via testStep.subtitle and testStep.params. For Playwright API
... (truncated)
1b025d7
chore: mark v1.63.0 (#42569)0b9956d
cherry-pick(#42568):
docs(test): mark test.step subtitle option as since v1.6313dbf10
cherry-pick(#42552):
docs: release notes for v1.63e93b64e
cherry-pick(#42566):
feat(test): add subtitle option to test.step (#42567)2b7a5f2
test: response.body() for content-encoding:identity (#42537)648a67c
fix(mcp): create parent directories for explicitly named files (#42540)7894f56
docs(mcp): clarify how tool file names are resolved (#42538)52900a1
devops: restore npm publishing from GitHub Actions (#42550)8c47f59
docs(csharp): fix nonexistent method names in guide examples (#42507)bd6e552
chore(video): emit frames with real timestamps, drop frame number
quantizatio...