Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] [expanded=false] in role selector returns elements without aria-expanded attribute #18920

Closed
ozyx opened this issue Nov 18, 2022 · 0 comments · Fixed by #18929
Closed
Assignees

Comments

@ozyx
Copy link

ozyx commented Nov 18, 2022

Context:

  • Playwright Version: 1.25.2
  • Operating System: MacOS
  • Node.js version: 18
  • Browser: Chromium
  • Extra: [any specific details about your environment]

Describe the bug

In the ARIA treeitem role spec, it states:

Each parent node should include the aria-expanded attribute. It is set to false when closed true when open. End nodes should not have the aria-expanded attribute included as the presence of the attribute indicates to assistive technologies that the node is a parent.

However, when using a role selector role=treeitem[expanded=false], Playwright will match on treeitem elements that don't have the aria-expanded attribute (end nodes).

Example (our implementation of tree role, truncated a bit):

<div role="tree" aria-expanded="true" class="c-tree-and-search__tree c-tree">
  <div
    class="c-tree__item-h"
    style="left: -1000px; position: absolute; visibility: hidden"
  >
<!-- etc... -->
      <div
        role="treeitem"
        class="c-tree__item-h"
        aria-expanded="true"
        style="top: 0px; position: absolute; padding-left: 0px"
      >
      </div>
      <div
        role="treeitem"
        class="c-tree__item-h"
        aria-expanded="true"
        style="top: 26px; position: absolute; padding-left: 18px"
      >
      </div>
      <div
        role="treeitem"
        class="c-tree__item-h"
        style="top: 52px; position: absolute; padding-left: 36px"
      >
      </div>
      <div
        role="treeitem"
        class="c-tree__item-h"
        aria-expanded="false"
        style="top: 78px; position: absolute; padding-left: 36px"
      >
      </div>
    </div>
  </div>

Notice "End Node", which does not have aria-expanded attribute and should not match [aria-expanded=false]:
image

... is being matched by the selector:
image

@ozyx ozyx changed the title [BUG] [expanded=false] in role selector returns elements without aria-expanded attribute [BUG] [expanded=false] in role selector returns elements without aria-expanded attribute Nov 18, 2022
dgozman added a commit that referenced this issue Nov 21, 2022
renovate bot referenced this issue in zarf-dev/zarf Nov 25, 2022
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/Microsoft/playwright)) | [`1.28.0` ->
`1.28.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.28.0/1.28.1)
|
[![age](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/compatibility-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/confidence-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [playwright](https://playwright.dev)
([source](https://togithub.com/Microsoft/playwright)) | [`1.28.0` ->
`1.28.1`](https://renovatebot.com/diffs/npm/playwright/1.28.0/1.28.1) |
[![age](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/compatibility-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/confidence-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>Microsoft/playwright</summary>

###
[`v1.28.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.28.0...v1.28.1)

#### Highlights

This patch release includes the following bug fixes:


