v1.21.0
microsoft/playwrightv1.21.0Apr 12, 2022by aslushnikov
AI Summary
This release stabilizes experimental features like ARIA role selectors and introduces new screenshot options (`scale`, `caret`). It also adds `expect.poll` for waiting on arbitrary conditions and updates Docker support for large file uploads.
Key Highlights
- Added `expect.poll` method to wait for arbitrary conditions.
- Added `scale` and `caret` options to `Page.screenshot()`.
- ESM support for TypeScript tests is now enabled by default.
- Playwright now supports large file uploads (100s of MBs).
- Added ARIA role selectors (now officially supported).
Breaking Changes
- The base docker image no longer contains Python; use `mcr.microsoft.com/playwright/python` instead.
New Features
- `expect.poll` assertion.
- Screenshot `scale` and `caret` options.
- Large file upload support.
- Default ESM support for TypeScript.
Full Release Notes
<a href="https://youtu.be/45HZdbmgEw8"></a>
<a href="https://youtu.be/45HZdbmgEw8">Playwright v1.21 updates</a>
## Highlights
- New **experimental** role selectors that allow selecting elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles), [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
```js
// 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:
```js
// playwright.config.js
process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES = '1';
module.exports = {
/* ... */
};
```
Read more in [our documentation](https://playwright.dev/docs/selectors#role-selector).
- New `scale` option in [`Page.screenshot`](https://playwright.dev/docs/api/class-page#page-screenshot) for smaller sized screenshots.
- New `caret` option in [`Page.screenshot`](https://playwright.dev/docs/api/class-page#page-screenshot) to control text caret. Defaults to `"hide"`.
- New method `expect.poll` to wait for an arbitrary condition:
```js
// 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](https://playwright.dev/docs/test-assertions#polling).
## Behavior Changes
- ESM support when running TypeScript tests is now enabled by default. The `PLAYWRIGHT_EXPERIMENTAL_TS_ESM` env variable is
no longer required.
- The `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.
- Playwright now supports large file uploads (100s of MBs) via [`Locator.setInputFiles`](https://playwright.dev/docs/api/class-locator#locator-set-input-files) API.
## Browser Versions
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 100
- Microsoft Edge 100