Skip to content

Commit 13dbf10

Browse files
committed
cherry-pick(#42552): docs: release notes for v1.63
1 parent e93b64e commit 13dbf10

1 file changed

Lines changed: 124 additions & 0 deletions

File tree

‎docs/src/release-notes-js.md‎

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,130 @@ toc_max_heading_level: 2
66

77
import LiteYouTube from '@site/src/components/LiteYouTube';
88

9+
## Version 1.63
10+
11+
### 🔒 Test locks
12+
13+
Tests that access a shared resource — an external service, a global account setting — can now declare a named `lock`.
14+
Tests that share a lock name never run concurrently, across files, workers and [projects](./test-projects.md), while
15+
everything else keeps running in parallel:
16+
17+
```js
18+
test('update user settings', { lock: 'user-settings' }, async ({ page }) => {
19+
// never runs at the same time as other tests holding 'user-settings'
20+
});
21+
```
22+
23+
A test can hold multiple locks, and [`method: Test.describe`] accepts a `lock` for the whole group.
24+
Learn more about [test locks](./test-parallel.md#test-locks).
25+
26+
### 🪟 Locate across frames
27+
28+
[`method: Page.frameLocator`] and [`method: Frame.frameLocator`] called without a selector search in any frame of the
29+
subtree, so you no longer need to locate the iframe first:
30+
31+
```js
32+
// Finds the button in any frame on the page.
33+
await page.frameLocator().getByRole('button').click();
34+
```
35+
36+
The rest of the locator resolves inside a single frame, just like a regular locator, and an error is thrown when it
37+
matches elements in several frames.
38+
39+
### 👁️ Visible-only locators
40+
41+
New [`method: Locator.visible`] returns a locator that matches only visible elements. It is the recommended
42+
replacement for the `:visible` CSS pseudo-class:
43+
44+
```js
45+
await page.locator('button').visible().click();
46+
```
47+
48+
### 🧾 Step params and subtitles
49+
50+
Steps now carry structured data for reporters. Playwright API steps report the target locator and call arguments,
51+
and [`method: Test.step`] accepts `subtitle` and `params` options for your own steps:
52+
53+
```js
54+
await test.step('Login', async () => {
55+
// ...
56+
}, { subtitle: 'as admin', params: { user: 'admin' } });
57+
```
58+
59+
Reporters receive them via [`property: TestStep.subtitle`] and [`property: TestStep.params`]. For Playwright API
60+
steps, the subtitle is the locator or the navigation url — for example, `Click` with subtitle `getByRole('button')`.
61+
Both are rendered next to the step title in the trace viewer and the HTML report.
62+
63+
### 🖼️ Aria and screen snapshots in traces
64+
65+
The `snapshots` option of [`method: Tracing.start`] and the [`property: TestOptions.trace`] fixture option now accept an
66+
object selecting what to capture on every action:
67+
68+
```js title="playwright.config.ts"
69+
export default defineConfig({
70+
use: {
71+
trace: {
72+
mode: 'on',
73+
snapshots: { dom: true, aria: true, screen: true }
74+
},
75+
},
76+
});
77+
```
78+
79+
With aria and screen snapshots recorded, the new **Display Aria** mode in the trace viewer shows the action screenshot
80+
side by side with the aria snapshot, and hovering an aria node highlights it on the screenshot.
81+
82+
### New APIs
83+
84+
#### Browser and Context
85+
86+
- [`option: Browser.newContext.httpCredentials`] now also accepts an array of credentials. The first entry matching the request origin is used, and entries without an origin match any request.
87+
- New option [`option: BrowserContext.storageState.opfs`] includes the [origin private file system](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system) in the storage state, so it can be persisted and restored into later contexts.
88+
- New events [`event: Page.dialogClosed`] and [`event: BrowserContext.dialogClosed`] are emitted when a JavaScript dialog is accepted, dismissed or closed by the user.
89+
90+
#### Locators
91+
92+
- New [`method: Locator.ariaSnapshotJSON`] and [`method: Page.ariaSnapshotJSON`] return the aria snapshot as a JSON value instead of YAML markup, with `mode`, `depth` and `boxes` options.
93+
- [`method: APIRequestContext.get`] and other request methods accept a type argument that types the response `json()`:
94+
95+
```js
96+
const response = await request.get<User>('/api/users/42');
97+
const user = await response.json(); // typed as User
98+
```
99+
100+
#### Test runner
101+
102+
- New standalone [`property: TestOptions.reducedMotion`], [`property: TestOptions.forcedColors`] and [`property: TestOptions.contrast`] options.
103+
- New `--add-reporter` command line option appends a reporter on top of the ones configured in `playwright.config`, instead of replacing them like `--reporter` does.
104+
- New `omitTags` option for the `list`, `line`, `dot`, `github` and `junit` reporters suppresses the tags that are automatically appended to test titles.
105+
106+
#### Command line
107+
108+
- `npx playwright install --no-remove` keeps the browsers of other Playwright installations instead of removing them.
109+
- `npx playwright codegen --http-credentials` records against pages behind HTTP authentication.
110+
111+
#### Miscellaneous
112+
113+
- New built-in [`perfetto`](./test-reporters.md#perfetto-reporter) reporter writes a Trace Event Format file for the [Perfetto UI](https://ui.perfetto.dev) or `chrome://tracing`, rendering the test run as a timeline with a lane per worker.
114+
- The HTML report renders a duration waterfall next to test steps.
115+
116+
### Announcements
117+
118+
* ⚠️ The experimental `@playwright/experimental-ct-react`, `@playwright/experimental-ct-react17` and `@playwright/experimental-ct-vue` packages will no longer be updated. Follow the [migration guide](./test-components.md#migration-from-the-experimental-packages) to move to the stories model introduced in 1.62. Story ids passed to [`method: Fixtures.mount`] can now be typed through the generated `Stories` registry.
119+
* ⚠️ Ubuntu 20.04 is not supported anymore.
120+
* 🐧 On Linux arm64, Playwright now downloads the [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing) build of Chromium, the same build used on all other platforms.
121+
122+
### Browser Versions
123+
124+
- Chromium 153.0.8010.12
125+
- Mozilla Firefox 155.0
126+
- WebKit 26.6
127+
128+
This version was also tested against the following stable channels:
129+
130+
- Google Chrome 153
131+
- Microsoft Edge 153
132+
9133
## Version 1.62
10134

11135
### 🧱 New component testing model

0 commit comments

Comments
 (0)