[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928)
- \[BUG] Electron firstWindow times out after upgrading to
1.28.0[https://github.com/microsoft/playwright/issues/18920](https://togithub.com/microsoft/playwright/issues/18920)0
- \[BUG] \[expanded=false] in role selector returns elements without
aria-expanded
attribu[https://github.com/microsoft/playwright/issues/18865](https://togithub.com/microsoft/playwright/issues/18865)865
- \[BUG] regression in killing web server process in 1.28.0

#### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/defenseunicorns/zarf).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4zMC40IiwidXBkYXRlZEluVmVyIjoiMzQuMzAuNCJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bors bot referenced this issue in ttbud/ttbud Dec 11, 2022
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev) ([source](https://togithub.com/Microsoft/playwright)) | [`1.15.2` -> `1.28.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.15.2/1.28.1) | [![age](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/compatibility-slim/1.15.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/confidence-slim/1.15.2)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>Microsoft/playwright</summary>

### [`v1.28.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.28.0...v1.28.1)

#### Highlights

This patch release includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928) - \[BUG] Electron firstWindow times out after upgrading to 1.28.0[https://github.com/microsoft/playwright/issues/18920](https://togithub.com/microsoft/playwright/issues/18920)0 - \[BUG] \[expanded=false] in role selector returns elements without aria-expanded attribu[https://github.com/microsoft/playwright/issues/18865](https://togithub.com/microsoft/playwright/issues/18865)865 - \[BUG] regression in killing web server process in 1.28.0

#### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

### [`v1.28.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.0): v1.28

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.27.1...v1.28.0)

#### Playwright Tools

-   **Record at Cursor in VSCode.** You can run the test, position the cursor at the end of the test and continue generating the test.

<img alt="New VSCode Extension" width=600 src="https://user-images.githubusercontent.com/746130/202005839-aba2eeba-217b-424d-8496-8b4f5fa72f41.png">

-   **Live Locators in VSCode.** You can hover and edit locators in VSCode to get them  highlighted in the opened browser.
-   **Live Locators in CodeGen.** Generate a locator for any element on the page using "Explore" tool.

<img alt="Locator Explorer" src="https://user-images.githubusercontent.com/746130/201796876-01567a0b-ca61-4a9d-b12b-04786c471671.png" width=600>

-   **Codegen and Trace Viewer Dark Theme.** Automatically picked up from operating system settings.

<img alt="Dark Theme" src="https://user-images.githubusercontent.com/746130/201797969-603f74df-d7cf-4c56-befd-798dbd269796.png" width=600>

##### Test Runner

-   Configure retries and test timeout for a file or a test with [`test.describe.configure([options])`](https://playwright.dev/docs/api/class-test#test-describe-configure).

    ```js
    // Each test in the file will be retried twice and have a timeout of 20 seconds.
    test.describe.configure({ retries: 2, timeout: 20_000 });
    test('runs first', async ({ page }) => {});
    test('runs second', async ({ page }) => {});
    ```

-   Use [`testProject.snapshotPathTemplate`](https://playwright.dev/docs/api/class-testproject#test-project-snapshot-path-template) and [`testConfig.snapshotPathTemplate`](https://playwright.dev/docs/api/class-testconfig#test-config-snapshot-path-template) to configure a template controlling location of snapshots generated by [`expect(page).toHaveScreenshot(name[, options])`](https://playwright.dev/docs/test-assertions#page-assertions-to-have-screenshot-1) and [`expect(screenshot).toMatchSnapshot(name[, options])`](https://playwright.dev/docs/test-assertions#screenshot-assertions-to-match-snapshot-1).

    ```js
    // playwright.config.ts
    import type { PlaywrightTestConfig } from '@&#8203;playwright/test';

    const config: PlaywrightTestConfig = {
      testDir: './tests',
      snapshotPathTemplate: '{testDir}/__screenshots__/{testFilePath}/{arg}{ext}',
    };

    export default config;
    ```

##### New APIs

-   [`locator.blur([options])`](https://playwright.dev/docs/api/class-locator#locator-blur)
-   [`locator.clear([options])`](https://playwright.dev/docs/api/class-locator#locator-clear)
-   [`android.launchServer([options])`](https://playwright.dev/docs/api/class-android#android-launch-server) and [`android.connect(wsEndpoint[, options])`](https://playwright.dev/docs/api/class-android#android-connect)
-   [`androidDevice.on('close')`](https://playwright.dev/docs/api/class-androiddevice#android-device-event-close)

##### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

### [`v1.27.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.27.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.27.0...v1.27.1)

#### Highlights

This patch release includes the following bug fixes:

[https://github.com/microsoft/playwright/pull/18010](https://togithub.com/microsoft/playwright/pull/18010) - fix(generator): generate nice locators for arbitrary selectors
[https://github.com/microsoft/playwright/pull/17999](https://togithub.com/microsoft/playwright/pull/17999) - chore: don't fail on undefined video/trace
[https://github.com/microsoft/playwright/issues/17955](https://togithub.com/microsoft/playwright/issues/17955) - \[Question] Github Actions test compatibility check failed mitigation?[https://github.com/microsoft/playwright/issues/17960](https://togithub.com/microsoft/playwright/issues/17960)0 - \[BUG] Codegen 1.27 creates NUnit code that does not compil[https://github.com/microsoft/playwright/pull/17952](https://togithub.com/microsoft/playwright/pull/17952)52 - fix: fix typo in treeitem role typing

#### Browser Versions

-   Chromium 107.0.5304.18
-   Mozilla Firefox 105.0.1
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 106
-   Microsoft Edge 106

### [`v1.27.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.27.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.26.1...v1.27.0)

##### Locators

With these new APIs, inspired by [Testing Library](https://testing-library.com/), writing locators is a joy:

-   [`page.getByText(text, options)`](https://playwright.dev/docs/api/class-page#page-get-by-text) to locate by text content.
-   [`page.getByRole(role, options)`](https://playwright.dev/docs/api/class-page#page-get-by-role) to locate by [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).
-   [`page.getByLabel(label, options)`](https://playwright.dev/docs/api/class-page#page-get-by-label) to locate a form control by associated label's text.
-   [`page.getByPlaceholder(placeholder, options)`](https://playwright.dev/docs/api/class-page#page-get-by-placeholder) to locate an input by placeholder.
-   [`page.getByAltText(altText, options)`](https://playwright.dev/docs/api/class-page#page-get-by-alt-text) to locate an element, usually image, by its text alternative.
-   [`page.getByTitle(title, options)`](https://playwright.dev/docs/api/class-page#page-get-by-title) to locate an element by its title.

```js
await page.getByLabel('User Name').fill('John');

await page.getByLabel('Password').fill('secret-password');

await page.getByRole('button', { name: 'Sign in' }).click();

await expect(page.getByText('Welcome, John!')).toBeVisible();
```

All the same methods are also available on [Locator](https://playwright.dev/docs/api/class-locator), [FrameLocator](https://playwright.dev/docs/api/class-framelocator) and [Frame](https://playwright.dev/docs/api/class-frame) classes.

##### Other highlights

-   `workers` option in the `playwright.config.ts` now accepts a percentage string to use some of the available CPUs. You can also pass it in the command line:
    ```bash
    npx playwright test --workers=20%
    ```

-   New options `host` and `port` for the html reporter.
    ```js
    reporters: [['html', { host: 'localhost', port: '9223' }]]
    ```

-   New field `FullConfig.configFile` is available to test reporters, specifying the path to the config file if any.

-   As announced in v1.25, Ubuntu 18 will not be supported as of Dec 2022. In addition to that, there will be no WebKit updates on Ubuntu 18 starting from the next Playwright release.

##### Behavior Changes

-   [`expect(locator).toHaveAttribute(name, value, options)`](https://playwright.dev/docs/test-assertions#locator-assertions-to-have-attribute) with an empty value does not match missing attribute anymore. For example, the following snippet will succeed when `button` **does not** have a `disabled` attribute.

    ```js
    await expect(page.getByRole('button')).toHaveAttribute('disabled', '');
    ```

-   Command line options `--grep` and `--grep-invert` previously incorrectly ignored `grep` and `grepInvert` options specified in the config. Now all of them are applied together.

-   JSON reporter path resolution is performed relative to the config directory instead of the current working directory:

    ```js
    ["json", { outputFile: "./test-results/results.json" }]]
    ```

##### Browser Versions

-   Chromium 107.0.5304.18
-   Mozilla Firefox 105.0.1
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 106
-   Microsoft Edge 106

### [`v1.26.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.26.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.26.0...v1.26.1)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/17500](https://togithub.com/microsoft/playwright/issues/17500) - \[BUG] No tests found using the test explorer - pw/[email protected]

#### Browser Versions

-   Chromium 106.0.5249.30
-   Mozilla Firefox 104.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 105
-   Microsoft Edge 105

### [`v1.26.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.26.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.25.2...v1.26.0)

#### Assertions

-   New option enabled for [`expect(locator).toBeEnabled([options])`](https://playwright.dev/docs/test-assertions#locator-assertions-to-be-enabled).
-   [`expect(locator).toHaveText(expected[, options])`](https://playwright.dev/docs/test-assertions#locator-assertions-to-have-text) now pierces open shadow roots.
-   New option editable for [`expect(locator).toBeEditable([options])`](https://playwright.dev/docs/test-assertions#locator-assertions-to-be-editable).
-   New option visible for [`expect(locator).toBeVisible([options])`](https://playwright.dev/docs/test-assertions#locator-assertions-to-be-visible).

#### Other Highlights

-   New option `maxRedirects` for [`apiRequestContext.get(url[, options])`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get) and others to limit redirect count.
-   New command-line flag `--pass-with-no-tests` that allows the test suite to pass when no files are found.
-   New command-line flag `--ignore-snapshots` to skip snapshot expectations, such as `expect(value).toMatchSnapshot()` and `expect(page).toHaveScreenshot()`.

#### Behavior Change

A bunch of Playwright APIs already support the waitUntil: 'domcontentloaded' option. For example:

```ts
await page.goto('https://playwright.dev', {
  waitUntil: 'domcontentloaded',
});
```

Prior to 1.26, this would wait for all iframes to fire the `DOMContentLoaded` event.

To align with web specification, the `'domcontentloaded'` value only waits for the target frame to fire the `'DOMContentLoaded'` event. Use `waitUntil: 'load'` to wait for all iframes.

#### Browser Versions

-   Chromium 106.0.5249.30
-   Mozilla Firefox 104.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 105
-   Microsoft Edge 105

### [`v1.25.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.25.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.25.1...v1.25.2)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/16937](https://togithub.com/microsoft/playwright/issues/16937) - \[REGRESSION]: session storage failing >= 1.25.0 in firefox[https://github.com/microsoft/playwright/issues/16955](https://togithub.com/microsoft/playwright/issues/16955)5 - Not using channel on config file when Show and Reuse browser is checked

#### Browser Versions

-   Chromium 105.0.5195.19
-   Mozilla Firefox 103.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 104
-   Microsoft Edge 104

### [`v1.25.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.25.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.25.0...v1.25.1)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/16319](https://togithub.com/microsoft/playwright/issues/16319) - \[BUG] webServer.command esbuild fails with ESM and Yarn[https://github.com/microsoft/playwright/issues/16460](https://togithub.com/microsoft/playwright/issues/16460)0 - \[BUG] Component test fails on 2nd run when SSL is use[https://github.com/microsoft/playwright/issues/16665](https://togithub.com/microsoft/playwright/issues/16665)65 - \[BUG] custom selector engines don't work when running in debug mode

#### Browser Versions

-   Chromium 105.0.5195.19
-   Mozilla Firefox 103.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 104
-   Microsoft Edge 104

### [`v1.25.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.25.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.24.2...v1.25.0)

#### VSCode Extension

-   **New Playwright actions view**

    <img width="246" alt="Playwright actions" src="https://user-images.githubusercontent.com/883973/184041259-812722f2-26e3-4561-a972-a1c7973f1332.png">

-   **Pick selector**
    You can pick selector right from a live page, before or after running a test

    <img width="660" alt="Pick selector" src="https://user-images.githubusercontent.com/883973/184041462-288b9458-1650-4789-bd9e-b60d2ccd11dc.png">

-   **Record new test**
    Start recording where you left off with the new 'Record new test' feature.

-   **Show & reuse browser**
    Watch your tests running live & keep devtools open. Develop while continuously running tests.

<img width="660" alt="extension screenshot" src="https://user-images.githubusercontent.com/746130/184043183-1b3932ec-2ca9-4775-a10e-e6fbb20f9a95.jpg">

#### Test Runner

-   [`test.step(title, body)`](https://playwright.dev/docs/api/class-test#test-step) now returns the value of the step function:

    ```ts
    test('should work', async ({ page }) => {
        const pageTitle = await test.step('get title', async () => {
            await page.goto('https://playwright.dev');
            return await page.title();
        });
        console.log(pageTitle);
    });
    ```

-   Added [`test.describe.fixme(title, callback)`](https://playwright.dev/docs/api/class-test#test-describe-fixme).

-   New `'interrupted'` test status.

-   Enable tracing via CLI flag: `npx playwright test --trace=on`.

-   New property [`testCase.id`](https://playwright.dev/docs/api/class-testcase#test-case-id) that can be use in reporters as a history ID.

#### Announcements

-   🎁 We now ship Ubuntu 22.04 Jammy Jellyfish docker image: `mcr.microsoft.com/playwright:v1.25.0-jammy`.
-   🪦 This is the last release with macOS 10.15 support (deprecated as of 1.21).
-   🪦 This is the last release with Node.js 12 support, we recommend upgrading to Node.js LTS (16).
-   ⚠️ Ubuntu 18 is now deprecated and will not be supported as of Dec 2022.

#### Browser Versions

-   Chromium 105.0.5195.19
-   Mozilla Firefox 103.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 104
-   Microsoft Edge 104

### [`v1.24.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.24.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.24.1...v1.24.2)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/15977](https://togithub.com/microsoft/playwright/issues/15977) - \[BUG] test.use of storage state regression in 1.24

#### Browser Versions

-   Chromium 104.0.5112.48
-   Mozilla Firefox 102.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.24.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.24.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.24.0...v1.24.1)

##### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/15898](https://togithub.com/microsoft/playwright/issues/15898) - \[BUG] Typescript error: The type for webServer config property (TestConfigWebServer) is not typed correctly[https://github.com/microsoft/playwright/issues/15913](https://togithub.com/microsoft/playwright/issues/15913)3 - \[BUG] hooksConfig is required for mount fixtur[https://github.com/microsoft/playwright/issues/15932](https://togithub.com/microsoft/playwright/issues/15932)32 - \[BUG] - Install MS Edge on CI Fails

##### Browser Versions

-   Chromium 104.0.5112.48
-   Mozilla Firefox 102.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.24.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.24.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.23.4...v1.24.0)

#### 🌍 Multiple Web Servers in `playwright.config.ts`

Launch multiple web servers, databases, or other processes by passing an array of configurations:

```ts
// playwright.config.ts
import type { PlaywrightTestConfig } from '@&#8203;playwright/test';
const config: PlaywrightTestConfig = {
  webServer: [
    {
      command: 'npm run start',
      port: 3000,
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI,
    },
    {
      command: 'npm run backend',
      port: 3333,
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI,
    }
  ],
  use: {
    baseURL: 'http://localhost:3000/',
  },
};
export default config;
```

#### 🐂 Debian 11 Bullseye Support

Playwright now supports Debian 11 Bullseye on x86\_64 for Chromium, Firefox and WebKit. Let us know
if you encounter any issues!

Linux support looks like this:

|          | Ubuntu 18.04 | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11
| :--- | :---: | :---: | :---: | :---: |
| Chromium | ✅ | ✅ | ✅ | ✅ |
| WebKit | ✅ | ✅ | ✅ | ✅ |
| Firefox | ✅ | ✅ | ✅ | ✅ |

#### 🕵️ Anonymous Describe

It is now possible to call [`test.describe(callback)`](https://playwright.dev/docs/api/class-test#test-describe-2) to create suites without a title. This is useful for giving a group of tests a common option with [`test.use(options)`](https://playwright.dev/docs/api/class-test#test-use).

```ts
test.describe(() => {
  test.use({ colorScheme: 'dark' });

  test('one', async ({ page }) => {
    // ...
  });

  test('two', async ({ page }) => {
    // ...
  });
});
```

#### 🧩 Component Tests Update

Playwright 1.24 Component Tests introduce `beforeMount` and `afterMount` hooks.
Use these to configure your app for tests.

##### Vue + Vue Router

For example, this could be used to setup App router in Vue.js:

```js
// src/component.spec.ts
import { test } from '@&#8203;playwright/experimental-ct-vue';
import { Component } from './mycomponent';

test('should work', async ({ mount }) => {
  const component = await mount(Component, {
    hooksConfig: {
      /* anything to configure your app */
    }
  });
});
```

```js
// playwright/index.ts
import { router } from '../router';
import { beforeMount } from '@&#8203;playwright/experimental-ct-vue/hooks';

beforeMount(async ({ app, hooksConfig }) => {
  app.use(router);
});
```

##### React + Next.js

A similar configuration in Next.js would look like this:

```js
// src/component.spec.jsx
import { test } from '@&#8203;playwright/experimental-ct-react';
import { Component } from './mycomponent';

test('should work', async ({ mount }) => {
  const component = await mount(<Component></Component>, {
    // Pass mock value from test into `beforeMount`.
    hooksConfig: {
      router: {
        query: { page: 1, per_page: 10 },
        asPath: '/posts'
      }
    }
  });
});
```

```js
// playwright/index.js
import router from 'next/router';
import { beforeMount } from '@&#8203;playwright/experimental-ct-react/hooks';

beforeMount(async ({ hooksConfig }) => {
  // Before mount, redefine useRouter to return mock value from test.
  router.useRouter = () => hooksConfig.router;
});
```

#### Browser Versions

-   Chromium 104.0.5112.48
-   Mozilla Firefox 102.0
-   WebKit 16.0

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.23.4`](https://togithub.com/microsoft/playwright/releases/tag/v1.23.4)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.23.3...v1.23.4)

#### Highlights

This patch includes the following bug fix:

[https://github.com/microsoft/playwright/issues/15717](https://togithub.com/microsoft/playwright/issues/15717) - \[REGRESSION]: Suddenly stopped working despite nothing having changed (`experimentalLoader.js:load` did not call the next hook in its chain and did not explicitly signal a short circuit)

#### Browser Versions

-   Chromium 104.0.5112.20
-   Mozilla Firefox 100.0.2
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.23.3`](https://togithub.com/microsoft/playwright/releases/tag/v1.23.3)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.23.2...v1.23.3)

##### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/15557](https://togithub.com/microsoft/playwright/issues/15557) - \[REGRESSION]: Event Listeners not being removed if same handler is used for different events

##### Browser Versions

-   Chromium 104.0.5112.20
-   Mozilla Firefox 100.0.2
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.23.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.23.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.23.1...v1.23.2)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/15273](https://togithub.com/microsoft/playwright/issues/15273) - \[BUG] LaunchOptions config has no effect after update to v1.23.0[https://github.com/microsoft/playwright/issues/15351](https://togithub.com/microsoft/playwright/issues/15351)1 - \[REGRESSION]: Component testing project does not compile anymor[https://github.com/microsoft/playwright/issues/15431](https://togithub.com/microsoft/playwright/issues/15431)31 - \[BUG] Regression: page.on('console') is ignored in 1.23

#### Browser Versions

-   Chromium 104.0.5112.20
-   Mozilla Firefox 100.0.2
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.23.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.23.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.23.0...v1.23.1)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/15219](https://togithub.com/microsoft/playwright/issues/15219) - \[REGRESSION]: playwright-core 1.23.0 issue with 'TypeError \[ERR_INVALID_ARG_TYPE]: The "listener" argument'

#### Browser Versions

-   Chromium 104.0.5112.20
-   Mozilla Firefox 100.0.2
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 103
-   Microsoft Edge 103

### [`v1.23.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.23.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.22.2...v1.23.0)

<a href="https://youtu.be/NRGOV46P3kU"><img src="https://user-images.githubusercontent.com/746130/177854522-a07f4701-9528-4bf9-bf0f-30fbdfb04c8c.png" width=340></a> <a href="https://youtu.be/NRGOV46P3kU">Playwright v1.23 updates</a>

#### Network Replay

Now you can record network traffic into a HAR file and re-use the data in your tests.

To record network into HAR file:

```bash
npx playwright open --save-har=github.har.zip https://github.com/microsoft
```

Alternatively, you can record HAR programmatically:

```ts
const context = await browser.newContext({
  recordHar: { path: 'github.har.zip' }
});
// ... do stuff ...
await context.close();
```

Use the new methods [`page.routeFromHAR()`](https://playwright.dev/docs/api/class-page#page-route-from-har) or [`browserContext.routeFromHAR()`](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har) to serve matching responses from the [HAR](http://www.softwareishard.com/blog/har-12-spec/) file:

```ts
await context.routeFromHAR('github.har.zip');
```

Read more in [our documentation](https://playwright.dev/docs/network#record-and-replay-requests).

##### Advanced Routing

You can now use [`route.fallback()`](https://playwright.dev/docs/api/class-route#route-fallback) to defer routing to other handlers.

Consider the following example:

```ts
// Remove a header from all requests.
test.beforeEach(async ({ page }) => {
  await page.route('**/*', route => {
    const headers = route.request().headers();
    delete headers['if-none-match'];
    route.fallback({ headers });
  });
});

test('should work', async ({ page }) => {
  await page.route('**/*', route => {
    if (route.request().resourceType() === 'image')
      route.abort();
    else
      route.fallback();
  });
});
```

Note that the new methods [`page.routeFromHAR()`](https://playwright.dev/docs/api/class-page#page-route-from-har) and [`browserContext.routeFromHAR()`](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har) also participate in routing and could be deferred to.

##### Web-First Assertions Update

-   New method [`expect(locator).toHaveValues()`](https://playwright.dev/docs/test-assertions#locator-assertions-to-have-values) that asserts all selected values of `<select multiple>` element.
-   Methods [`expect(locator).toContainText()`](https://playwright.dev/docs/test-assertions#locator-assertions-to-contain-text) and [`expect(locator).toHaveText()`](https://playwright.dev/docs/test-assertions#locator-assertions-to-have-text) now accept `ignoreCase` option.

##### Component Tests Update

-   Support for Vue2 via the [`@playwright/experimental-ct-vue2`](https://www.npmjs.com/package/@&#8203;playwright/experimental-ct-vue2) package.
-   Support for component tests for [create-react-app](https://www.npmjs.com/package/create-react-app) with components in `.js` files.

Read more about [component testing with Playwright](https://playwright.dev/docs/test-components).

##### Miscellaneous

-   If there's a service worker that's in your way, you can now easily disable it with a new context option [`serviceWorkers`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-service-workers):
    ```ts
    // playwright.config.ts
    export default {
      use: {
        serviceWorkers: 'block',
      }
    }
    ```
-   Using `.zip` path for [`recordHar`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-record-har) context option automatically zips the resulting HAR:
    ```ts
    const context = await browser.newContext({
      recordHar: {
        path: 'github.har.zip',
      }
    });
    ```
-   If you intend to edit HAR by hand, consider using the `"minimal"` HAR recording mode
    that only records information that is essential for replaying:
    ```ts
    const context = await browser.newContext({
      recordHar: {
        path: 'github.har.zip',
        mode: 'minimal',
      }
    });
    ```
-   Playwright now runs on Ubuntu 22 amd64 and Ubuntu 22 arm64. We also publish new docker image `mcr.microsoft.com/playwright:v1.23.0-focal`.

##### ⚠️ Breaking Changes ⚠️

WebServer is now considered "ready" if request to the specified port has any of the following HTTP status codes:

-   `200-299`
-   `300-399` (new)
-   `400`, `401`, `402`, `403` (new)

### [`v1.22.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.22.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.22.1...v1.22.2)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/14254](https://togithub.com/microsoft/playwright/issues/14254) - \[BUG] focus() function in version 1.22 closes dropdown (not of select type) instead of just focus on the option

#### Browser Versions

-   Chromium 102.0.5005.40
-   Mozilla Firefox 99.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 101
-   Microsoft Edge 101

### [`v1.22.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.22.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.22.0...v1.22.1)

##### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/14186](https://togithub.com/microsoft/playwright/issues/14186) - \[BUG] expect.toHaveScreenshot() generates an argument error

##### Browser Versions

-   Chromium 102.0.5005.40
-   Mozilla Firefox 99.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 101
-   Microsoft Edge 101

### [`v1.22.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.22.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.21.1...v1.22.0)

#### Introducing Component Testing (preview)

Playwright Test can now test your [React](https://reactjs.org/), [Vue.js](https://vuejs.org/) or [Svelte](https://svelte.dev/) components. You can use all the features of Playwright Test (such as parallelization, emulation & debugging) while running components in real browsers.

<a href="https://youtu.be/y3YxX4sFJbM">![component testing](https://user-images.githubusercontent.com/883973/169662902-deedc95e-12b9-4dfd-b37d-db249910de35.jpg)</a> <a href="https://youtu.be/y3YxX4sFJbM">Component Tests (Preview)</a>

Here is what a typical component test looks like:

```tsx
// App.spec.tsx
import { test, expect } from '@&#8203;playwright/experimental-ct-react';
import App from './App';

// Let's test component in a dark scheme!
test.use({ colorScheme: 'dark' });

test('should render', async ({ mount }) => {
  const component = await mount(<App></App>);

  // As with any Playwright test, assert locator text.
  await expect(component).toContainText('React');
  // Or do a screenshot 🚀
  await expect(component).toHaveScreenshot();
  // Or use any Playwright method
  await component.click();
});
```

Read more in [our documentation](https://playwright.dev/docs/test-components).

***

<a href="https://youtu.be/keV2CIgtBlg">![release update](https://user-images.githubusercontent.com/883973/169663011-23156ebf-c5a9-4eea-91bf-06b555dc60e9.jpg)</a> <a href="https://youtu.be/keV2CIgtBlg">Playwright v1.22 updates</a>

#### Locators Update

-   Role selectors 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).

    ```ts
    // Click a button with accessible name "log in"
    await page.click('role=button[name="log in"]')
    ```

    Read more in [our documentation](https://playwright.dev/docs/selectors#role-selector).

-   New [`locator.filter([options])`](https://playwright.dev/docs/api/class-locator#locator-filter) API to filter an existing locator
    ```ts
    const buttons = page.locator('role=button');
    // ...
    const submitButton = buttons.filter({ hasText: 'Submit' });
    await submitButton.click();
    ```

#### Screenshots Update

New web-first assertions [`expect(page).toHaveScreenshot()`](https://playwright.dev/docs/test-assertions#page-assertions-to-have-screenshot) and [`expect(locator).toHaveScreenshot()`](https://playwright.dev/docs/test-assertions#locator-assertions-to-have-screenshot) that wait for screenshot stabilization and enhances test reliability.

The new assertions has screenshot-specific defaults, such as:

-   disables animations
-   uses CSS scale option

```ts
await page.goto('https://playwright.dev');
await expect(page).toHaveScreenshot();
```

The new [`expect(page).toHaveScreenshot()`](https://playwright.dev/docs/test-assertions#page-assertions-to-have-screenshot) saves screenshots at the same location as [`expect(screenshot).toMatchSnapshot()`](https://playwright.dev/docs/test-assertions#screenshot-assertions-to-match-snapshot-1).

#### Browser Versions

-   Chromium 102.0.5005.40
-   Mozilla Firefox 99.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 101
-   Microsoft Edge 101

### [`v1.21.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.21.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.21.0...v1.21.1)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/pull/13597](https://togithub.com/microsoft/playwright/pull/13597) - \[BUG] fullyParallel created too many workers, slowing down test run[https://github.com/microsoft/playwright/issues/13530](https://togithub.com/microsoft/playwright/issues/13530)0 - \[REGRESSION]: Pull request [#&#8203;12877](https://togithub.com/Microsoft/playwright/issues/12877) prevents the library from being used on any linux distro that is not Ubuntu

#### 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

### [`v1.21.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.21.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.20.2...v1.21.0)

<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

### [`v1.20.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.20.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.20.1...v1.20.2)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/13078](https://togithub.com/microsoft/playwright/issues/13078) - \[BUG] Extension required when importing other files with type="module"[https://github.com/microsoft/playwright/issues/13099](https://togithub.com/microsoft/playwright/issues/13099)9 - \[BUG] beforeAll is called before each test (fullyParallel[https://github.com/microsoft/playwright/issues/13204](https://togithub.com/microsoft/playwright/issues/13204)04 - \[BUG] mask stalls the screenshot

#### Browser Versions

-   Chromium 101.0.4921.0
-   Mozilla Firefox 97.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 99
-   Microsoft Edge 99

### [`v1.20.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.20.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.20.0...v1.20.1)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/12711](https://togithub.com/microsoft/playwright/issues/12711) - \[REGRESSION] Page.screenshot hangs on some sites[https://github.com/microsoft/playwright/issues/12807](https://togithub.com/microsoft/playwright/issues/12807)7 - \[BUG] Cookies get assigned before fulfilling a respons[https://github.com/microsoft/playwright/issues/12814](https://togithub.com/microsoft/playwright/issues/12814)14 - \[Question] how to use expect.any in playwrig[https://github.com/microsoft/playwright/issues/12821](https://togithub.com/microsoft/playwright/issues/12821)821 - \[BUG] Chromium: Cannot click, element intercepts pointer eve[https://github.com/microsoft/playwright/issues/12836](https://togithub.com/microsoft/playwright/issues/12836)2836 - \[REGRESSION]: Tests not detected as ES module in v[https://github.com/microsoft/playwright/issues/12862](https://togithub.com/microsoft/playwright/issues/12862)12862 - \[Feature] Allow to use toMatchSnapshot for file formats other than txt (e.g.[https://github.com/microsoft/playwright/issues/12887](https://togithub.com/microsoft/playwright/issues/12887)/12887 - \[BUG] Locator.count() with \_vue selector wit[https://github.com/microsoft/playwright/issues/12940](https://togithub.com/microsoft/playwright/issues/12940)es/12940 - \[BUG] npm audit - High Severity vulnerability in json5 package forcing to install Playwrigh[https://github.com/microsoft/playwright/issues/12974](https://togithub.com/microsoft/playwright/issues/12974)ues/12974 - \[BUG] Regression - chromium browser closes during test or debugging session on macos

#### Browser Versions

-   Chromium 101.0.4921.0
-   Mozilla Firefox 97.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 99
-   Microsoft Edge 99

### [`v1.20.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.20.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.19.2...v1.20.0)

<a href="https://youtu.be/6vV-XXKsrbA">![release-1.20](https://user-images.githubusercontent.com/883973/169663565-0b99510a-cca2-44f6-8c49-60c9569eb0a5.jpg)</a> <a href="https://youtu.be/6vV-XXKsrbA">Playwright v1.20 updates</a>

#### Highlights

-   New options for methods [`page.screenshot()`](https://playwright.dev/docs/api/class-page#page-screenshot), [`locator.screenshot()`](https://playwright.dev/docs/api/class-locator#locator-screenshot) and [`elementHandle.screenshot()`](https://playwright.dev/docs/api/class-elementhandle#element-handle-screenshot):
    -   Option `animations: "disabled"` rewinds all CSS animations and transitions to a consistent state.
    -   Option `mask: Locator[]` masks given elements, overlaying them with pink `#FF00FF` boxes.

-   [`expect().toMatchSnapshot()`](https://playwright.dev/docs/test-assertions#screenshot-assertions-to-match-snapshot) now supports anonymous snapshots: when snapshot name is missing, Playwright Test will generate one
    automatically:

    ```js
    expect('Web is Awesome <3').toMatchSnapshot();
    ```

-   New `maxDiffPixels` and `maxDiffPixelRatio` options for fine-grained screenshot comparison using [`expect().toMatchSnapshot()`](https://playwright.dev/docs/test-assertions#screenshot-assertions-to-match-snapshot):

    ```js
    expect(await page.screenshot()).toMatchSnapshot({
      maxDiffPixels: 27, // allow no more than 27 different pixels.
    });
    ```

    It is most convenient to specify `maxDiffPixels` or `maxDiffPixelRatio` once in [`TestConfig.expect`](https://playwright.dev/docs/api/class-testconfig#test-config-expect).

-   Playwright Test now adds [`TestConfig.fullyParallel`](https://playwright.dev/docs/api/class-testconfig#test-config-fully-parallel) mode. By default, Playwright Test parallelizes between files. In fully parallel mode, tests inside a single file are also run in parallel. You can also use `--fully-parallel` command line flag.

    ```ts
    // playwright.config.ts
    export default {
      fullyParallel: true,
    };
    ```

-   [`TestProject.grep`](https://playwright.dev/docs/api/class-testproject#test-project-grep) and [`TestProject.grepInvert`](https://playwright.dev/docs/api/class-testproject#test-project-grep-invert) are now configurable per project. For example, you can now
    configure smoke tests project using `grep`:
    ```ts
    // playwright.config.ts
    export default {
      projects: [
        {
          name: 'smoke tests',
          grep: /@&#8203;smoke/,
        },
      ],
    };
    ```

-   [Trace Viewer](https://playwright.dev/docs/trace-viewer) now shows [API testing requests](https://playwright.dev/docs/test-api-testing).

-   [`locator.highlight()`](https://playwright.dev/docs/api/class-locator#locator-highlight) visually reveals element(s) for easier debugging.

#### Announcements

-   We now ship a designated Python docker image `mcr.microsoft.com/playwright/python`. Please switch over to it if you use Python. This is the last release that includes Python inside our javascript `mcr.microsoft.com/playwright` docker image.
-   v1.20 is the last release to receive WebKit update for macOS 10.15 Catalina. Please update MacOS to keep using latest & greatest WebKit!

#### Browser Versions

-   Chromium 101.0.4921.0
-   Mozilla Firefox 97.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 99
-   Microsoft Edge 99

### [`v1.19.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.19.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.19.1...v1.19.2)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/12091](https://togithub.com/microsoft/playwright/issues/12091) - \[BUG] playwright 1.19.0 generates more than 1 trace file per test[https://github.com/microsoft/playwright/issues/12106](https://togithub.com/microsoft/playwright/issues/12106)6 - \[BUG] Error: EBUSY: resource busy or locked when using volumes in docker-compose with playwright 1.19.0 and mcr.microsoft.com/playwright:v1.15.0-focal

#### Browser Versions

-   Chromium 100.0.4863.0
-   Mozilla Firefox 96.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 98
-   Microsoft Edge 98

### [`v1.19.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.19.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.19.0...v1.19.1)

#### Highlights

This patch includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/12075](https://togithub.com/microsoft/playwright/issues/12075) - \[Question] After update to 1.19 firefox fails to run[https://github.com/microsoft/playwright/issues/12090](https://togithub.com/microsoft/playwright/issues/12090)0 - \[BUG] did something change on APIRequest/Response APIs ?

#### Browser Versions

-   Chromium 100.0.4863.0
-   Mozilla Firefox 96.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 98
-   Microsoft Edge 98

### [`v1.19.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.19.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.18.1...v1.19.0)

<a href="https://youtu.be/z0EOFvlf14U">![release-1.19](https://user-images.githubusercontent.com/883973/169663681-d82de420-fd32-4280-9431-8deea1efd5f3.jpg)</a> <a href="https://youtu.be/z0EOFvlf14U">Playwright v1.19 updates</a>

##### Playwright Test Updates

##### Soft assertions

Playwright Test v1.19 now supports **soft assertions**. Failed soft assertions **do not** terminate test execution, but mark the test as failed. Read more in [our documentation](https://playwright.dev/docs/test-assertions#soft-assertions).

```js
// Make a few checks that will not stop the test when failed...
await expect.soft(page.locator('#status')).toHaveText('Success');
await expect.soft(page.locator('#eta')).toHaveText('1 day');

// ... and continue the test to check more things.
await page.locator('#next-page').click();
await expect.soft(page.locator('#title')).toHaveText('Make another order');
```

##### Custom error messages

You can now specify a [**custom error message**](https://playwright.dev/docs/test-assertions#custom-error-message) as a second argument to the `expect` and `expect.soft` functions, for example:

```js
await expect(page.locator('text=Name'), 'should be logged in').toBeVisible();
```

The error would look like this:

```bash
    Error: should be logged in

    Call log:
      - expect.toBeVisible with timeout 5000ms
      - waiting for selector "text=Name"

      2 |
      3 | test('example test', async({ page }) => {
    > 4 |   await expect(page.locator('text=Name'), 'should be logged in').toBeVisible();
        |                                                                  ^
      5 | });
      6 |
```

##### Parallel mode in file

By default, tests in a single file are run in order. If you have many independent tests in a single file, you can now
run them in parallel with [`method: test.describe.configure`](https://playwright.dev/docs/api/class-test#test-describe-configure):

```js
import { test } from '@&#8203;playwright/test';

test.describe.configure({ mode: 'parallel' });

test('parallel 1', async () => {});
test('parallel 2', async () => {});
```

##### [⚠️](https://emojipedia.org/warning/#:~:text=A%20triangle%20with%20an%20exclamation,to%20Emoji%201.0%20in%202015.) Potentially breaking change in Playwright Test Global Setup

It is unlikely that this change will affect you, no action is required if your tests keep running as they did.

We've noticed that in rare cases, the set of tests to be executed was configured in the global setup by means of the environment variables. We also noticed some applications that were post processing the reporters' output in the global teardown. If you are doing one of the two, [learn more](https://togithub.com/microsoft/playwright/issues/12018)

##### Locator Updates

##### Locator now supports a `has` option that makes sure it contains another locator inside:

```js
await page.locator('article', {
  has: page.locator('.highlight'),
}).locator('button').click();
```

The snippet above will select article that has highlight in it and will press the button in it.
Read more in [locator documentation](https://playwright.dev/docs/api/class-locator#locator-locator-option-has)

##### Other Updates

-   New [`method: Locator.page`](https://playwright.dev/docs/api/class-locator#locator-page)
-   [`method: Page.screenshot`](https://playwright.dev/docs/api/class-page#page-screenshot) and [`method: Locator.screenshot`](https://playwright.dev/docs/api/class-locator#locator-screenshot) now automatically hides blinking caret
-   Playwright Codegen now generates locators and frame locators
-   New option `url`  in [`testConfig.webServer`](https://playwright.dev/docs/api/class-testconfig#test-config-web-server) to ensure your web server is ready before running the tests
-   New [`property: TestInfo.errors`](https://playwright.dev/docs/api/class-testinfo#test-info-errors) and [`property: TestResult.errors`](https://playwright.dev/docs/api/class-testresult#test-result-errors) that contain all failed assertions and soft assertions.

#### Browser Versions

-   Chromium 100.0.4863.0
-   Mozilla Firefox 96.0.1
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 98
-   Microsoft Edge 98

***

### [`v1.18.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.18.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.18.0...v1.18.1)

#### Highlights

This patch includes improvements to the TypeScript support and the following bug fixes:

[https://github.com/microsoft/playwright/issues/11550](https://togithub.com/microsoft/playwright/issues/11550) - \[REGRESSION]: Errors inside route handler does not lead to unhandled rejections anymore[https://github.com/microsoft/playwright/issues/11552](https://togithub.com/microsoft/playwright/issues/11552)2 - \[BUG] Could not resolve "C:\repo\framework\utils" in file C:\repo\tests\test.ts.

#### Browser Versions

-   Chromium 99.0.4812.0
-   Mozilla Firefox 95.0
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 97
-   Microsoft Edge 97

### [`v1.18.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.18.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.17.2...v1.18.0)

<a href="https://youtu.be/ABLYpw2BN_g">![release-1.18](https://user-images.githubusercontent.com/883973/169663725-400d1b08-7278-4322-9d42-8e4ec1199a9a.jpg)</a> <a href="https://youtu.be/ABLYpw2BN_g">Playwright v1.18 updates</a>

#### Locator Improvements

-   [`locator.dragTo(locator)`][locator.dragTo(locator)]
-   [`expect(locator).toBeChecked({ checked })`][expect(locator).toBeChecked({ checked })]
-   Each locator can now be optionally filtered by the text it contains:
    ```js
    await page.locator('li', { hasText: 'my item' }).locator('button').click();
    ```
    Read more in [locator documentation].

#### Testing API improvements

-   [`expect(response).toBeOK()`][expect(response).toBeOK()]
-   [`testInfo.attach()`][testInfo.attach()]
-   [`test.info()`][test.info()]

#### Improved TypeScript Support

1.  Playwright Test now respects `tsconfig.json`'s [`baseUrl`](https://www.typescriptlang.org/tsconfig#baseUrl) and [`paths`](https://www.typescriptlang.org/tsconfig#paths), so you can use aliases
2.  There is a new environment variable `PW_EXPERIMENTAL_TS_ESM` that allows importing ESM modules in your TS code, without the need for the compile step. Don't forget the `.js` suffix when you are importing your esm modules. Run your tests as follows:

```bash
npm i --save-dev @&#8203;playwright/[email protected]
PW_EXPERIMENTAL_TS_ESM=1 npx playwright test
```

#### Create Playwright

The `npm init playwright` command is now generally available for your use:

```sh

### Run from your project's root directory
npm init playwright

### Or create a new project
npm init playwright new-project
```

This will scaffold everything needed to get started with Playwright Test: configuration file, optionally add examples, a GitHub Action workflow and a first test `example.spec.ts`.

#### New APIs & changes

-   new [`testCase.repeatEachIndex`][testCase.repeatEachIndex] API
-   [`acceptDownloads`][acceptDownloads] option now defaults to `true`

#### Breaking change: custom config options

Custom config options are a convenient way to parametrize projects with different values. Learn more in the [parametrization guide].

Previously, any fixture introduced through [`test.extend`][test.extend] could be overridden in the [`testProject.use`][testProject.use] config section. For example,

```js
// WRONG: THIS SNIPPET DOES NOT WORK SINCE v1.18.

// fixtures.js
const test = base.extend({
  myParameter: 'default',
});

// playwright.config.js
module.exports = {
  use: {
    myParameter: 'value',
  },
};
```

The proper way to make a fixture parametrized in the config file is to specify `option: true` when defining the fixture. For example,

```js
// CORRECT: THIS SNIPPET WORKS SINCE v1.18.

// fixtures.js
const test = base.extend({
  // Fixtures marked as "option: true" will get a value specified in the config,
  // or fallback to the default value.
  myParameter: ['default', { option: true }],
});

// playwright.config.js
module.exports = {
  use: {
    myParameter: 'value',
  },
};
```

#### Browser Versions

-   Chromium 99.0.4812.0
-   Mozilla Firefox 95.0
-   WebKit 15.4

This version was also tested against the following stable channels:

-   Google Chrome 97
-   Microsoft Edge 97

***

[`locator.dragTo(locator)`]: https://playwright.dev/docs/api/class-locator#locator-drag-to

[`expect(locator).toBeChecked({ checked })`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-checked

[locator documentation]: https://playwright.dev/docs/api/class-locator#locator-locator-option-has-text

[`expect(response).toBeOK()`]: https://playwright.dev/docs/api/class-apiresponseassertions

[`testInfo.attach()`]: https://playwright.dev/docs/api/class-testinfo#test-info-attach

[`test.info()`]: https://playwright.dev/docs/api/class-test#test-info

[`testCase.repeatEachIndex`]: https://playwright.dev/docs/api/class-testcase#test-case-repeat-each-index

[parametrization guide]: https://playwright.dev/docs/test-parameterize#parameterized-projects

[`acceptDownloads`]: https://playwright.dev/docs/api/class-browser#browser-new-context-option-accept-downloads

[`test.extend`]: https://playwright.dev/docs/api/class-test#test-extend

[`testProject.use`]: https://playwright.dev/docs/api/class-testproject#test-project-use

(`1.18.0-beta-1642620709000`)

### [`v1.17.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.17.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.17.1...v1.17.2)

#### Bugfixes

[#&#8203;11274](https://togithub.com/Microsoft/playwright/issues/11274) - fix: pin colors to 1.4.0
[#&#8203;11228](https://togithub.com/Microsoft/playwright/issues/11228) - fix(click): don't fail on stale context while click

### [`v1.17.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.17.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.17.0...v1.17.1)

#### Highlights

This patch includes bug fixes for the following issues:

[https://github.com/microsoft/playwright/issues/10638](https://togithub.com/microsoft/playwright/issues/10638) - \[BUG] Locator.click -> subtree intercepts pointer events since version 1.17.0[https://github.com/microsoft/playwright/issues/10632](https://togithub.com/microsoft/playwright/issues/10632)2 - \[BUG] Playwright 1.17.0 -> After clicking the element - I get an error that click action was faile[https://github.com/microsoft/playwright/issues/10627](https://togithub.com/microsoft/playwright/issues/10627)27 - \[REGRESSION]: Can no longer click Material UI select b[https://github.com/microsoft/playwright/issues/10620](https://togithub.com/microsoft/playwright/issues/10620)620 - \[BUG] trailing zero width whitespace fails toHaveText

#### Browser Versions

-   Chromium 98.0.4695.0
-   Mozilla Firefox 94.0.1
-   WebKit 15.4

This version of Playwright was also tested against the following stable channels:

-   Google Chrome 96
-   Microsoft Edge 96

***

(1.17.1)

### [`v1.17.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.17.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.16.3...v1.17.0)

<a href="https://youtu.be/7iyIdeoAP04">![release-1.17](https://user-images.githubusercontent.com/883973/169663759-f810a03f-6488-436a-835a-21d18bed8fb1.jpg)</a> <a href="https://youtu.be/7iyIdeoAP04">Playwright v1.17 updates</a>

#### Frame Locators

Playwright 1.17 introduces [frame locators] - a locator to the iframe on the page. Frame locators capture the logic sufficient to retrieve the `iframe` and then locate elements in that iframe. Frame locators are strict by default, will wait for `iframe` to appear and can be used in Web-First assertions.

![Graphics](https://user-images.githubusercontent.com/746130/142082759-2170db38-370d-43ec-8d41-5f9941f57d83.png)

Frame locators can be created with either [`page.frameLocator(selector)`][page.frameLocator(selector)] or [`locator.frameLocator(selector)`][locator.frameLocator(selector)] method.

```js
const locator = page.frameLocator('#my-iframe').locator('text=Submit');
await locator.click();
```

Read more at [our documentation](https://playwright.dev/docs/next/api/class-framelocator).

#### Trace Viewer Update

Playwright Trace Viewer is now **available online** at https://trace.playwright.dev! Just drag-and-drop your `trace.zip` file to inspect its contents.

> **NOTE**: trace files are not uploaded anywhere; [trace.playwright.dev](https://trace.playwright.dev) is a [progressive web application](https://web.dev/progressive-web-apps/) that processes traces locally.

-

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/ttbud/ttbud).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yMDIuNCIsInVwZGF0ZWRJblZlciI6IjM0LjUxLjAifQ==-->
trunk-io bot referenced this issue in hashintel/hash Jan 25, 2023
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev) ([source](https://togithub.com/Microsoft/playwright)) | [`1.28.0` -> `1.30.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.28.0/1.30.0) | [![age](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.30.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.30.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.30.0/compatibility-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.30.0/confidence-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/) |
| [playwright](https://playwright.dev) ([source](https://togithub.com/Microsoft/playwright)) | [`1.28.0` -> `1.30.0`](https://renovatebot.com/diffs/npm/playwright/1.28.0/1.30.0) | [![age](https://badges.renovateapi.com/packages/npm/playwright/1.30.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/playwright/1.30.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/playwright/1.30.0/compatibility-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/playwright/1.30.0/confidence-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>Microsoft/playwright</summary>

### [`v1.30.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.30.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.29.2...v1.30.0)

##### Browser Versions

-   Chromium 110.0.5481.38
-   Mozilla Firefox 108.0.2
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 109
-   Microsoft Edge 109

### [`v1.29.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.29.2)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.29.1...v1.29.2)

##### Highlights

[https://github.com/microsoft/playwright/issues/19661](https://togithub.com/microsoft/playwright/issues/19661) - \[BUG] 1.29.1 browserserver + page.goto = net::ERR_SOCKS_CONNECTION_FAILED

##### Browser Versions

-   Chromium 109.0.5414.46
-   Mozilla Firefox 107.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 108
-   Microsoft Edge 108

### [`v1.29.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.29.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.29.0...v1.29.1)

##### Highlights

[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928) - \[BUG] Electron firstWindow times out after upgrading to 1.28.0[https://github.com/microsoft/playwright/issues/19246](https://togithub.com/microsoft/playwright/issues/19246)6 - \[BUG] Electron firstWindow times out after upgrading to 1.28.[https://github.com/microsoft/playwright/issues/19412](https://togithub.com/microsoft/playwright/issues/19412)12 - \[REGRESSION]: 1.28 does not work with electron-serve anymor[https://github.com/microsoft/playwright/issues/19540](https://togithub.com/microsoft/playwright/issues/19540)540 - \[BUG] electron.app.getAppPath() returns the path one level higher if you run electron pointing to the direct[https://github.com/microsoft/playwright/issues/19548](https://togithub.com/microsoft/playwright/issues/19548)9548 - \[REGRESSION]: Ubuntu 18 LTS not supported anymore

##### Browser Versions

-   Chromium 109.0.5414.46
-   Mozilla Firefox 107.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 108
-   Microsoft Edge 108

### [`v1.29.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.29.0)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.28.1...v1.29.0)

#### New APIs

-   New method [`route.fetch()`](https://playwright.dev/docs/api/class-route#route-fetch) and new option `json` for [`route.fulfill()`](https://playwright.dev/docs/api/class-route#route-fulfill):

    ```js
    await page.route('**/api/settings', async route => {
      // Fetch original settings.
      const response = await route.fetch();

      // Force settings theme to a predefined value.
      const json = await response.json();
      json.theme = 'Solorized';

      // Fulfill with modified data.
      await route.fulfill({ json });
    });
    ```

-   New method [`locator.all()`](https://playwright.dev/docs/api/class-locator#locator-all) to iterate over all matching elements:

    ```js
    // Check all checkboxes!
    const checkboxes = page.getByRole('checkbox');
    for (const checkbox of await checkboxes.all())
      await checkbox.check();
    ```

-   [`Locator.selectOption`](https://playwright.dev/docs/api/class-locator#locator-select-option) matches now by value or label:

    ```html
    <select multiple>
      <option value="red">Red</div>
      <option value="green">Green</div>
      <option value="blue">Blue</div>
    </select>
    ```

    ```js
    await element.selectOption('Red');
    ```

-   Retry blocks of code until all assertions pass:

    ```js
    await expect(async () => {
      const response = await page.request.get('https://api.example.com');
      await expect(response).toBeOK();
    }).toPass();
    ```

    Read more in [our documentation](https://playwright.dev/docs/test-assertions#retrying).

-   Automatically capture **full page screenshot** on test failure:
    ```js
    // playwright.config.ts
    import type { PlaywrightTestConfig } from '@&#8203;playwright/test';

    const config: PlaywrightTestConfig = {
      use: {
        screenshot: {
          mode: 'only-on-failure',
          fullPage: true,
        }
      }
    };

    export default config;
    ```

#### Miscellaneous

-   Playwright Test now respects [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig).
-   New options `args` and `proxy` for [`androidDevice.launchBrowser()`](https://playwright.dev/docs/api/class-androiddevice#android-device-launch-browser).
-   Option `postData` in method [`route.continue()`](https://playwright.dev/docs/api/class-route#route-continue) now supports [serializable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description) values.

#### Browser Versions

-   Chromium 109.0.5414.46
-   Mozilla Firefox 107.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 108
-   Microsoft Edge 108

### [`v1.28.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.1)

[Compare Source](https://togithub.com/Microsoft/playwright/compare/v1.28.0...v1.28.1)

#### Highlights

This patch release includes the following bug fixes:

[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928) - \[BUG] Electron firstWindow times out after upgrading to 1.28.0[https://github.com/microsoft/playwright/issues/18920](https://togithub.com/microsoft/playwright/issues/18920)0 - \[BUG] \[expanded=false] in role selector returns elements without aria-expanded attribu[https://github.com/microsoft/playwright/issues/18865](https://togithub.com/microsoft/playwright/issues/18865)865 - \[BUG] regression in killing web server process in 1.28.0

#### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/hashintel/hash).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMTEuMSIsInVwZGF0ZWRJblZlciI6IjM0LjExMS4xIn0=-->
Noxsios referenced this issue in zarf-dev/zarf Mar 8, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/Microsoft/playwright)) | [`1.28.0` ->
`1.28.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.28.0/1.28.1)
|
[![age](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/compatibility-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.28.1/confidence-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [playwright](https://playwright.dev)
([source](https://togithub.com/Microsoft/playwright)) | [`1.28.0` ->
`1.28.1`](https://renovatebot.com/diffs/npm/playwright/1.28.0/1.28.1) |
[![age](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/compatibility-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/playwright/1.28.1/confidence-slim/1.28.0)](https://docs.renovatebot.com/merge-confidence/)
|

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>Microsoft/playwright</summary>

###
[`v1.28.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.28.0...v1.28.1)

#### Highlights

This patch release includes the following bug fixes:


[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928)
- \[BUG] Electron firstWindow times out after upgrading to
1.28.0[https://github.com/microsoft/playwright/issues/18920](https://togithub.com/microsoft/playwright/issues/18920)0
- \[BUG] \[expanded=false] in role selector returns elements without
aria-expanded
attribu[https://github.com/microsoft/playwright/issues/18865](https://togithub.com/microsoft/playwright/issues/18865)865
- \[BUG] regression in killing web server process in 1.28.0

#### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/defenseunicorns/zarf).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4zMC40IiwidXBkYXRlZEluVmVyIjoiMzQuMzAuNCJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Skn0tt referenced this issue in quirrel-dev/quirrel Jun 20, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/Microsoft/playwright)) | [`1.27.1` ->
`1.35.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.27.1/1.35.1)
|
[![age](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.35.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.35.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.35.1/compatibility-slim/1.27.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@playwright%2ftest/1.35.1/confidence-slim/1.27.1)](https://docs.renovatebot.com/merge-confidence/)
|
| [playwright](https://playwright.dev)
([source](https://togithub.com/Microsoft/playwright)) | [`1.27.1` ->
`1.35.1`](https://renovatebot.com/diffs/npm/playwright/1.27.1/1.35.1) |
[![age](https://badges.renovateapi.com/packages/npm/playwright/1.35.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/playwright/1.35.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/playwright/1.35.1/compatibility-slim/1.27.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/playwright/1.35.1/confidence-slim/1.27.1)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Microsoft/playwright</summary>

###
[`v1.35.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.35.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.35.0...v1.35.1)

##### Highlights


[https://github.com/microsoft/playwright/issues/23622](https://togithub.com/microsoft/playwright/issues/23622)
- \[Docs] Provide a description how to correctly use expect.configure
with poll
parameter[https://github.com/microsoft/playwright/issues/23666](https://togithub.com/microsoft/playwright/issues/23666)6
- \[BUG] Live Trace does not work with
Codespace[https://github.com/microsoft/playwright/issues/23693](https://togithub.com/microsoft/playwright/issues/23693)93
- \[BUG] attachment steps are not hidden inside
expect.toHaveScreenshot()

##### Browser Versions

-   Chromium 115.0.5790.13
-   Mozilla Firefox 113.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 114
-   Microsoft Edge 114

###
[`v1.35.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.35.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.34.3...v1.35.0)

##### Highlights

- UI mode is now available in VSCode Playwright extension via a new
"Show trace viewer" button:

![Playwright UI
Mode](https://togithub.com/microsoft/playwright/assets/746130/13094128-259b-477a-8bbb-c1181178e8a2)

- UI mode and trace viewer mark network requests handled with
[`page.route()`](https://playwright.dev/docs/api/class-page#page-route)
and
[`browserContext.route()`](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
handlers, as well as those issued via the [API
testing](https://playwright.dev/docs/api-testing):

![Trace
Viewer](https://togithub.com/microsoft/playwright/assets/746130/0df2d4b6-faa3-465c-aff3-c435b430bfe1)

- New option `maskColor` for methods
[`page.screenshot()`](https://playwright.dev/docs/api/class-page#page-screenshot),
[`locator.screenshot()`](https://playwright.dev/docs/api/class-locator#locator-screenshot),
[`expect(page).toHaveScreenshot()`](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1)
and
[`expect(locator).toHaveScreenshot()`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1)
to change default masking color:
    ```js
    await page.goto('https://playwright.dev');
    await expect(page).toHaveScreenshot({
      mask: [page.locator('img')],
      maskColor: '#&#8203;00FF00', // green
    });
    ```

-   New `uninstall` CLI command to uninstall browser binaries:
    ```bash
$ npx playwright uninstall # remove browsers installed by this
installation
$ npx playwright uninstall --all # remove all ever-install Playwright
browsers
    ```

-   Both UI mode and trace viewer now could be opened in a browser tab:
    ```bash
$ npx playwright test --ui-port 0 # open UI mode in a tab on a random
port
$ npx playwright show-trace --port 0 # open trace viewer in tab on a
random port
    ```

##### ⚠️ Breaking changes

- `playwright-core` binary got renamed from `playwright` to
`playwright-core`. So if you use `playwright-core` CLI, make sure to
update the name:

    ```bash
$ npx playwright-core install # the new way to install browsers when
using playwright-core
    ```

This change **does not** affect `@playwright/test` and `playwright`
package users.

##### Browser Versions

-   Chromium 115.0.5790.13
-   Mozilla Firefox 113.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 114
-   Microsoft Edge 114

###
[`v1.34.3`](https://togithub.com/microsoft/playwright/releases/tag/v1.34.3)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.34.2...v1.34.3)

#### Highlights


[https://github.com/microsoft/playwright/issues/23228](https://togithub.com/microsoft/playwright/issues/23228)
- \[BUG] Getting "Please install
[@&#8203;playwright/test](https://togithub.com/playwright/test)
package..." after upgrading from 1.34.0 to 1.34.1

#### Browser Versions

-   Chromium 114.0.5735.26
-   Mozilla Firefox 113.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 113
-   Microsoft Edge 113

###
[`v1.34.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.34.2)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.34.1...v1.34.2)

#### Highlights


[https://github.com/microsoft/playwright/issues/23225](https://togithub.com/microsoft/playwright/issues/23225)
- \[BUG] VSCode Extension broken with Playwright 1.34.1

#### Browser Versions

-   Chromium 114.0.5735.26
-   Mozilla Firefox 113.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 113
-   Microsoft Edge 113

###
[`v1.34.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.34.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.34.0...v1.34.1)

#### Highlights


[https://github.com/microsoft/playwright/issues/23186](https://togithub.com/microsoft/playwright/issues/23186)
- \[BUG] Container image for v1.34.0 missing library for
webkit[https://github.com/microsoft/playwright/issues/23206](https://togithub.com/microsoft/playwright/issues/23206)6
- \[BUG] Unable to install supported browsers for v1.34.0 from
playwright-cor[https://github.com/microsoft/playwright/issues/23207](https://togithub.com/microsoft/playwright/issues/23207)07
- \[BUG] importing ES Module JSX component is broken since 1.34

#### Browser Versions

-   Chromium 114.0.5735.26
-   Mozilla Firefox 113.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 113
-   Microsoft Edge 113

###
[`v1.34.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.34.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.33.0...v1.34.0)

##### Highlights

- UI Mode now shows steps, fixtures and attachments: <img
src="https://github.com/microsoft/playwright/assets/746130/1d280419-d79a-4a56-b2dc-54d631281d56"
width=640>

- New property
[`testProject.teardown`](https://playwright.dev/docs/api/class-testproject#test-project-teardown)
to specify a project that needs to run after this
and all dependent projects have finished. Teardown is useful to cleanup
any resources acquired by this project.

A common pattern would be a `setup` dependency with a corresponding
`teardown`:

    ```js
    // playwright.config.ts
    import { defineConfig } from '@&#8203;playwright/test';

    export default defineConfig({
      projects: [
        {
          name: 'setup',
          testMatch: /global.setup\.ts/,
          teardown: 'teardown',
        },
        {
          name: 'teardown',
          testMatch: /global.teardown\.ts/,
        },
        {
          name: 'chromium',
          use: devices['Desktop Chrome'],
          dependencies: ['setup'],
        },
        {
          name: 'firefox',
          use: devices['Desktop Firefox'],
          dependencies: ['setup'],
        },
        {
          name: 'webkit',
          use: devices['Desktop Safari'],
          dependencies: ['setup'],
        },
      ],
    });
    ```

- New method
[`expect.configure`](https://playwright.dev/docs/test-assertions#expectconfigure)
to create pre-configured expect instance with its own defaults such as
`timeout` and `soft`.
    ```js
    const slowExpect = expect.configure({ timeout: 10000 });
    await slowExpect(locator).toHaveText('Submit');

    // Always do soft assertions.
    const softExpect = expect.configure({ soft: true });
    ```

- New options `stderr` and `stdout` in
[`testConfig.webServer`](https://playwright.dev/docs/api/class-testconfig#test-config-web-server)
to configure output handling:

    ```js
    // playwright.config.ts
    import { defineConfig } from '@&#8203;playwright/test';

    export default defineConfig({
      // Run your local dev server before starting the tests
      webServer: {
        command: 'npm run start',
        url: 'http://127.0.0.1:3000',
        reuseExistingServer: !process.env.CI,
        stdout: 'pipe',
        stderr: 'pipe',
      },
    });
    ```

- New
[`locator.and()`](https://playwright.dev/docs/api/class-locator#locator-and)
to create a locator that matches both locators.

    ```js
const button =
page.getByRole('button').and(page.getByTitle('Subscribe'));
    ```

- New events
[`browserContext.on('console')`](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-console)
and
[`browserContext.on('dialog')`](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
to subscribe to any dialogs
and console messages from any page from the given browser context. Use
the new methods
[`consoleMessage.page()`](https://playwright.dev/docs/api/class-consolemessage#console-message-page)
and
[`dialog.page()`](https://playwright.dev/docs/api/class-dialog#dialog-page)
to pin-point event source.

##### ⚠️ Breaking changes

- `npx playwright test` no longer works if you install both `playwright`
and `@playwright/test`. There's no need
to install both, since you can always import browser automation APIs
from `@playwright/test` directly:

    ```js
    // automation.ts
    import { chromium, firefox, webkit } from '@&#8203;playwright/test';
    /* ... */
    ```
- Node.js 14 is no longer supported since it [reached its
end-of-life](https://nodejs.dev/en/about/releases/) on April 30, 2023.

##### Browser Versions

-   Chromium 114.0.5735.26
-   Mozilla Firefox 113.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 113
-   Microsoft Edge 113

###
[`v1.33.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.33.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.32.3...v1.33.0)

##### Locators Update

- Use [`locator.or()`][locator.or()] to create a locator that matches
either of the two locators.
Consider a scenario where you'd like to click on a "New email" button,
but sometimes a security settings dialog shows up instead.
In this case, you can wait for either a "New email" button, or a dialog
and act accordingly:

    ```js
    const newEmail = page.getByRole('button', { name: 'New' });
    const dialog = page.getByText('Confirm security settings');
    await expect(newEmail.or(dialog)).toBeVisible();
    if (await dialog.isVisible())
      await page.getByRole('button', { name: 'Dismiss' }).click();
    await newEmail.click();
    ```
- Use new options `hasNot` and `hasNotText` in
[`locator.filter()`][locator.filter()]
    to find elements that **do not match** certain conditions.

    ```js
    const rowLocator = page.locator('tr');
    await rowLocator
        .filter({ hasNotText: 'text in column 1' })
.filter({ hasNot: page.getByRole('button', { name: 'column 2 button' })
})
        .screenshot();
    ```
- Use new web-first assertion
[`locatorAssertions.toBeAttached()`][locatorAssertions.toBeAttached()]
to ensure that the element
is present in the page's DOM. Do not confuse with the
[`locatorAssertions.toBeVisible()`][locatorAssertions.toBeVisible()]
that ensures that
    element is both attached & visible.

##### New APIs

-   [`locator.or()`][locator.or()]
-   New option `hasNot` in [`locator.filter()`][locator.filter()]
-   New option `hasNotText` in [`locator.filter()`][locator.filter()]
- [`locatorAssertions.toBeAttached()`][locatorAssertions.toBeAttached()]
-   New option `timeout` in [`route.fetch()`][route.fetch()]
-   [`reporter.onExit()`][reporter.onExit()]

##### ⚠️ Breaking change

- The `mcr.microsoft.com/playwright:v1.33.0` now serves a Playwright
image based on Ubuntu Jammy.
To use the focal-based image, please use
`mcr.microsoft.com/playwright:v1.33.0-focal` instead.

##### Browser Versions

-   Chromium 113.0.5672.53
-   Mozilla Firefox 112.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 112
-   Microsoft Edge 112

[`locator.or()`]:
https://playwright.dev/docs/api/class-locator#locator-or

[`reporter.onExit()`]:
https://playwright.dev/docs/api/class-reporter#reporter-on-exit

[`locator.filter()`]:
https://playwright.dev/docs/api/class-locator#locator-filter

[`locatorAssertions.toBeAttached()`]:
https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-attached

[`locatorAssertions.toBeVisible()`]:
https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible

[`route.fetch()`]:
https://playwright.dev/docs/api/class-route#route-fetch

###
[`v1.32.3`](https://togithub.com/microsoft/playwright/releases/tag/v1.32.3)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.32.2...v1.32.3)

##### Highlights


[https://github.com/microsoft/playwright/issues/22144](https://togithub.com/microsoft/playwright/issues/22144)
- \[BUG] WebServer only starting after
timeout[https://github.com/microsoft/playwright/pull/22191](https://togithub.com/microsoft/playwright/pull/22191)1
- chore: allow reusing browser between the
tests[https://github.com/microsoft/playwright/issues/22215](https://togithub.com/microsoft/playwright/issues/22215)5
- \[BUG] Tests failing in toPass often marked as passed

##### Browser Versions

-   Chromium 112.0.5615.29
-   Mozilla Firefox 111.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 111
-   Microsoft Edge 111

###
[`v1.32.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.32.2)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.32.1...v1.32.2)

##### Highlights


[https://github.com/microsoft/playwright/issues/21993](https://togithub.com/microsoft/playwright/issues/21993)
- \[BUG] Browser crash when using Playwright VSC extension and
trace-viewer enabled in
config[https://github.com/microsoft/playwright/issues/22003](https://togithub.com/microsoft/playwright/issues/22003)3
- \[Feature] Make Vue component mount props less
restrictiv[https://github.com/microsoft/playwright/issues/22089](https://togithub.com/microsoft/playwright/issues/22089)89
- \[REGRESSION]: Tests failing with "Error: tracing.stopChunk"

##### Browser Versions

-   Chromium 112.0.5615.29
-   Mozilla Firefox 111.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 111
-   Microsoft Edge 111

###
[`v1.32.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.32.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.32.0...v1.32.1)

##### Highlights


[https://github.com/microsoft/playwright/issues/21832](https://togithub.com/microsoft/playwright/issues/21832)
- \[BUG] Trace is not opening on specific broken
locator[https://github.com/microsoft/playwright/issues/21897](https://togithub.com/microsoft/playwright/issues/21897)7
- \[BUG] --ui fails to open with error reading mainFrame from an
undefined
this.\_pa[https://github.com/microsoft/playwright/issues/21918](https://togithub.com/microsoft/playwright/issues/21918)918
- \[BUG]: UI mode, skipped tests not being
fo[https://github.com/microsoft/playwright/issues/21941](https://togithub.com/microsoft/playwright/issues/21941)1941
- \[BUG] UI mode does not show webServer startup
er[https://github.com/microsoft/playwright/issues/21953](https://togithub.com/microsoft/playwright/issues/21953)21953
- \[BUG] Parameterized tests are not displayed in the UI mode

##### Browser Versions

-   Chromium 112.0.5615.29
-   Mozilla Firefox 111.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 111
-   Microsoft Edge 111

###
[`v1.32.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.32.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.31.2...v1.32.0)

##### 📣 Introducing UI Mode (preview)

<a href="https://www.youtube.com/watch?v=jF0yA-JLQW0"><img
src="https://user-images.githubusercontent.com/746130/227044467-b4db82dc-c7fa-40d7-a0c8-8f702581c3b9.png"
width=340></a>

<a href="https://www.youtube.com/watch?v=jF0yA-JLQW0">Playwright v1.32
updates</a>

New UI Mode lets you explore, run and debug tests. Comes with a built-in
watch mode.

![Playwright UI
Mode](https://user-images.githubusercontent.com/746130/227004851-3901a691-4f8e-43d6-8d6b-cbfeafaeb999.png)

Engage with a new flag `--ui`:

```sh
npx playwright test --ui
```

##### New APIs

- New options `option: updateMode` and `option: updateContent` in
[`page.routeFromHAR()`](https://playwright.dev/docs/api/class-page#page-route-from-har)
and
[`browserContext.routeFromHAR()`](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har).
- Chaining existing locator objects, see [locator
docs](https://playwright.dev/docs/locators#chaining-locators) for
details.
- New property
[`TestInfo.testId`](https://playwright.dev/docs/api/class-testinfo#test-info-test-id).
- New option `name` in method
[`Tracing.startChunk()`](https://playwright.dev/docs/api/class-tracing#tracing-start-chunk).

##### ⚠️ Breaking change in component tests

Note: **component tests only**, does not affect end-to-end tests.

-   `@playwright/experimental-ct-react` now supports **React 18 only**.
- If you're running component tests with React 16 or 17, please replace
`@playwright/experimental-ct-react` with
`@playwright/experimental-ct-react17`.

##### Browser Versions

-   Chromium 112.0.5615.29
-   Mozilla Firefox 111.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 111
-   Microsoft Edge 111

###
[`v1.31.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.31.2)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.31.1...v1.31.2)

#### Highlights


[https://github.com/microsoft/playwright/issues/20784](https://togithub.com/microsoft/playwright/issues/20784)
- \[BUG] ECONNREFUSED on GitHub Actions with Node
18[https://github.com/microsoft/playwright/issues/21145](https://togithub.com/microsoft/playwright/issues/21145)5
- \[REGRESSION]: firefox-1378 times out on await page.reload() when URL
contains a
#has[https://github.com/microsoft/playwright/issues/21226](https://togithub.com/microsoft/playwright/issues/21226)26
- \[BUG] Playwright seems to get stuck when using shard option and last
test is
skipp[https://github.com/microsoft/playwright/issues/21227](https://togithub.com/microsoft/playwright/issues/21227)227
- Using the webServer config with a Vite dev
serve[https://github.com/microsoft/playwright/issues/21312](https://togithub.com/microsoft/playwright/issues/21312)312
- throw if defineConfig is not used for component testing

#### Browser Versions

-   Chromium 111.0.5563.19
-   Mozilla Firefox 109.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 110
-   Microsoft Edge 110

###
[`v1.31.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.31.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.31.0...v1.31.1)

#### Highlights


[https://github.com/microsoft/playwright/issues/21093](https://togithub.com/microsoft/playwright/issues/21093)
- \[Regression v1.31] Headless Windows shows cascading cmd
windows[https://github.com/microsoft/playwright/pull/21106](https://togithub.com/microsoft/playwright/pull/21106)6
- fix(loader): experimentalLoader with node@18

#### Browser Versions

-   Chromium 111.0.5563.19
-   Mozilla Firefox 109.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 110
-   Microsoft Edge 110

###
[`v1.31.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.31.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.30.0...v1.31.0)

#### New APIs

- New property
[`TestProject.dependencies`](https://playwright.dev/docs/api/class-testproject#test-project-dependencies)
to configure dependencies between projects.

Using dependencies allows global setup to produce traces and other
artifacts,
    see the setup steps in the test report and more.

    ```js
    // playwright.config.ts
    import { defineConfig } from '@&#8203;playwright/test';

    export default defineConfig({
      projects: [
        {
          name: 'setup',
          testMatch: /global.setup\.ts/,
        },
        {
          name: 'chromium',
          use: devices['Desktop Chrome'],
          dependencies: ['setup'],
        },
        {
          name: 'firefox',
          use: devices['Desktop Firefox'],
          dependencies: ['setup'],
        },
        {
          name: 'webkit',
          use: devices['Desktop Safari'],
          dependencies: ['setup'],
        },
      ],
    });
    ```

- New assertion
[`expect(locator).toBeInViewport()`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-in-viewport)
ensures that locator points to an element that intersects viewport,
according to the [intersection observer
API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API).

    ```js
    const button = page.getByRole('button');

    // Make sure at least some part of element intersects viewport.
    await expect(button).toBeInViewport();

    // Make sure element is fully outside of viewport.
    await expect(button).not.toBeInViewport();

    // Make sure that at least half of the element intersects viewport.
    await expect(button).toBeInViewport({ ratio: 0.5 });
    ```

#### Miscellaneous

- DOM snapshots in trace viewer can be now opened in a separate window.
-   New method `defineConfig` to be used in `playwright.config`.
- New option `maxRedirects` for method
[`Route.fetch`](https://playwright.dev/docs/api/class-route#route-fetch).
-   Playwright now supports Debian 11 arm64.
- Official [docker images](https://playwright.dev/docs/docker) now
include Node 18 instead of Node 16.

#### ⚠️ Breaking change in component tests

Note: **component tests only**, does not affect end-to-end tests.

`playwright-ct.config` configuration file for [component
testing](https://playwright.dev/docs/test-components) now requires
calling `defineConfig`.

```js
// Before

import { type PlaywrightTestConfig, devices } from '@&#8203;playwright/experimental-ct-react';
const config: PlaywrightTestConfig = {
  // ... config goes here ...
};
export default config;
```

Replace `config` variable definition with `defineConfig` call:

```js
// After

import { defineConfig, devices } from '@&#8203;playwright/experimental-ct-react';
export default defineConfig({
  // ... config goes here ...
});
```

#### Browser Versions

-   Chromium 111.0.5563.19
-   Mozilla Firefox 109.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 110
-   Microsoft Edge 110

###
[`v1.30.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.30.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.29.2...v1.30.0)

##### 🎉 Happy New Year 🎉

Maintenance release with bugfixes and new browsers only. We are baking
some nice features for v1.31.

##### Browser Versions

-   Chromium 110.0.5481.38
-   Mozilla Firefox 108.0.2
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 109
-   Microsoft Edge 109

###
[`v1.29.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.29.2)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.29.1...v1.29.2)

#### Highlights


[https://github.com/microsoft/playwright/issues/19661](https://togithub.com/microsoft/playwright/issues/19661)
- \[BUG] 1.29.1 browserserver + page.goto =
net::ERR_SOCKS_CONNECTION_FAILED

#### Browser Versions

-   Chromium 109.0.5414.46
-   Mozilla Firefox 107.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 108
-   Microsoft Edge 108

###
[`v1.29.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.29.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.29.0...v1.29.1)

#### Highlights


[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928)
- \[BUG] Electron firstWindow times out after upgrading to
1.28.0[https://github.com/microsoft/playwright/issues/19246](https://togithub.com/microsoft/playwright/issues/19246)6
- \[BUG] Electron firstWindow times out after upgrading to
1.28.[https://github.com/microsoft/playwright/issues/19412](https://togithub.com/microsoft/playwright/issues/19412)12
- \[REGRESSION]: 1.28 does not work with electron-serve
anymor[https://github.com/microsoft/playwright/issues/19540](https://togithub.com/microsoft/playwright/issues/19540)540
- \[BUG] electron.app.getAppPath() returns the path one level higher if
you run electron pointing to the
direct[https://github.com/microsoft/playwright/issues/19548](https://togithub.com/microsoft/playwright/issues/19548)9548
- \[REGRESSION]: Ubuntu 18 LTS not supported anymore

#### Browser Versions

-   Chromium 109.0.5414.46
-   Mozilla Firefox 107.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 108
-   Microsoft Edge 108

###
[`v1.29.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.29.0)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.28.1...v1.29.0)

#### New APIs

- New method
[`route.fetch()`](https://playwright.dev/docs/api/class-route#route-fetch)
and new option `json` for
[`route.fulfill()`](https://playwright.dev/docs/api/class-route#route-fulfill):

    ```js
    await page.route('**/api/settings', async route => {
      // Fetch original settings.
      const response = await route.fetch();

      // Force settings theme to a predefined value.
      const json = await response.json();
      json.theme = 'Solorized';

      // Fulfill with modified data.
      await route.fulfill({ json });
    });
    ```

- New method
[`locator.all()`](https://playwright.dev/docs/api/class-locator#locator-all)
to iterate over all matching elements:

    ```js
    // Check all checkboxes!
    const checkboxes = page.getByRole('checkbox');
    for (const checkbox of await checkboxes.all())
      await checkbox.check();
    ```

-
[`Locator.selectOption`](https://playwright.dev/docs/api/class-locator#locator-select-option)
matches now by value or label:

    ```html
    <select multiple>
      <option value="red">Red</div>
      <option value="green">Green</div>
      <option value="blue">Blue</div>
    </select>
    ```

    ```js
    await element.selectOption('Red');
    ```

-   Retry blocks of code until all assertions pass:

    ```js
    await expect(async () => {
const response = await page.request.get('https://api.example.com');
      await expect(response).toBeOK();
    }).toPass();
    ```

Read more in [our
documentation](https://playwright.dev/docs/test-assertions#retrying).

-   Automatically capture **full page screenshot** on test failure:
    ```js
    // playwright.config.ts
    import type { PlaywrightTestConfig } from '@&#8203;playwright/test';

    const config: PlaywrightTestConfig = {
      use: {
        screenshot: {
          mode: 'only-on-failure',
          fullPage: true,
        }
      }
    };

    export default config;
    ```

#### Miscellaneous

- Playwright Test now respects
[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig).
- New options `args` and `proxy` for
[`androidDevice.launchBrowser()`](https://playwright.dev/docs/api/class-androiddevice#android-device-launch-browser).
- Option `postData` in method
[`route.continue()`](https://playwright.dev/docs/api/class-route#route-continue)
now supports
[serializable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description)
values.
-   Ubuntu 18.04 is not supported anymore

#### Browser Versions

-   Chromium 109.0.5414.46
-   Mozilla Firefox 107.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 108
-   Microsoft Edge 108

###
[`v1.28.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.1)

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.28.0...v1.28.1)

#### Highlights

This patch release includes the following bug fixes:


[https://github.com/microsoft/playwright/issues/18928](https://togithub.com/microsoft/playwright/issues/18928)
- \[BUG] Electron firstWindow times out after upgrading to
1.28.0[https://github.com/microsoft/playwright/issues/18920](https://togithub.com/microsoft/playwright/issues/18920)0
- \[BUG] \[expanded=false] in role selector returns elements without
aria-expanded
attribu[https://github.com/microsoft/playwright/issues/18865](https://togithub.com/microsoft/playwright/issues/18865)865
- \[BUG] regression in killing web server process in 1.28.0

#### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

###
[`v1.28.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.28.0):
v1.28

[Compare
Source](https://togithub.com/Microsoft/playwright/compare/v1.27.1...v1.28.0)

#### Playwright Tools

- **Record at Cursor in VSCode.** You can run the test, position the
cursor at the end of the test and continue generating the test.

<img alt="New VSCode Extension" width=600
src="https://user-images.githubusercontent.com/746130/202005839-aba2eeba-217b-424d-8496-8b4f5fa72f41.png">

- **Live Locators in VSCode.** You can hover and edit locators in VSCode
to get them highlighted in the opened browser.
- **Live Locators in CodeGen.** Generate a locator for any element on
the page using "Explore" tool.

<img alt="Locator Explorer"
src="https://user-images.githubusercontent.com/746130/201796876-01567a0b-ca61-4a9d-b12b-04786c471671.png"
width=600>

- **Codegen and Trace Viewer Dark Theme.** Automatically picked up from
operating system settings.

<img alt="Dark Theme"
src="https://user-images.githubusercontent.com/746130/201797969-603f74df-d7cf-4c56-befd-798dbd269796.png"
width=600>

##### Test Runner

- Configure retries and test timeout for a file or a test with
[`test.describe.configure([options])`](https://playwright.dev/docs/api/class-test#test-describe-configure).

    ```js
// Each test in the file will be retried twice and have a timeout of 20
seconds.
    test.describe.configure({ retries: 2, timeout: 20_000 });
    test('runs first', async ({ page }) => {});
    test('runs second', async ({ page }) => {});
    ```

- Use
[`testProject.snapshotPathTemplate`](https://playwright.dev/docs/api/class-testproject#test-project-snapshot-path-template)
and
[`testConfig.snapshotPathTemplate`](https://playwright.dev/docs/api/class-testconfig#test-config-snapshot-path-template)
to configure a template controlling location of snapshots generated by
[`expect(page).toHaveScreenshot(name[,
options])`](https://playwright.dev/docs/test-assertions#page-assertions-to-have-screenshot-1)
and [`expect(screenshot).toMatchSnapshot(name[,
options])`](https://playwright.dev/docs/test-assertions#screenshot-assertions-to-match-snapshot-1).

    ```js
    // playwright.config.ts
    import type { PlaywrightTestConfig } from '@&#8203;playwright/test';

    const config: PlaywrightTestConfig = {
      testDir: './tests',
snapshotPathTemplate:
'{testDir}/__screenshots__/{testFilePath}/{arg}{ext}',
    };

    export default config;
    ```

##### New APIs

-
[`locator.blur([options])`](https://playwright.dev/docs/api/class-locator#locator-blur)
-
[`locator.clear([options])`](https://playwright.dev/docs/api/class-locator#locator-clear)
-
[`android.launchServer([options])`](https://playwright.dev/docs/api/class-android#android-launch-server)
and [`android.connect(wsEndpoint[,
options])`](https://playwright.dev/docs/api/class-android#android-connect)
-
[`androidDevice.on('close')`](https://playwright.dev/docs/api/class-androiddevice#android-device-event-close)

##### Browser Versions

-   Chromium 108.0.5359.29
-   Mozilla Firefox 106.0
-   WebKit 16.4

This version was also tested against the following stable channels:

-   Google Chrome 107
-   Microsoft Edge 107

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/quirrel-dev/quirrel).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNi4yIiwidXBkYXRlZEluVmVyIjoiMzUuMTMxLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants