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">![release 1.21](https://user-images.githubusercontent.com/883973/169663514-5f93834a-a0cc-49f8-be11-892010f89f09.jpg)</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