-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
[Feature] tags API #23180
Comments
I'm posting how this is solved in Cypress for a quick reference. // ...
it('works as an array', { tags: ['config', 'some-other-tag'] }, () => {
expect(true).to.be.true
})
// ... Source: https://github.com/cypress-io/cypress/tree/develop/npm/grep |
I would also prefer:
instead of:
because in cypress solution its again in the "testtitle" or lets say the same line ofc you can break the line here but you would have just have a ugly looking async function instead. also |
If anyone is in a rush with separating tags and the title in spec files, tests could also be decorated in this way with a bit of custom code. tags(['@describe']).describe('describe', async () => {
tags(['@test']).test('test', async () => {})
}) I wonder if it's even possible to code this feature exactly as suggested. |
Thats really wierd. I thought evertime for now that "tags" are under the suite coded. but here "tags" are a class above "describe"? But really hope here for native solution like described above. |
I estimate that the new tag syntax will not break the existing tags, but will be weird to find some tests using:
And others with:
Is there going to be a way to update old tests to use the new syntax via some command? For instance, |
The way Playwright works, this solution will require putting all tests in describe blocks if multiple tests will have different tags in the spec file. It will be a bit annoying.
|
@dgozman could you open some details how tags API will look like, if you already agreed on that? :) |
[![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://github.com/microsoft/playwright)) | [`^1.41.2` -> `^1.42.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`^1.41.2` -> `^1.42.0`](https://renovatebot.com/diffs/npm/playwright/1.41.2/1.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears: ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - `expect(callback).toPass()` timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [New syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported): ```js test('test customer login', { tag: ['@​fast', '@​login'], }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - `--project` command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard: ```sh npx playwright test --project='*mobile*' ``` - [New syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations: ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </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://developer.mend.io/github/fwouts/previewjs). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears: ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - `expect(callback).toPass()` timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [New syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported): ```js test('test customer login', { tag: ['@​fast', '@​login'], }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - `--project` command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard: ```sh npx playwright test --project='*mobile*' ``` - [New syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations: ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </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 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://developer.mend.io/github/ariakit/ariakit). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`~1.41.0` -> `~1.42.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears: ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - `expect(callback).toPass()` timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [New syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported): ```js test('test customer login', { tag: ['@​fast', '@​login'], }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - `--project` command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard: ```sh npx playwright test --project='*mobile*' ``` - [New syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations: ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 10pm every weekday,before 5am every weekday,every weekend" in timezone Europe/Paris, 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://developer.mend.io/github/AmadeusITGroup/otter). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears: ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - `expect(callback).toPass()` timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [New syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported): ```js test('test customer login', { tag: ['@​fast', '@​login'], }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - `--project` command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard: ```sh npx playwright test --project='*mobile*' ``` - [New syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations: ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </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://developer.mend.io/github/ckomop0x/currency-exchange). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.11.20` -> `20.11.24`](https://renovatebot.com/diffs/npm/@types%2fnode/20.11.20/20.11.24) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.11.20/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.11.20/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [happy-dom](https://github.com/capricorn86/happy-dom) | [`13.5.0` -> `13.6.2`](https://renovatebot.com/diffs/npm/happy-dom/13.5.0/13.6.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/13.5.0/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/13.5.0/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vue](https://github.com/vuejs/core/tree/main/packages/vue#readme) ([source](https://github.com/vuejs/core)) | [`3.4.19` -> `3.4.21`](https://renovatebot.com/diffs/npm/vue/3.4.19/3.4.21) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vue/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue/3.4.19/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue/3.4.19/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vue-tsc](https://github.com/vuejs/language-tools) ([source](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc)) | [`1.8.27` -> `2.0.1`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.27/2.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.27/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.27/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </details> <details> <summary>capricorn86/happy-dom (happy-dom)</summary> ### [`v13.6.2`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.2) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.6.1...v13.6.2) ##### 🎨 Features - Add support for the ":target" pseudo query selector - By **[@​Schleuse](https://github.com/Schleuse)** in task [#​1221](https://github.com/capricorn86/happy-dom/issues/1221) ##### 👷♂️ Patch fixes - The Event listener method `handleEvent()` should be called within the listener scope - By **[@​titouanmathis](https://github.com/titouanmathis)** in task [#​1182](https://github.com/capricorn86/happy-dom/issues/1182) ### [`v13.6.1`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.1) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.6.0...v13.6.1) ##### 👷♂️ Patch fixes - Improves validation for the options argument in `MutationsObserver.observe()` - By **[@​romansp](https://github.com/romansp)** in task [#​1223](https://github.com/capricorn86/happy-dom/issues/1223) ### [`v13.6.0`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.0) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.3...v13.6.0) ##### 🎨 Features - Adds support for `Node.isEqualNode()` - By **[@​aralroca](https://github.com/aralroca)** in task [#​1263](https://github.com/capricorn86/happy-dom/issues/1263) ##### 👷♂️ Patch fixes - Adds support for the property `Document.forms` - By **[@​juandiegombr](https://github.com/juandiegombr)** in task [#​1260](https://github.com/capricorn86/happy-dom/issues/1260) - Adds check for if `MutationObserver` options are null, which most likely happens for code that is executed after the Window instance has been closed - By **[@​zachlankton](https://github.com/zachlankton)** in task [#​1217](https://github.com/capricorn86/happy-dom/issues/1217) ### [`v13.5.3`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.3) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.2...v13.5.3) ##### 👷♂️ Patch fixes - Improves check for invalid query selectors - By **[@​btea](https://github.com/btea)** in task #​0 ### [`v13.5.2`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.2) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.1...v13.5.2) ##### 👷♂️ Patch fixes - Adds unit test for Vue component with SVG - By **[@​capricorn86](https://github.com/capricorn86)** in task [#​1271](https://github.com/capricorn86/happy-dom/issues/1271) ### [`v13.5.1`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.1) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.0...v13.5.1) ##### 👷♂️ Patch fixes - Fixes problem with query selectors not finding SVG elements after the v13.4.0 release - By **[@​capricorn86](https://github.com/capricorn86)** in task [#​1274](https://github.com/capricorn86/happy-dom/issues/1274) </details> <details> <summary>vuejs/core (vue)</summary> ### [`v3.4.21`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3421-2024-02-28) [Compare Source](https://github.com/vuejs/core/compare/v3.4.20...v3.4.21) ##### Bug Fixes - **runtime-dom:** avoid unset option's value ([#​10416](https://github.com/vuejs/core/issues/10416)) ([b3f8b5a](https://github.com/vuejs/core/commit/b3f8b5a4e700d4c47a146b6040882287d180f6cb)), closes [#​10412](https://github.com/vuejs/core/issues/10412) [#​10396](https://github.com/vuejs/core/issues/10396) - **suspense:** ensure nested suspense patching if in fallback state ([#​10417](https://github.com/vuejs/core/issues/10417)) ([7c97778](https://github.com/vuejs/core/commit/7c97778aec1e3513035e5df265e1b8a7801f6106)), closes [#​10415](https://github.com/vuejs/core/issues/10415) - **warning:** stringify args in warn handler ([#​10414](https://github.com/vuejs/core/issues/10414)) ([bc37258](https://github.com/vuejs/core/commit/bc37258caa2f6f67f4554ab8587aca3798d92124)), closes [#​10409](https://github.com/vuejs/core/issues/10409) ### [`v3.4.20`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3420-2024-02-26) [Compare Source](https://github.com/vuejs/core/compare/v3.4.19...v3.4.20) ##### Bug Fixes - **parser:** should not treat uppercase components as special tags ([e0e0253](https://github.com/vuejs/core/commit/e0e02535cdea1aeb1cfaff0d61d4b2555e555c36)), closes [#​10395](https://github.com/vuejs/core/issues/10395) - **runtime-dom:** avoid always resetting nullish option value ([ff130c4](https://github.com/vuejs/core/commit/ff130c470204086edaa093fb8fdc1247c69cba69)), closes [#​10396](https://github.com/vuejs/core/issues/10396) - **runtime-dom:** fix nested v-show priority regression ([364f890](https://github.com/vuejs/core/commit/364f8902c8657faec7c3a4d70a5b2c856567e92d)), closes [#​10338](https://github.com/vuejs/core/issues/10338) - **runtime-dom:** v-bind style should clear previous css string value ([#​10373](https://github.com/vuejs/core/issues/10373)) ([e2d3235](https://github.com/vuejs/core/commit/e2d323538e71d404e729148fd19a08bbc2e3da9b)), closes [#​10352](https://github.com/vuejs/core/issues/10352) - **suspense:** handle suspense switching with nested suspense ([#​10184](https://github.com/vuejs/core/issues/10184)) ([0f3da05](https://github.com/vuejs/core/commit/0f3da05ea201761529bb95594df1e2cee20b7107)), closes [#​10098](https://github.com/vuejs/core/issues/10098) - **types:** better typing for direct setup signature of defineComponent ([#​10357](https://github.com/vuejs/core/issues/10357)) ([eadce5b](https://github.com/vuejs/core/commit/eadce5b75356656fd2209ebdb406d34823c961b7)), closes [#​8604](https://github.com/vuejs/core/issues/8604) [#​8855](https://github.com/vuejs/core/issues/8855) </details> <details> <summary>vuejs/language-tools (vue-tsc)</summary> ### [`v2.0.1`](https://github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#201-202332) [Compare Source](https://github.com/vuejs/language-tools/compare/v2.0.0...v2.0.1) ##### Fixes - npm release does not include files ([#​3919](https://github.com/vuejs/language-tools/issues/3919)) ### [`v2.0.0`](https://github.com/vuejs/language-tools/compare/v1.8.27...aa47e5a7d8a6dae62cc80dbdb5db6a9bfa4f8715) [Compare Source](https://github.com/vuejs/language-tools/compare/v1.8.27...v2.0.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone Europe/Helsinki, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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/slipmatio/logger). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.11.20` -> `20.11.24`](https://renovatebot.com/diffs/npm/@types%2fnode/20.11.20/20.11.24) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.11.20/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.11.20/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [autoprefixer](https://github.com/postcss/autoprefixer) | [`10.4.17` -> `10.4.18`](https://renovatebot.com/diffs/npm/autoprefixer/10.4.17/10.4.18) | [![age](https://developer.mend.io/api/mc/badges/age/npm/autoprefixer/10.4.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/autoprefixer/10.4.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/autoprefixer/10.4.17/10.4.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/autoprefixer/10.4.17/10.4.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [happy-dom](https://github.com/capricorn86/happy-dom) | [`13.5.0` -> `13.6.2`](https://renovatebot.com/diffs/npm/happy-dom/13.5.0/13.6.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/13.5.0/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/13.5.0/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vue](https://github.com/vuejs/core/tree/main/packages/vue#readme) ([source](https://github.com/vuejs/core)) | [`3.4.19` -> `3.4.21`](https://renovatebot.com/diffs/npm/vue/3.4.19/3.4.21) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vue/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue/3.4.19/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue/3.4.19/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vue-tsc](https://github.com/vuejs/language-tools) ([source](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc)) | [`1.8.27` -> `2.0.1`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.27/2.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.27/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.27/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </details> <details> <summary>postcss/autoprefixer (autoprefixer)</summary> ### [`v10.4.18`](https://github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10418) [Compare Source](https://github.com/postcss/autoprefixer/compare/10.4.17...10.4.18) - Fixed removing `-webkit-box-orient` on `-webkit-line-clamp` ([@​Goodwine](https://github.com/Goodwine)). </details> <details> <summary>capricorn86/happy-dom (happy-dom)</summary> ### [`v13.6.2`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.2) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.6.1...v13.6.2) ##### 🎨 Features - Add support for the ":target" pseudo query selector - By **[@​Schleuse](https://github.com/Schleuse)** in task [#​1221](https://github.com/capricorn86/happy-dom/issues/1221) ##### 👷♂️ Patch fixes - The Event listener method `handleEvent()` should be called within the listener scope - By **[@​titouanmathis](https://github.com/titouanmathis)** in task [#​1182](https://github.com/capricorn86/happy-dom/issues/1182) ### [`v13.6.1`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.1) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.6.0...v13.6.1) ##### 👷♂️ Patch fixes - Improves validation for the options argument in `MutationsObserver.observe()` - By **[@​romansp](https://github.com/romansp)** in task [#​1223](https://github.com/capricorn86/happy-dom/issues/1223) ### [`v13.6.0`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.0) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.3...v13.6.0) ##### 🎨 Features - Adds support for `Node.isEqualNode()` - By **[@​aralroca](https://github.com/aralroca)** in task [#​1263](https://github.com/capricorn86/happy-dom/issues/1263) ##### 👷♂️ Patch fixes - Adds support for the property `Document.forms` - By **[@​juandiegombr](https://github.com/juandiegombr)** in task [#​1260](https://github.com/capricorn86/happy-dom/issues/1260) - Adds check for if `MutationObserver` options are null, which most likely happens for code that is executed after the Window instance has been closed - By **[@​zachlankton](https://github.com/zachlankton)** in task [#​1217](https://github.com/capricorn86/happy-dom/issues/1217) ### [`v13.5.3`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.3) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.2...v13.5.3) ##### 👷♂️ Patch fixes - Improves check for invalid query selectors - By **[@​btea](https://github.com/btea)** in task #​0 ### [`v13.5.2`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.2) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.1...v13.5.2) ##### 👷♂️ Patch fixes - Adds unit test for Vue component with SVG - By **[@​capricorn86](https://github.com/capricorn86)** in task [#​1271](https://github.com/capricorn86/happy-dom/issues/1271) ### [`v13.5.1`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.1) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.0...v13.5.1) ##### 👷♂️ Patch fixes - Fixes problem with query selectors not finding SVG elements after the v13.4.0 release - By **[@​capricorn86](https://github.com/capricorn86)** in task [#​1274](https://github.com/capricorn86/happy-dom/issues/1274) </details> <details> <summary>vuejs/core (vue)</summary> ### [`v3.4.21`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3421-2024-02-28) [Compare Source](https://github.com/vuejs/core/compare/v3.4.20...v3.4.21) ##### Bug Fixes - **runtime-dom:** avoid unset option's value ([#​10416](https://github.com/vuejs/core/issues/10416)) ([b3f8b5a](https://github.com/vuejs/core/commit/b3f8b5a4e700d4c47a146b6040882287d180f6cb)), closes [#​10412](https://github.com/vuejs/core/issues/10412) [#​10396](https://github.com/vuejs/core/issues/10396) - **suspense:** ensure nested suspense patching if in fallback state ([#​10417](https://github.com/vuejs/core/issues/10417)) ([7c97778](https://github.com/vuejs/core/commit/7c97778aec1e3513035e5df265e1b8a7801f6106)), closes [#​10415](https://github.com/vuejs/core/issues/10415) - **warning:** stringify args in warn handler ([#​10414](https://github.com/vuejs/core/issues/10414)) ([bc37258](https://github.com/vuejs/core/commit/bc37258caa2f6f67f4554ab8587aca3798d92124)), closes [#​10409](https://github.com/vuejs/core/issues/10409) ### [`v3.4.20`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3420-2024-02-26) [Compare Source](https://github.com/vuejs/core/compare/v3.4.19...v3.4.20) ##### Bug Fixes - **parser:** should not treat uppercase components as special tags ([e0e0253](https://github.com/vuejs/core/commit/e0e02535cdea1aeb1cfaff0d61d4b2555e555c36)), closes [#​10395](https://github.com/vuejs/core/issues/10395) - **runtime-dom:** avoid always resetting nullish option value ([ff130c4](https://github.com/vuejs/core/commit/ff130c470204086edaa093fb8fdc1247c69cba69)), closes [#​10396](https://github.com/vuejs/core/issues/10396) - **runtime-dom:** fix nested v-show priority regression ([364f890](https://github.com/vuejs/core/commit/364f8902c8657faec7c3a4d70a5b2c856567e92d)), closes [#​10338](https://github.com/vuejs/core/issues/10338) - **runtime-dom:** v-bind style should clear previous css string value ([#​10373](https://github.com/vuejs/core/issues/10373)) ([e2d3235](https://github.com/vuejs/core/commit/e2d323538e71d404e729148fd19a08bbc2e3da9b)), closes [#​10352](https://github.com/vuejs/core/issues/10352) - **suspense:** handle suspense switching with nested suspense ([#​10184](https://github.com/vuejs/core/issues/10184)) ([0f3da05](https://github.com/vuejs/core/commit/0f3da05ea201761529bb95594df1e2cee20b7107)), closes [#​10098](https://github.com/vuejs/core/issues/10098) - **types:** better typing for direct setup signature of defineComponent ([#​10357](https://github.com/vuejs/core/issues/10357)) ([eadce5b](https://github.com/vuejs/core/commit/eadce5b75356656fd2209ebdb406d34823c961b7)), closes [#​8604](https://github.com/vuejs/core/issues/8604) [#​8855](https://github.com/vuejs/core/issues/8855) </details> <details> <summary>vuejs/language-tools (vue-tsc)</summary> ### [`v2.0.1`](https://github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#201-202332) [Compare Source](https://github.com/vuejs/language-tools/compare/v2.0.0...v2.0.1) ##### Fixes - npm release does not include files ([#​3919](https://github.com/vuejs/language-tools/issues/3919)) ### [`v2.0.0`](https://github.com/vuejs/language-tools/compare/v1.8.27...aa47e5a7d8a6dae62cc80dbdb5db6a9bfa4f8715) [Compare Source](https://github.com/vuejs/language-tools/compare/v1.8.27...v2.0.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone Europe/Helsinki, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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/slipmatio/ui). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.42.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/playwright-chromium/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/playwright-core/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.11.20` -> `20.11.24`](https://renovatebot.com/diffs/npm/@types%2fnode/20.11.20/20.11.24) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.11.20/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.11.20/20.11.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [happy-dom](https://github.com/capricorn86/happy-dom) | [`13.5.0` -> `13.6.2`](https://renovatebot.com/diffs/npm/happy-dom/13.5.0/13.6.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/13.5.0/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/13.5.0/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vue](https://github.com/vuejs/core/tree/main/packages/vue#readme) ([source](https://github.com/vuejs/core)) | [`3.4.19` -> `3.4.21`](https://renovatebot.com/diffs/npm/vue/3.4.19/3.4.21) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vue/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue/3.4.19/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue/3.4.19/3.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vue-tsc](https://github.com/vuejs/language-tools) ([source](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc)) | [`1.8.27` -> `2.0.1`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.27/2.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.27/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.27/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </details> <details> <summary>capricorn86/happy-dom (happy-dom)</summary> ### [`v13.6.2`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.2) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.6.1...v13.6.2) ##### 🎨 Features - Add support for the ":target" pseudo query selector - By **[@​Schleuse](https://github.com/Schleuse)** in task [#​1221](https://github.com/capricorn86/happy-dom/issues/1221) ##### 👷♂️ Patch fixes - The Event listener method `handleEvent()` should be called within the listener scope - By **[@​titouanmathis](https://github.com/titouanmathis)** in task [#​1182](https://github.com/capricorn86/happy-dom/issues/1182) ### [`v13.6.1`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.1) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.6.0...v13.6.1) ##### 👷♂️ Patch fixes - Improves validation for the options argument in `MutationsObserver.observe()` - By **[@​romansp](https://github.com/romansp)** in task [#​1223](https://github.com/capricorn86/happy-dom/issues/1223) ### [`v13.6.0`](https://github.com/capricorn86/happy-dom/releases/tag/v13.6.0) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.3...v13.6.0) ##### 🎨 Features - Adds support for `Node.isEqualNode()` - By **[@​aralroca](https://github.com/aralroca)** in task [#​1263](https://github.com/capricorn86/happy-dom/issues/1263) ##### 👷♂️ Patch fixes - Adds support for the property `Document.forms` - By **[@​juandiegombr](https://github.com/juandiegombr)** in task [#​1260](https://github.com/capricorn86/happy-dom/issues/1260) - Adds check for if `MutationObserver` options are null, which most likely happens for code that is executed after the Window instance has been closed - By **[@​zachlankton](https://github.com/zachlankton)** in task [#​1217](https://github.com/capricorn86/happy-dom/issues/1217) ### [`v13.5.3`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.3) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.2...v13.5.3) ##### 👷♂️ Patch fixes - Improves check for invalid query selectors - By **[@​btea](https://github.com/btea)** in task #​0 ### [`v13.5.2`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.2) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.1...v13.5.2) ##### 👷♂️ Patch fixes - Adds unit test for Vue component with SVG - By **[@​capricorn86](https://github.com/capricorn86)** in task [#​1271](https://github.com/capricorn86/happy-dom/issues/1271) ### [`v13.5.1`](https://github.com/capricorn86/happy-dom/releases/tag/v13.5.1) [Compare Source](https://github.com/capricorn86/happy-dom/compare/v13.5.0...v13.5.1) ##### 👷♂️ Patch fixes - Fixes problem with query selectors not finding SVG elements after the v13.4.0 release - By **[@​capricorn86](https://github.com/capricorn86)** in task [#​1274](https://github.com/capricorn86/happy-dom/issues/1274) </details> <details> <summary>vuejs/core (vue)</summary> ### [`v3.4.21`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3421-2024-02-28) [Compare Source](https://github.com/vuejs/core/compare/v3.4.20...v3.4.21) ##### Bug Fixes - **runtime-dom:** avoid unset option's value ([#​10416](https://github.com/vuejs/core/issues/10416)) ([b3f8b5a](https://github.com/vuejs/core/commit/b3f8b5a4e700d4c47a146b6040882287d180f6cb)), closes [#​10412](https://github.com/vuejs/core/issues/10412) [#​10396](https://github.com/vuejs/core/issues/10396) - **suspense:** ensure nested suspense patching if in fallback state ([#​10417](https://github.com/vuejs/core/issues/10417)) ([7c97778](https://github.com/vuejs/core/commit/7c97778aec1e3513035e5df265e1b8a7801f6106)), closes [#​10415](https://github.com/vuejs/core/issues/10415) - **warning:** stringify args in warn handler ([#​10414](https://github.com/vuejs/core/issues/10414)) ([bc37258](https://github.com/vuejs/core/commit/bc37258caa2f6f67f4554ab8587aca3798d92124)), closes [#​10409](https://github.com/vuejs/core/issues/10409) ### [`v3.4.20`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3420-2024-02-26) [Compare Source](https://github.com/vuejs/core/compare/v3.4.19...v3.4.20) ##### Bug Fixes - **parser:** should not treat uppercase components as special tags ([e0e0253](https://github.com/vuejs/core/commit/e0e02535cdea1aeb1cfaff0d61d4b2555e555c36)), closes [#​10395](https://github.com/vuejs/core/issues/10395) - **runtime-dom:** avoid always resetting nullish option value ([ff130c4](https://github.com/vuejs/core/commit/ff130c470204086edaa093fb8fdc1247c69cba69)), closes [#​10396](https://github.com/vuejs/core/issues/10396) - **runtime-dom:** fix nested v-show priority regression ([364f890](https://github.com/vuejs/core/commit/364f8902c8657faec7c3a4d70a5b2c856567e92d)), closes [#​10338](https://github.com/vuejs/core/issues/10338) - **runtime-dom:** v-bind style should clear previous css string value ([#​10373](https://github.com/vuejs/core/issues/10373)) ([e2d3235](https://github.com/vuejs/core/commit/e2d323538e71d404e729148fd19a08bbc2e3da9b)), closes [#​10352](https://github.com/vuejs/core/issues/10352) - **suspense:** handle suspense switching with nested suspense ([#​10184](https://github.com/vuejs/core/issues/10184)) ([0f3da05](https://github.com/vuejs/core/commit/0f3da05ea201761529bb95594df1e2cee20b7107)), closes [#​10098](https://github.com/vuejs/core/issues/10098) - **types:** better typing for direct setup signature of defineComponent ([#​10357](https://github.com/vuejs/core/issues/10357)) ([eadce5b](https://github.com/vuejs/core/commit/eadce5b75356656fd2209ebdb406d34823c961b7)), closes [#​8604](https://github.com/vuejs/core/issues/8604) [#​8855](https://github.com/vuejs/core/issues/8855) </details> <details> <summary>vuejs/language-tools (vue-tsc)</summary> ### [`v2.0.1`](https://github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#201-202332) [Compare Source](https://github.com/vuejs/language-tools/compare/v2.0.0...v2.0.1) ##### Fixes - npm release does not include files ([#​3919](https://github.com/vuejs/language-tools/issues/3919)) ### [`v2.0.0`](https://github.com/vuejs/language-tools/compare/v1.8.27...aa47e5a7d8a6dae62cc80dbdb5db6a9bfa4f8715) [Compare Source](https://github.com/vuejs/language-tools/compare/v1.8.27...v2.0.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone Europe/Helsinki, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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/slipmatio/toolbelt). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ples/with-svelte with 15 updates (#7597) Bumps the with-svelte-example-dependencies group in /examples/with-svelte with 15 updates: | Package | From | To | | --- | --- | --- | | [eslint](https://github.com/eslint/eslint) | `8.56.0` | `8.57.0` | | [prettier](https://github.com/prettier/prettier) | `3.1.1` | `3.2.5` | | [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) | `3.1.2` | `3.2.2` | | [turbo](https://github.com/vercel/turbo) | `1.12.1` | `1.12.4` | | [@playwright/test](https://github.com/microsoft/playwright) | `1.40.1` | `1.42.1` | | [@sveltejs/adapter-auto](https://github.com/sveltejs/kit/tree/HEAD/packages/adapter-auto) | `3.1.0` | `3.1.1` | | [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) | `2.0.6` | `2.5.2` | | [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte) | `3.0.1` | `3.0.2` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `6.17.0` | `7.1.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `6.17.0` | `7.1.0` | | [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) | `4.2.8` | `4.2.12` | | [svelte-check](https://github.com/sveltejs/language-tools) | `3.6.2` | `3.6.6` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `5.0.10` | `5.1.4` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `1.1.2` | `1.3.1` | | [eslint-config-turbo](https://github.com/vercel/turbo/tree/HEAD/packages/eslint-config-turbo) | `1.11.3` | `1.12.4` | Updates `eslint` from 8.56.0 to 8.57.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/eslint/eslint/releases">eslint's releases</a>.</em></p> <blockquote> <h2>v8.57.0</h2> <h2>Features</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/1120b9b7b97f10f059d8b7ede19de2572f892366"><code>1120b9b</code></a> feat: Add loadESLint() API method for v8 (<a href="https://github.com/eslint/eslint/issues/18098">#18098</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/dca7d0f1c262bc72310147bcefe1d04ecf60acbc"><code>dca7d0f</code></a> feat: Enable <code>eslint.config.mjs</code> and <code>eslint.config.cjs</code> (<a href="https://github.com/eslint/eslint/issues/18066">#18066</a>) (Nitin Kumar)</li> </ul> <h2>Bug Fixes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/2196d97094ba94d6d750828879a29538d1600de5"><code>2196d97</code></a> fix: handle absolute file paths in <code>FlatRuleTester</code> (<a href="https://github.com/eslint/eslint/issues/18064">#18064</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/69dd1d1387b7b53617548d1f9f2c149f179e6e17"><code>69dd1d1</code></a> fix: Ensure config keys are printed for config errors (<a href="https://github.com/eslint/eslint/issues/18067">#18067</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/9852a31edcf054bd5d15753ef18e2ad3216b1b71"><code>9852a31</code></a> fix: deep merge behavior in flat config (<a href="https://github.com/eslint/eslint/issues/18065">#18065</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/4c7e9b0b539ba879ac1799e81f3b6add2eed4b2f"><code>4c7e9b0</code></a> fix: allow circular references in config (<a href="https://github.com/eslint/eslint/issues/18056">#18056</a>) (Milos Djermanovic)</li> </ul> <h2>Documentation</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/84922d0bfa10689a34a447ab8e55975ff1c1c708"><code>84922d0</code></a> docs: Show prerelease version in dropdown (<a href="https://github.com/eslint/eslint/issues/18139">#18139</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/5b8c3636a3d7536535a6878eca0e5b773e4829d4"><code>5b8c363</code></a> docs: Switch to Ethical Ads (<a href="https://github.com/eslint/eslint/issues/18117">#18117</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/77dbfd9887b201a46fc68631cbde50c08e1a8dbf"><code>77dbfd9</code></a> docs: show NEXT in version selectors (<a href="https://github.com/eslint/eslint/issues/18052">#18052</a>) (Milos Djermanovic)</li> </ul> <h2>Chores</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/1813aecc4660582b0678cf32ba466eb9674266c4"><code>1813aec</code></a> chore: upgrade <code>@eslint/js</code><a href="https://github.com/8"><code>@8</code></a>.57.0 (<a href="https://github.com/eslint/eslint/issues/18143">#18143</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/5c356bb0c6f53c570224f8e9f02c4baca8fc6d2f"><code>5c356bb</code></a> chore: package.json update for <code>@eslint/js</code> release (Jenkins)</li> <li><a href="https://github.com/eslint/eslint/commit/f4a1fe2e45aa1089fe775290bf530de82f34bf16"><code>f4a1fe2</code></a> test: add more tests for ignoring files and directories (<a href="https://github.com/eslint/eslint/issues/18068">#18068</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/42c0aefaf6ea8b998b1c6db61906a79c046d301a"><code>42c0aef</code></a> ci: Enable CI for <code>v8.x</code> branch (<a href="https://github.com/eslint/eslint/issues/18047">#18047</a>) (Milos Djermanovic)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/eslint/eslint/blob/main/CHANGELOG.md">eslint's changelog</a>.</em></p> <blockquote> <p>v8.57.0 - February 23, 2024</p> <ul> <li><a href="https://github.com/eslint/eslint/commit/1813aecc4660582b0678cf32ba466eb9674266c4"><code>1813aec</code></a> chore: upgrade <code>@eslint/js</code><a href="https://github.com/8"><code>@8</code></a>.57.0 (<a href="https://github.com/eslint/eslint/issues/18143">#18143</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/5c356bb0c6f53c570224f8e9f02c4baca8fc6d2f"><code>5c356bb</code></a> chore: package.json update for <code>@eslint/js</code> release (Jenkins)</li> <li><a href="https://github.com/eslint/eslint/commit/84922d0bfa10689a34a447ab8e55975ff1c1c708"><code>84922d0</code></a> docs: Show prerelease version in dropdown (<a href="https://github.com/eslint/eslint/issues/18139">#18139</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/1120b9b7b97f10f059d8b7ede19de2572f892366"><code>1120b9b</code></a> feat: Add loadESLint() API method for v8 (<a href="https://github.com/eslint/eslint/issues/18098">#18098</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/5b8c3636a3d7536535a6878eca0e5b773e4829d4"><code>5b8c363</code></a> docs: Switch to Ethical Ads (<a href="https://github.com/eslint/eslint/issues/18117">#18117</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/2196d97094ba94d6d750828879a29538d1600de5"><code>2196d97</code></a> fix: handle absolute file paths in <code>FlatRuleTester</code> (<a href="https://github.com/eslint/eslint/issues/18064">#18064</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/f4a1fe2e45aa1089fe775290bf530de82f34bf16"><code>f4a1fe2</code></a> test: add more tests for ignoring files and directories (<a href="https://github.com/eslint/eslint/issues/18068">#18068</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/69dd1d1387b7b53617548d1f9f2c149f179e6e17"><code>69dd1d1</code></a> fix: Ensure config keys are printed for config errors (<a href="https://github.com/eslint/eslint/issues/18067">#18067</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/9852a31edcf054bd5d15753ef18e2ad3216b1b71"><code>9852a31</code></a> fix: deep merge behavior in flat config (<a href="https://github.com/eslint/eslint/issues/18065">#18065</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/dca7d0f1c262bc72310147bcefe1d04ecf60acbc"><code>dca7d0f</code></a> feat: Enable <code>eslint.config.mjs</code> and <code>eslint.config.cjs</code> (<a href="https://github.com/eslint/eslint/issues/18066">#18066</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/4c7e9b0b539ba879ac1799e81f3b6add2eed4b2f"><code>4c7e9b0</code></a> fix: allow circular references in config (<a href="https://github.com/eslint/eslint/issues/18056">#18056</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/77dbfd9887b201a46fc68631cbde50c08e1a8dbf"><code>77dbfd9</code></a> docs: show NEXT in version selectors (<a href="https://github.com/eslint/eslint/issues/18052">#18052</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/42c0aefaf6ea8b998b1c6db61906a79c046d301a"><code>42c0aef</code></a> ci: Enable CI for <code>v8.x</code> branch (<a href="https://github.com/eslint/eslint/issues/18047">#18047</a>) (Milos Djermanovic)</li> </ul> <p>v9.0.0-beta.0 - February 9, 2024</p> <ul> <li><a href="https://github.com/eslint/eslint/commit/e40d1d74a5b9788cbec195f4e602b50249f26659"><code>e40d1d7</code></a> chore: upgrade <code>@eslint/js</code><a href="https://github.com/9"><code>@9</code></a>.0.0-beta.0 (<a href="https://github.com/eslint/eslint/issues/18108">#18108</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/9870f93e714edefb410fccae1e9924a3c1972a2e"><code>9870f93</code></a> chore: package.json update for <code>@eslint/js</code> release (Jenkins)</li> <li><a href="https://github.com/eslint/eslint/commit/2c62e797a433e5fc298b976872a89c594f88bb19"><code>2c62e79</code></a> chore: upgrade <code>@eslint/eslintrc</code><a href="https://github.com/3"><code>@3</code></a>.0.1 (<a href="https://github.com/eslint/eslint/issues/18107">#18107</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/81f0294e651928b49eb49495b90b54376073a790"><code>81f0294</code></a> chore: upgrade espree@10.0.1 (<a href="https://github.com/eslint/eslint/issues/18106">#18106</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/5e2b2922aa65bda54b0966d1bf71acda82b3047c"><code>5e2b292</code></a> chore: upgrade eslint-visitor-keys@4.0.0 (<a href="https://github.com/eslint/eslint/issues/18105">#18105</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/916364692bae6a93c10b5d48fc1e9de1677d0d09"><code>9163646</code></a> feat!: Rule Tester checks for missing placeholder data in the message (<a href="https://github.com/eslint/eslint/issues/18073">#18073</a>) (fnx)</li> <li><a href="https://github.com/eslint/eslint/commit/53f0f47badffa1b04ec2836f2ae599f4fc464da2"><code>53f0f47</code></a> feat: Add loadESLint() API method for v9 (<a href="https://github.com/eslint/eslint/issues/18097">#18097</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/f1c7e6fc8ea77fcdae4ad1f8fe1cd104a281d2e9"><code>f1c7e6f</code></a> docs: Switch to Ethical Ads (<a href="https://github.com/eslint/eslint/issues/18090">#18090</a>) (Strek)</li> <li><a href="https://github.com/eslint/eslint/commit/15c143f96ef164943fd3d39b5ad79d9a4a40de8f"><code>15c143f</code></a> docs: JS Foundation -> OpenJS Foundation in PR template (<a href="https://github.com/eslint/eslint/issues/18092">#18092</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/c4d26fd3d1f59c1c0f2266664887ad18692039f3"><code>c4d26fd</code></a> fix: <code>use-isnan</code> doesn't report on <code>SequenceExpression</code>s (<a href="https://github.com/eslint/eslint/issues/18059">#18059</a>) (StyleShit)</li> <li><a href="https://github.com/eslint/eslint/commit/6ea339e658d29791528ab26aabd86f1683cab6c3"><code>6ea339e</code></a> docs: add stricter rule test validations to v9 migration guide (<a href="https://github.com/eslint/eslint/issues/18085">#18085</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/ce838adc3b673e52a151f36da0eedf5876977514"><code>ce838ad</code></a> chore: replace dependency npm-run-all with npm-run-all2 ^5.0.0 (<a href="https://github.com/eslint/eslint/issues/18045">#18045</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/3c816f193eecace5efc6166efa2852a829175ef8"><code>3c816f1</code></a> docs: use relative link from CLI to core concepts (<a href="https://github.com/eslint/eslint/issues/18083">#18083</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/54df731174d2528170560d1f765e1336eca0a8bd"><code>54df731</code></a> chore: update dependency markdownlint-cli to ^0.39.0 (<a href="https://github.com/eslint/eslint/issues/18084">#18084</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/9458735381269d12b24f76e1b2b6fda1bc5a509b"><code>9458735</code></a> docs: fix malformed <code>eslint</code> config comments in rule examples (<a href="https://github.com/eslint/eslint/issues/18078">#18078</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/07a1ada7166b76c7af6186f4c5e5de8b8532edba"><code>07a1ada</code></a> docs: link from <code>--fix</code> CLI doc to the relevant core concept (<a href="https://github.com/eslint/eslint/issues/18080">#18080</a>) (Bryan Mishkin)</li> <li><a href="https://github.com/eslint/eslint/commit/8f06a606845f40aaf0fea1fd83d5930747c5acec"><code>8f06a60</code></a> chore: update dependency shelljs to ^0.8.5 (<a href="https://github.com/eslint/eslint/issues/18079">#18079</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/b844324e4e8f511c9985a96c7aca063269df9570"><code>b844324</code></a> docs: Update team responsibilities (<a href="https://github.com/eslint/eslint/issues/18048">#18048</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/aadfb609f1b847e492fc3b28ced62f830fe7f294"><code>aadfb60</code></a> docs: document languageOptions and other v9 changes for context (<a href="https://github.com/eslint/eslint/issues/18074">#18074</a>) (fnx)</li> <li><a href="https://github.com/eslint/eslint/commit/3c4d51d55fa5435ab18b6bf46f6b97df0f480ae7"><code>3c4d51d</code></a> feat!: default for <code>enforceForClassMembers</code> in <code>no-useless-computed-key</code> (<a href="https://github.com/eslint/eslint/issues/18054">#18054</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/47e60f85e0c3f275207bb4be9b5947166a190477"><code>47e60f8</code></a> feat!: Stricter rule test validations (<a href="https://github.com/eslint/eslint/issues/17654">#17654</a>) (fnx)</li> <li><a href="https://github.com/eslint/eslint/commit/1a945890105d307541dcbff15f6438c19b476ade"><code>1a94589</code></a> feat!: <code>no-unused-vars</code> default caughtErrors to 'all' (<a href="https://github.com/eslint/eslint/issues/18043">#18043</a>) (Josh Goldberg ✨)</li> <li><a href="https://github.com/eslint/eslint/commit/857e242584227181ecb8af79fc6bc236b9975228"><code>857e242</code></a> docs: tweak explanation for meta.docs rule properties (<a href="https://github.com/eslint/eslint/issues/18057">#18057</a>) (Bryan Mishkin)</li> <li><a href="https://github.com/eslint/eslint/commit/10485e8b961d045514bc1e34227cf09867a6c4b7"><code>10485e8</code></a> docs: recommend messageId over message for reporting rule violations (<a href="https://github.com/eslint/eslint/issues/18050">#18050</a>) (Bryan Mishkin)</li> <li><a href="https://github.com/eslint/eslint/commit/98b5ab406bac6279eadd84e8a5fd5a01fc586ff1"><code>98b5ab4</code></a> docs: Update README (GitHub Actions Bot)</li> <li><a href="https://github.com/eslint/eslint/commit/93ffe30da5e2127e336c1c22e69e09ec0558a8e6"><code>93ffe30</code></a> chore: update dependency file-entry-cache to v8 (<a href="https://github.com/eslint/eslint/issues/17903">#17903</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/505fbf4b35c14332bffb0c838cce4843a00fad68"><code>505fbf4</code></a> docs: update <code>no-restricted-imports</code> rule (<a href="https://github.com/eslint/eslint/issues/18015">#18015</a>) (Tanuj Kanti)</li> <li><a href="https://github.com/eslint/eslint/commit/2d11d46e890a9f1b5f639b8ee034ffa9bd453e42"><code>2d11d46</code></a> feat: add suggestions to <code>use-isnan</code> in binary expressions (<a href="https://github.com/eslint/eslint/issues/17996">#17996</a>) (StyleShit)</li> <li><a href="https://github.com/eslint/eslint/commit/c25b4aff1fe35e5bd9d4fcdbb45b739b6d253828"><code>c25b4af</code></a> docs: Update README (GitHub Actions Bot)</li> </ul> <p>v9.0.0-alpha.2 - January 26, 2024</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/eslint/eslint/commit/abea3b6f399fde9e28cf6dc5d6c013938f163cdc"><code>abea3b6</code></a> 8.57.0</li> <li><a href="https://github.com/eslint/eslint/commit/1cd3f8c34d3f1614f16d602d660e7c9653311a47"><code>1cd3f8c</code></a> Build: changelog update for 8.57.0</li> <li><a href="https://github.com/eslint/eslint/commit/1813aecc4660582b0678cf32ba466eb9674266c4"><code>1813aec</code></a> chore: upgrade <code>@eslint/js</code><a href="https://github.com/8"><code>@8</code></a>.57.0 (<a href="https://github.com/eslint/eslint/issues/18143">#18143</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/5c356bb0c6f53c570224f8e9f02c4baca8fc6d2f"><code>5c356bb</code></a> chore: package.json update for <code>@eslint/js</code> release</li> <li><a href="https://github.com/eslint/eslint/commit/84922d0bfa10689a34a447ab8e55975ff1c1c708"><code>84922d0</code></a> docs: Show prerelease version in dropdown (<a href="https://github.com/eslint/eslint/issues/18139">#18139</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/1120b9b7b97f10f059d8b7ede19de2572f892366"><code>1120b9b</code></a> feat: Add loadESLint() API method for v8 (<a href="https://github.com/eslint/eslint/issues/18098">#18098</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/5b8c3636a3d7536535a6878eca0e5b773e4829d4"><code>5b8c363</code></a> docs: Switch to Ethical Ads (<a href="https://github.com/eslint/eslint/issues/18117">#18117</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/2196d97094ba94d6d750828879a29538d1600de5"><code>2196d97</code></a> fix: handle absolute file paths in <code>FlatRuleTester</code> (<a href="https://github.com/eslint/eslint/issues/18064">#18064</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/f4a1fe2e45aa1089fe775290bf530de82f34bf16"><code>f4a1fe2</code></a> test: add more tests for ignoring files and directories (<a href="https://github.com/eslint/eslint/issues/18068">#18068</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/69dd1d1387b7b53617548d1f9f2c149f179e6e17"><code>69dd1d1</code></a> fix: Ensure config keys are printed for config errors (<a href="https://github.com/eslint/eslint/issues/18067">#18067</a>)</li> <li>Additional commits viewable in <a href="https://github.com/eslint/eslint/compare/v8.56.0...v8.57.0">compare view</a></li> </ul> </details> <br /> Updates `prettier` from 3.1.1 to 3.2.5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/prettier/prettier/releases">prettier's releases</a>.</em></p> <blockquote> <h2>3.2.5</h2> <p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#325">Changelog</a></p> <h2>3.2.4</h2> <ul> <li>Fix <code>.eslintrc.json</code> format <a href="https://github.com/prettier/prettier/issues/15947">#15947</a></li> </ul> <p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#324">Changelog</a></p> <h2>3.2.3</h2> <ul> <li>Format <code>tsconfig.json</code> file with <code>jsonc</code> parser <a href="https://github.com/prettier/prettier/issues/15927">#15927</a></li> </ul> <p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#323">Changelog</a></p> <h2>3.2.2</h2> <p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#322">Changelog</a></p> <h2>3.2.1</h2> <p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#321">Changelog</a></p> <h2>3.2.0</h2> <p><a href="https://github.com/prettier/prettier/compare/3.1.1...3.2.0">diff</a></p> <p>🔗 <a href="https://prettier.io/blog/2024/01/12/3.2.0.html">Release note</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's changelog</a>.</em></p> <blockquote> <h1>3.2.5</h1> <p><a href="https://github.com/prettier/prettier/compare/3.2.4...3.2.5">diff</a></p> <h4>Support Angular inline styles as single template literal (<a href="https://github.com/prettier/prettier/pull/15968">#15968</a> by <a href="https://github.com/sosukesuzuki"><code>@sosukesuzuki</code></a>)</h4> <p><a href="https://blog.angular.io/introducing-angular-v17-4d7033312e4b">Angular v17</a> supports single string inline styles.</p> <!-- raw HTML omitted --> <pre lang="ts"><code>// Input @Component({ template: `<div>...</div>`, styles: `h1 { color: blue; }`, }) export class AppComponent {} <p>// Prettier 3.2.4 <a href="https://github.com/Component"><code>@Component</code></a>({ template: <code>&lt;div&gt;...&lt;/div&gt;</code>, styles: <code>h1 { color: blue; }</code>, }) export class AppComponent {}</p> <p>// Prettier 3.2.5 <a href="https://github.com/Component"><code>@Component</code></a>({ template: <code>&lt;div&gt;...&lt;/div&gt;</code>, styles: <code>h1 { color: blue; }</code>, }) export class AppComponent {}</p> <p></code></pre></p> <h4>Unexpected embedded formatting for Angular template (<a href="https://github.com/prettier/prettier/pull/15969">#15969</a> by <a href="https://github.com/JounQin"><code>@JounQin</code></a>)</h4> <p>Computed template should not be considered as Angular component template</p> <!-- raw HTML omitted --> <pre lang="ts"><code>// Input const template = "foobar"; <p><a href="https://github.com/Component"><code>@Component</code></a>({ [template]: <code>&lt;h1&gt;{{ hello }}&lt;/h1&gt;</code>, }) export class AppComponent {} </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/prettier/prettier/commit/7142cf354cce2558f41574f44b967baf11d5b603"><code>7142cf3</code></a> Release 3.2.5</li> <li><a href="https://github.com/prettier/prettier/commit/8cbee2e217baad7acf4cb3947834e8c1b41ed647"><code>8cbee2e</code></a> chore(deps): update glimmer to v0.88.1 (<a href="https://github.com/prettier/prettier/issues/15991">#15991</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/45baee061cb982d9dd298fefa74f4c195a3e0709"><code>45baee0</code></a> chore(deps): update dependency magic-string to v0.30.6 (<a href="https://github.com/prettier/prettier/issues/16022">#16022</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/9fb32a1a6b10bfb6dae317492f10e5e42956cf23"><code>9fb32a1</code></a> Minor refactor to property print (<a href="https://github.com/prettier/prettier/issues/15924">#15924</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/08f19401e48ccfeddff4300827da4c8677cb2b79"><code>08f1940</code></a> Update install script for husky v9 (<a href="https://github.com/prettier/prettier/issues/16000">#16000</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/6d0b1d2a935d47e0517721a0d5e62eb79e972b0c"><code>6d0b1d2</code></a> Update yarn to v4.1.0 (<a href="https://github.com/prettier/prettier/issues/16021">#16021</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/c8ba8dbca18858a7962184bbb3898502b9ec7cfb"><code>c8ba8db</code></a> chore(deps): update dependency <code>@angular/compiler</code> to v17.1.2 (<a href="https://github.com/prettier/prettier/issues/16018">#16018</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/e2250ec6881222a1bb46ef55403067a259d8c7a3"><code>e2250ec</code></a> chore(deps): update typescript-eslint to v6.20.0 (<a href="https://github.com/prettier/prettier/issues/16015">#16015</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/02865f6cc77858b3a4cbaf7d4e2e72a4e88fe175"><code>02865f6</code></a> chore(deps): update dependency npm-run-all2 to v6.1.2 (<a href="https://github.com/prettier/prettier/issues/16017">#16017</a>)</li> <li><a href="https://github.com/prettier/prettier/commit/014ee5d47445ae79233291d5b4846b28bedf3601"><code>014ee5d</code></a> chore(deps): update dependency hermes-parser to v0.19.0 (<a href="https://github.com/prettier/prettier/issues/16014">#16014</a>)</li> <li>Additional commits viewable in <a href="https://github.com/prettier/prettier/compare/3.1.1...3.2.5">compare view</a></li> </ul> </details> <br /> Updates `prettier-plugin-svelte` from 3.1.2 to 3.2.2 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/prettier-plugin-svelte/blob/master/CHANGELOG.md">prettier-plugin-svelte's changelog</a>.</em></p> <blockquote> <h2>3.2.2</h2> <ul> <li>(fix) handle updated <code>@render</code> tag AST shape</li> </ul> <h2>3.2.1</h2> <ul> <li>(fix) handle updated <code>@render</code> tag AST shape</li> </ul> <h2>3.2.0</h2> <ul> <li>(feat) format JSON script tags</li> <li>(feat) introduce separate entry point using <code>prettier/standalone</code></li> <li>(fix) don't duplicate comments of nested script/style tags</li> <li>(fix) handle updated <code>Snippet</code> block AST shape</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/601ee41a20311882bb9c046dcac21c868911b624"><code>601ee41</code></a> chore: release 3.2.2</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/c968fef2c2de4092ccedc0f2f9ba7cb0f207669f"><code>c968fef</code></a> fix: adjust render tag printing for Svelte 5 AST changes</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/08d7a8ba9978b5392d0adb4127da2cb7ed8aee6d"><code>08d7a8b</code></a> chore: cross-test dirs test.only support</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/96049c64bef1849eea44ae7c7c581aed65b7c7a1"><code>96049c6</code></a> fix: handle updated <code>@render</code> tag AST shape</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/c8317eb0a0fb00bc4c05d47d5918fe8506013eda"><code>c8317eb</code></a> chore: release 3.2.0</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/d89241e11249b662394d1b356fc461d370c7441a"><code>d89241e</code></a> feat: semi-standalone browser build (<a href="https://github.com/sveltejs/prettier-plugin-svelte/issues/430">#430</a>)</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/288d91567ddb37095cb063490108b4594377a374"><code>288d915</code></a> fix: handle updated <code>Snippet</code> block AST shape</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/99c885e5d695bd59f26f156e66fd3f333f181e31"><code>99c885e</code></a> chore: remove Buffer usage for browser environments (<a href="https://github.com/sveltejs/prettier-plugin-svelte/issues/423">#423</a>)</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/cc856a0e5dedd56b7edb0aa1be18adaf385a247a"><code>cc856a0</code></a> fix: don't duplicate comments of nested script/style tags (<a href="https://github.com/sveltejs/prettier-plugin-svelte/issues/425">#425</a>)</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/1884f2250b9d8458e395f153744f74b6117f0bb9"><code>1884f22</code></a> feat: format JSON script tags (<a href="https://github.com/sveltejs/prettier-plugin-svelte/issues/424">#424</a>)</li> <li>See full diff in <a href="https://github.com/sveltejs/prettier-plugin-svelte/compare/v3.1.2...v3.2.2">compare view</a></li> </ul> </details> <br /> Updates `turbo` from 1.12.1 to 1.12.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vercel/turbo/releases">turbo's releases</a>.</em></p> <blockquote> <h2>Turborepo v1.12.4</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Docs</h3> <ul> <li>feat(cache): bump default timeout and add docs by <a href="https://github.com/tknickman"><code>@tknickman</code></a> in <a href="https://github.com/vercel/turbo/pull/7304">vercel/turbo#7304</a></li> </ul> <h3>create-turbo</h3> <ul> <li>release(turborepo): 1.12.3 by <a href="https://github.com/github-actions"><code>@github-actions</code></a> in <a href="https://github.com/vercel/turbo/pull/7296">vercel/turbo#7296</a></li> <li>chore(create-turbo): update chalk to v4 by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7300">vercel/turbo#7300</a></li> <li>release(turborepo): 1.12.4-canary.0 by <a href="https://github.com/github-actions"><code>@github-actions</code></a> in <a href="https://github.com/vercel/turbo/pull/7338">vercel/turbo#7338</a></li> <li>release(turborepo): 1.12.4-canary.1 by <a href="https://github.com/github-actions"><code>@github-actions</code></a> in <a href="https://github.com/vercel/turbo/pull/7369">vercel/turbo#7369</a></li> </ul> <h3><code>@turbo/repository</code> - ⚠️ <strong>Alpha - Expect Breaking Changes</strong></h3> <ul> <li>fix(<code>@turbo/repository</code>): fix breaking API changes from turbo core by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7373">vercel/turbo#7373</a></li> <li>chore(turbo): rename workspace -> package in PackageGraph module by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7372">vercel/turbo#7372</a></li> </ul> <h3>Changelog</h3> <ul> <li>chore(Turborepo): Delete or feature-gate imports by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7295">vercel/turbo#7295</a></li> <li>fix(Turborepo): Route through existing wait_for_filewatching call by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7237">vercel/turbo#7237</a></li> <li>feat(async_cache): support cloning by <a href="https://github.com/tknickman"><code>@tknickman</code></a> in <a href="https://github.com/vercel/turbo/pull/7293">vercel/turbo#7293</a></li> <li>refactor: Error on absolute paths in turbo.json by <a href="https://github.com/NicholasLYang"><code>@NicholasLYang</code></a> in <a href="https://github.com/vercel/turbo/pull/7292">vercel/turbo#7292</a></li> <li>implement vercel auth token for SSO by <a href="https://github.com/Zertsov"><code>@Zertsov</code></a> in <a href="https://github.com/vercel/turbo/pull/7192">vercel/turbo#7192</a></li> <li>feat(<code>@turbo/repository</code>): add method to return package dependents by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7242">vercel/turbo#7242</a></li> <li>chore(<code>@turbo/repository</code>): bump version to 0.0.1-canary.5 by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7312">vercel/turbo#7312</a></li> <li>fix(Turborepo): Don't block forever if we have already gotten a parse error by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7203">vercel/turbo#7203</a></li> <li>chore(Turborepo): Remove ExecutionState, we don't need it anymore by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7281">vercel/turbo#7281</a></li> <li>feat(turbo): task access trace & cached configs by <a href="https://github.com/tknickman"><code>@tknickman</code></a> in <a href="https://github.com/vercel/turbo/pull/7074">vercel/turbo#7074</a></li> <li>chore: fix clippy lints in <code>@turbo/repository</code> by <a href="https://github.com/chris-olszewski"><code>@chris-olszewski</code></a> in <a href="https://github.com/vercel/turbo/pull/7310">vercel/turbo#7310</a></li> <li>chore: Clean up log files, add <code>daemon log</code> subcommand by <a href="https://github.com/NicholasLYang"><code>@NicholasLYang</code></a> in <a href="https://github.com/vercel/turbo/pull/7305">vercel/turbo#7305</a></li> <li>chore: add shutdown method for async cache by <a href="https://github.com/chris-olszewski"><code>@chris-olszewski</code></a> in <a href="https://github.com/vercel/turbo/pull/7309">vercel/turbo#7309</a></li> <li>feat: vendor CI log groups by <a href="https://github.com/cymruu"><code>@cymruu</code></a> in <a href="https://github.com/vercel/turbo/pull/6314">vercel/turbo#6314</a></li> <li>feat(turborepo): daemon UX improvements by <a href="https://github.com/NicholasLYang"><code>@NicholasLYang</code></a> in <a href="https://github.com/vercel/turbo/pull/7307">vercel/turbo#7307</a></li> <li>chore(turborepo): Ensure fresh builds by <a href="https://github.com/NicholasLYang"><code>@NicholasLYang</code></a> in <a href="https://github.com/vercel/turbo/pull/7321">vercel/turbo#7321</a></li> <li>chore: don't print debug info on successful login by <a href="https://github.com/Zertsov"><code>@Zertsov</code></a> in <a href="https://github.com/vercel/turbo/pull/7323">vercel/turbo#7323</a></li> <li>fix: check vercel token is still valid by <a href="https://github.com/Zertsov"><code>@Zertsov</code></a> in <a href="https://github.com/vercel/turbo/pull/7325">vercel/turbo#7325</a></li> <li>fix(Turborepo): Start moving cookie watching to downstream services by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7283">vercel/turbo#7283</a></li> <li>chore(<code>@turbo/repository</code>): add inline jsdocs for findPackagesAndDependents method by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7331">vercel/turbo#7331</a></li> <li>chore: modularize vercel api crate by <a href="https://github.com/Zertsov"><code>@Zertsov</code></a> in <a href="https://github.com/vercel/turbo/pull/7329">vercel/turbo#7329</a></li> <li>fix(Turborepo): Pass validated globs to daemon for watching by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7327">vercel/turbo#7327</a></li> <li>feat(Turborepo): Add spaces_id to layered config by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7330">vercel/turbo#7330</a></li> <li>feat(gitignore): break out gitignore util by <a href="https://github.com/tknickman"><code>@tknickman</code></a> in <a href="https://github.com/vercel/turbo/pull/7319">vercel/turbo#7319</a></li> <li>feat(turbo): update changemapper to return name and path of packages by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7336">vercel/turbo#7336</a></li> <li>chore(turbo): rename WorkspaceNode to PackageNode by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7351">vercel/turbo#7351</a></li> <li>chore(turbo): rename WorkspaceInfo struct to PackageInfo by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7353">vercel/turbo#7353</a></li> <li>chore(Turborepo): Move daemon paths off of CommandBase by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7339">vercel/turbo#7339</a></li> <li>fix: use system certs for tls by <a href="https://github.com/chris-olszewski"><code>@chris-olszewski</code></a> in <a href="https://github.com/vercel/turbo/pull/7357">vercel/turbo#7357</a></li> <li>chore(Turborepo): Remote CommandBase from Run by <a href="https://github.com/gsoltis"><code>@gsoltis</code></a> in <a href="https://github.com/vercel/turbo/pull/7360">vercel/turbo#7360</a></li> <li>feat(<code>@turbo/repository</code>): add affectedPackages API by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7326">vercel/turbo#7326</a></li> <li>feat(<code>@turbo/repository</code>): bump for release by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7361">vercel/turbo#7361</a></li> <li>chore(turbo): rename WorkspaceName to PackageName by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7355">vercel/turbo#7355</a></li> <li>chore(turbo): delete unused fixture in cli directory by <a href="https://github.com/mehulkar"><code>@mehulkar</code></a> in <a href="https://github.com/vercel/turbo/pull/7376">vercel/turbo#7376</a></li> <li>fix: avoid grouping logs from tasks which ended in error by <a href="https://github.com/chris-olszewski"><code>@chris-olszewski</code></a> in <a href="https://github.com/vercel/turbo/pull/7335">vercel/turbo#7335</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vercel/turbo/commit/af256d18405f144d9e3122a678adde498417bda8"><code>af256d1</code></a> publish 1.12.4 to registry</li> <li><a href="https://github.com/vercel/turbo/commit/5dbce384933a96f661bbf0a684fa254b851ff596"><code>5dbce38</code></a> add support for dynamic requests in require() and import() (<a href="https://github.com/vercel/turbo/issues/7153">#7153</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/253c785272768505758dff2d3e33ad34a5da2e9d"><code>253c785</code></a> dedupe resolving independent on reference type (<a href="https://github.com/vercel/turbo/issues/7349">#7349</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/ac236204d230636840d7e3f8129f0dbb4f6ae1df"><code>ac23620</code></a> avoid resolving recursive main field (<a href="https://github.com/vercel/turbo/issues/7347">#7347</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/d4ccb0b6bc6ff8e5efba7c776a58cbf19c8be381"><code>d4ccb0b</code></a> fix: avoid grouping logs from tasks which ended in error (<a href="https://github.com/vercel/turbo/issues/7335">#7335</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/c5182b398ff2e8e952a6dea18c6a6136377b3fd8"><code>c5182b3</code></a> build: Update <code>swc_core</code> to <code>v0.90.8</code> (<a href="https://github.com/vercel/turbo/issues/7362">#7362</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/737761073f7b73464b153f5f9e3443b0297a0e7e"><code>7377610</code></a> chore(turbo): remove EXPERIMENTAL_RUST_CODEPATH env var (<a href="https://github.com/vercel/turbo/issues/7375">#7375</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/3de0f283c1e8a0d5ed205178424a560203795d2a"><code>3de0f28</code></a> chore(turbo): delete unused fixture in cli directory (<a href="https://github.com/vercel/turbo/issues/7376">#7376</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/46cb4d267118fc73c7498b3d375a7014dfe83b2d"><code>46cb4d2</code></a> chore(turbo): rename workspace -> package in PackageGraph module (<a href="https://github.com/vercel/turbo/issues/7372">#7372</a>)</li> <li><a href="https://github.com/vercel/turbo/commit/2e9eed4edb29ad233b0dc8fa8e9216f004399932"><code>2e9eed4</code></a> fix(<code>@turbo/repository</code>): fix breaking API changes from turbo core (<a href="https://github.com/vercel/turbo/issues/7373">#7373</a>)</li> <li>Additional commits viewable in <a href="https://github.com/vercel/turbo/compare/v1.12.1...v1.12.4">compare view</a></li> </ul> </details> <br /> Updates `@playwright/test` from 1.40.1 to 1.42.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.42.1</h2> <h3>Highlights</h3> <p><a href="https://github.com/microsoft/playwright/issues/29732">microsoft/playwright#29732</a> - [Regression]: HEAD requests to webServer.url since v1.42.0 <a href="https://github.com/microsoft/playwright/issues/29746">microsoft/playwright#29746</a> - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin import <a href="https://github.com/microsoft/playwright/issues/29739">microsoft/playwright#29739</a> - [Bug]: Component tests fails when imported a module with a dot in a name <a href="https://github.com/microsoft/playwright/issues/29731">microsoft/playwright#29731</a> - [Regression]: 1.42.0 breaks some import statements <a href="https://github.com/microsoft/playwright/issues/29760">microsoft/playwright#29760</a> - [Bug]: Possible regression with chained locators in v1.42</p> <h3>Browser Versions</h3> <ul> <li>Chromium 123.0.6312.4</li> <li>Mozilla Firefox 123.0</li> <li>WebKit 17.4</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 122</li> <li>Microsoft Edge 123</li> </ul> <h2>v1.42.0</h2> <h2>New APIs</h2> <ul> <li> <p><strong>Test tags</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New tag syntax</a> for adding tags to the tests (@-tokens in the test title are still supported).</p> <pre lang="js"><code>test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... }); </code></pre> <p>Use <code>--grep</code> command line option to run only tests with certain tags.</p> <pre lang="sh"><code>npx playwright test --grep @fast </code></pre> </li> <li> <p><strong>Annotating skipped tests</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#annotate-tests">New annotation syntax</a> for test annotations allows annotating the tests that do not run.</p> <pre lang="js"><code>test('test full report', { annotation: [ { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/playwright/commit/9749f7542676bce2d77f738b5fffcd7b0f46d67c"><code>9749f75</code></a> chore: mark 1.42.1 (<a href="https://github.com/microsoft/playwright/issues/29774">#29774</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/d4ac444f7d5e0a01a27e5c2c023962a38c4bce41"><code>d4ac444</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29770">#29770</a>): docs: improve addLocatorHandler docs</li> <li><a href="https://github.com/microsoft/playwright/commit/a7025956c3d7161c16eb7054646d809249b29020"><code>a702595</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29765">#29765</a>): Revert "chore(role): cache element list by role (<a href="https://github.com/microsoft/playwright/issues/29130">#29130</a>)"</li> <li><a href="https://github.com/microsoft/playwright/commit/b67050638b65156c55798b60a0a75e15fe935d2d"><code>b670506</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29766">#29766</a>): fix(tsload): fix tsconfig inheritance resolution</li> <li><a href="https://github.com/microsoft/playwright/commit/3a4381303ccafdeb599f461d60bd55fa6425f57c"><code>3a43813</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29744">#29744</a>): fix(ct): stop-gap for shared file import</li> <li><a href="https://github.com/microsoft/playwright/commit/d23fb005d4cd171408aee90db3cde733c6179ed3"><code>d23fb00</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29754">#29754</a>): chore: remove pw- binaries from ct</li> <li><a href="https://github.com/microsoft/playwright/commit/56e50a7304b160b89979a239688a691f90bd1f51"><code>56e50a7</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29748">#29748</a>): fix(ct): fix the non-react cli entry points</li> <li><a href="https://github.com/microsoft/playwright/commit/3f6b6419c507ea8db01dcd0dd21284b47cf14fcb"><code>3f6b641</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29738">#29738</a>): fix(HEAD): revert GET->HEAD migration, net-effect was ne...</li> <li><a href="https://github.com/microsoft/playwright/commit/20db86da3e492e6b966e008dab11102bc03937e0"><code>20db86d</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29706">#29706</a>): fit(ct): remove unused type import (<a href="https://github.com/microsoft/playwright/issues/29709">#29709</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/84780b1b750d343cf6372c5965582f43e75cb8c9"><code>84780b1</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29715">#29715</a>): fix: point to the right cli program export</li> <li>Additional commits viewable in <a href="https://github.com/microsoft/playwright/compare/v1.40.1...v1.42.1">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~yurys">yurys</a>, a new releaser for <code>@playwright/test</code> since your current version.</p> </details> <br /> Updates `@sveltejs/adapter-auto` from 3.1.0 to 3.1.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/kit/releases"><code>@sveltejs/adapter-auto</code>'s releases</a>.</em></p> <blockquote> <h2><code>@sveltejs/adapter-auto</code><a href="https://github.com/3"><code>@3</code></a>.1.1</h2> <h3>Patch Changes</h3> <ul> <li>fix: better error message when using <code>read</code> (<a href="https://github.com/sveltejs/kit/pull/11689">#11689</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/kit/blob/main/packages/adapter-auto/CHANGELOG.md"><code>@sveltejs/adapter-auto</code>'s changelog</a>.</em></p> <blockquote> <h2>3.1.1</h2> <h3>Patch Changes</h3> <ul> <li>fix: better error message when using <code>read</code> (<a href="https://github.com/sveltejs/kit/pull/11689">#11689</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/kit/commit/043ad0fb7c9247313542253599cd06d6da00a6bf"><code>043ad0f</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/adapter-auto/issues/11691">#11691</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/961ba2c3fb7b220b8738085092cb722b5f1b9913"><code>961ba2c</code></a> fix: better error message when using <code>read</code> with <code>adapter-auto</code> - closes <a href="https://github.com/sveltejs/kit/tree/HEAD/packages/adapter-auto/issues/116">#116</a>...</li> <li>See full diff in <a href="https://github.com/sveltejs/kit/commits/@sveltejs/adapter-auto@3.1.1/packages/adapter-auto">compare view</a></li> </ul> </details> <br /> Updates `@sveltejs/kit` from 2.0.6 to 2.5.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/kit/releases"><code>@sveltejs/kit</code>'s releases</a>.</em></p> <blockquote> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.5.2</h2> <h3>Patch Changes</h3> <ul> <li>fix: tsconfig includes should cover svelte.config.js (<a href="https://github.com/sveltejs/kit/pull/11886">#11886</a>)</li> </ul> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.5.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>fix: prevent stale values after invalidation (<a href="https://github.com/sveltejs/kit/pull/11870">#11870</a>)</p> </li> <li> <p>fix: prevent false positive <code>history.pushState</code> and <code>history.replaceState</code> warnings (<a href="https://github.com/sveltejs/kit/pull/11858">#11858</a>)</p> </li> <li> <p>fix: relax status code types (<a href="https://github.com/sveltejs/kit/pull/11781">#11781</a>)</p> </li> <li> <p>fix: <code>popstate</code> navigations take <code>pushState</code> navigations into account (<a href="https://github.com/sveltejs/kit/pull/11765">#11765</a>)</p> </li> </ul> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.5.0</h2> <h3>Minor Changes</h3> <ul> <li>feat: dev/preview/prerender platform emulation (<a href="https://github.com/sveltejs/kit/pull/11730">#11730</a>)</li> </ul> <h3>Patch Changes</h3> <ul> <li>fix: strip <code>/@fs</code> prefix correctly on Windows when invoking <code>read()</code> in dev mode (<a href="https://github.com/sveltejs/kit/pull/11728">#11728</a>)</li> </ul> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.4.3</h2> <h3>Patch Changes</h3> <ul> <li>fix: only disallow body with GET/HEAD (<a href="https://github.com/sveltejs/kit/pull/11710">#11710</a>)</li> </ul> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.4.2</h2> <h3>Patch Changes</h3> <ul> <li>fix: ignore bodies sent with non-PUT/PATCH/POST requests (<a href="https://github.com/sveltejs/kit/pull/11708">#11708</a>)</li> </ul> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.4.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>fix: use Vite's default value for <code>build.target</code> and respect override supplied by user (<a href="https://github.com/sveltejs/kit/pull/11688">#11688</a>)</p> </li> <li> <p>fix: properly decode base64 strings inside <code>read</code> (<a href="https://github.com/sveltejs/kit/pull/11682">#11682</a>)</p> </li> <li> <p>fix: default route config to <code>{}</code> for feature checking (<a href="https://github.com/sveltejs/kit/pull/11685">#11685</a>)</p> </li> <li> <p>fix: handle <code>onNavigate</code> callbacks correctly (<a href="https://github.com/sveltejs/kit/pull/11678">#11678</a>)</p> </li> </ul> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.4.0</h2> <h3>Minor Changes</h3> <ul> <li>feat: add <code>$app/server</code> module with <code>read</code> function for reading assets from filesystem (<a href="https://github.com/sveltejs/kit/pull/11649">#11649</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md"><code>@sveltejs/kit</code>'s changelog</a>.</em></p> <blockquote> <h2>2.5.2</h2> <h3>Patch Changes</h3> <ul> <li>fix: tsconfig includes should cover svelte.config.js (<a href="https://github.com/sveltejs/kit/pull/11886">#11886</a>)</li> </ul> <h2>2.5.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>fix: prevent stale values after invalidation (<a href="https://github.com/sveltejs/kit/pull/11870">#11870</a>)</p> </li> <li> <p>fix: prevent false positive <code>history.pushState</code> and <code>history.replaceState</code> warnings (<a href="https://github.com/sveltejs/kit/pull/11858">#11858</a>)</p> </li> <li> <p>fix: relax status code types (<a href="https://github.com/sveltejs/kit/pull/11781">#11781</a>)</p> </li> <li> <p>fix: <code>popstate</code> navigations take <code>pushState</code> navigations into account (<a href="https://github.com/sveltejs/kit/pull/11765">#11765</a>)</p> </li> </ul> <h2>2.5.0</h2> <h3>Minor Changes</h3> <ul> <li>feat: dev/preview/prerender platform emulation (<a href="https://github.com/sveltejs/kit/pull/11730">#11730</a>)</li> </ul> <h3>Patch Changes</h3> <ul> <li>fix: strip <code>/@fs</code> prefix correctly on Windows when invoking <code>read()</code> in dev mode (<a href="https://github.com/sveltejs/kit/pull/11728">#11728</a>)</li> </ul> <h2>2.4.3</h2> <h3>Patch Changes</h3> <ul> <li>fix: only disallow body with GET/HEAD (<a href="https://github.com/sveltejs/kit/pull/11710">#11710</a>)</li> </ul> <h2>2.4.2</h2> <h3>Patch Changes</h3> <ul> <li>fix: ignore bodies sent with non-PUT/PATCH/POST requests (<a href="https://github.com/sveltejs/kit/pull/11708">#11708</a>)</li> </ul> <h2>2.4.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>fix: use Vite's default value for <code>build.target</code> and respect override supplied by user (<a href="https://github.com/sveltejs/kit/pull/11688">#11688</a>)</p> </li> <li> <p>fix: properly decode base64 strings inside <code>read</code> (<a href="https://github.com/sveltejs/kit/pull/11682">#11682</a>)</p> </li> <li> <p>fix: default route config to <code>{}</code> for feature checking (<a href="https://github.com/sveltejs/kit/pull/11685">#11685</a>)</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/kit/commit/4d98369e19f99e239c4ee747a078b0abeb142c53"><code>4d98369</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11903">#11903</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/f6f9e70097c721e76a2f42b0e4dee48f815bc160"><code>f6f9e70</code></a> fix: tsconfig includes should cover svelte.config.js (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11886">#11886</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/4ae1cd152a60a22044ab3b8aa5572a2b79864583"><code>4ae1cd1</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11767">#11767</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/75e1f5ff012ba95ee21ae151a8ede821dfb85fe5"><code>75e1f5f</code></a> fix: prevent stale values after invalidation (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11870">#11870</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/511126b51d4aaa770704491ff0890a76fa116205"><code>511126b</code></a> fix: prevent false positive <code>history.pushState</code> warnings (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11858">#11858</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/08cd13919b128d7ed484f8afdaddbd64f3e9164f"><code>08cd139</code></a> chore: update chokidar to 3.6.0 (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11811">#11811</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/c749e85d2502d5eac03f739c8f18a2f3a4dcb13e"><code>c749e85</code></a> chore(deps): update dependency marked to v12 (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11795">#11795</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/f7c4f36e833dce4ae0f79a6c1634810edd744fe3"><code>f7c4f36</code></a> fix: relax status code types (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11781">#11781</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/311fe8f3c01c7216ae1317d026ba62636f6f660e"><code>311fe8f</code></a> fix: <code>popstate</code> navigations take <code>pushState</code> navigations into account (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11765">#11765</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/969e69fa0f0d2f631a64166a7f80035971056401"><code>969e69f</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11735">#11735</a>)</li> <li>Additional commits viewable in <a href="https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.5.2/packages/kit">compare view</a></li> </ul> </details> <br /> Updates `@sveltejs/vite-plugin-svelte` from 3.0.1 to 3.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/vite-plugin-svelte/releases"><code>@sveltejs/vite-plugin-svelte</code>'s releases</a>.</em></p> <blockquote> <h2><code>@sveltejs/vite-plugin-svelte</code><a href="https://github.com/3"><code>@3</code></a>.0.2</h2> <h3>Patch Changes</h3> <ul> <li>fix(compile): correctly determine script lang in files where a comment precedes the script tag (<a href="https://github.com/sveltejs/vite-plugin-svelte/pull/844">#844</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md"><code>@sveltejs/vite-plugin-svelte</code>'s changelog</a>.</em></p> <blockquote> <h2>3.0.2</h2> <h3>Patch Changes</h3> <ul> <li>fix(compile): correctly determine script lang in files where a comment precedes the script tag (<a href="https://github.com/sveltejs/vite-plugin-svelte/pull/844">#844</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/e04c9a86f6a8cbc8445139bf0ad04b04c9bda633"><code>e04c9a8</code></a> Version Packages (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/845">#845</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/a0063554bf846977a7b87df1aee7094e5e85e7c1"><code>a006355</code></a> chore(deps): update all non-major dependencies (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/842">#842</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/e95d863cc06881770a89948180ac53692f911f20"><code>e95d863</code></a> fix: correctly detect script language during compilation (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/844">#844</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/d5a6dad8da2da3e505433e1290e9f2aa9bb82d4e"><code>d5a6dad</code></a> chore(deps): update all non-major dependencies (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/833">#833</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/833d66cee57a0ec7cbfcf29b23796988dfdc7cf3"><code>833d66c</code></a> chore: update to SvelteKit 2 (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/831">#831</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/4a8d590b540cb91dde34a7162de3933e46106f0b"><code>4a8d590</code></a> chore(deps): update all non-major dependencies (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/823">#823</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/ee0aa51e4a484f3b7e5e8b3563f6dc9cb6c89c8d"><code>ee0aa51</code></a> chore(deps): update all non-major dependencies (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/821">#821</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/aca75344e34b90dd7aff8cf7f42231702ea93a03"><code>aca7534</code></a> chore(deps): update all non-major dependencies (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/818">#818</a>)</li> <li><a href="https://github.com/sveltejs/vite-plugin-svelte/commit/2510174305a1d960d46b726a1b41f3be745348b0"><code>2510174</code></a> chore(deps): update all non-major dependencies (<a href="https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte/issues/815">#815</a>)</li> <li>See full diff in <a href="https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@3.0.2/packages/vite-plugin-svelte">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/eslint-plugin` from 6.17.0 to 7.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/eslint-plugin</code>'s releases</a>.</em></p> <blockquote> <h2>v7.1.0</h2> <h2>7.1.0 (2024-02-26)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> add *-type-checked-only configs (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8367">#8367</a>)</li> <li><strong>eslint-plugin:</strong> [naming-convention] support the auto-accessor syntax (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8084">#8084</a>)</li> <li><strong>eslint-plugin:</strong> [consistent-return] add new rule (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8289">#8289</a>)</li> <li><strong>typescript-estree:</strong> add debug logs for useProgramFromProjectService (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8426">#8426</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [prefer-optional-chan] allow typeof for avoiding reference error (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8472">#8472</a>)</li> <li><strong>eslint-plugin:</strong> [no-misused-promises] improve check union types (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8534">#8534</a>)</li> <li><strong>eslint-plugin:</strong> [no-use-before-define] fix false positive type reference in as, satisfies (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8474">#8474</a>)</li> <li><strong>typescript-estree:</strong> use simpler absolutify behavior for project service client file paths (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8520">#8520</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Arka Pratim Chaudhuri <a href="https://github.com/arka1002"><code>@arka1002</code></a></li> <li>Josh Goldberg ✨</li> <li>YeonJuan <a href="https://github.com/yeonjuan"><code>@yeonjuan</code></a></li> </ul> <p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p> <h2>v7.0.2</h2> <h2>7.0.2 (2024-02-19)</h2> <h3>🩹 Fixes</h3> <ul> <li>fix tsconfig-less check errors, fix <code>@types/eslint</code> incompatibilities, add tests (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8460">#8460</a>)</li> <li><strong>utils:</strong> use mergeable interface for <code>settings</code> property (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8485">#8485</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Brad Zacher <a href="https://github.com/bradzacher"><code>@bradzacher</code></a></li> <li>Gareth Jones <a href="https://github.com/G-Rath"><code>@G-Rath</code></a></li> </ul> <p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p> <h2>v7.0.1</h2> <h2>7.0.1 (2024-02-12)</h2> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> update peer dep for parser (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8441">#8441</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md"><code>@typescript-eslint/eslint-plugin</code>'s changelog</a>.</em></p> <blockquote> <h2>7.1.0 (2024-02-26)</h2> <h3>🚀 Features</h3> <ul> <li> <p><strong>eslint-plugin:</strong> add *-type-checked-only configs</p> </li> <li> <p><strong>eslint-plugin:</strong> [naming-convention] support the auto-acce…
Bumps the all group in /ui with 10 updates: | Package | From | To | | --- | --- | --- | | [@playwright/test](https://github.com/microsoft/playwright) | `1.41.2` | `1.42.1` | | [@skeletonlabs/skeleton](https://github.com/skeletonlabs/skeleton) | `2.8.0` | `2.9.0` | | [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) | `2.5.1` | `2.5.2` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `18.19.18` | `18.19.21` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.0.2` | `7.1.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `7.0.2` | `7.1.0` | | [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.17` | `10.4.18` | | [msw](https://github.com/mswjs/msw) | `2.2.1` | `2.2.2` | | [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) | `3.2.1` | `3.2.2` | | [svelte-check](https://github.com/sveltejs/language-tools) | `3.6.4` | `3.6.6` | Updates `@playwright/test` from 1.41.2 to 1.42.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.42.1</h2> <h3>Highlights</h3> <p><a href="https://github.com/microsoft/playwright/issues/29732">microsoft/playwright#29732</a> - [Regression]: HEAD requests to webServer.url since v1.42.0 <a href="https://github.com/microsoft/playwright/issues/29746">microsoft/playwright#29746</a> - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin import <a href="https://github.com/microsoft/playwright/issues/29739">microsoft/playwright#29739</a> - [Bug]: Component tests fails when imported a module with a dot in a name <a href="https://github.com/microsoft/playwright/issues/29731">microsoft/playwright#29731</a> - [Regression]: 1.42.0 breaks some import statements <a href="https://github.com/microsoft/playwright/issues/29760">microsoft/playwright#29760</a> - [Bug]: Possible regression with chained locators in v1.42</p> <h3>Browser Versions</h3> <ul> <li>Chromium 123.0.6312.4</li> <li>Mozilla Firefox 123.0</li> <li>WebKit 17.4</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 122</li> <li>Microsoft Edge 123</li> </ul> <h2>v1.42.0</h2> <h2>New APIs</h2> <ul> <li> <p><strong>Test tags</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New tag syntax</a> for adding tags to the tests (@-tokens in the test title are still supported).</p> <pre lang="js"><code>test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... }); </code></pre> <p>Use <code>--grep</code> command line option to run only tests with certain tags.</p> <pre lang="sh"><code>npx playwright test --grep @fast </code></pre> </li> <li> <p><strong>Annotating skipped tests</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#annotate-tests">New annotation syntax</a> for test annotations allows annotating the tests that do not run.</p> <pre lang="js"><code>test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/playwright/commit/9749f7542676bce2d77f738b5fffcd7b0f46d67c"><code>9749f75</code></a> chore: mark 1.42.1 (<a href="https://github.com/microsoft/playwright/issues/29774">#29774</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/d4ac444f7d5e0a01a27e5c2c023962a38c4bce41"><code>d4ac444</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29770">#29770</a>): docs: improve addLocatorHandler docs</li> <li><a href="https://github.com/microsoft/playwright/commit/a7025956c3d7161c16eb7054646d809249b29020"><code>a702595</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29765">#29765</a>): Revert "chore(role): cache element list by role (<a href="https://github.com/microsoft/playwright/issues/29130">#29130</a>)"</li> <li><a href="https://github.com/microsoft/playwright/commit/b67050638b65156c55798b60a0a75e15fe935d2d"><code>b670506</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29766">#29766</a>): fix(tsload): fix tsconfig inheritance resolution</li> <li><a href="https://github.com/microsoft/playwright/commit/3a4381303ccafdeb599f461d60bd55fa6425f57c"><code>3a43813</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29744">#29744</a>): fix(ct): stop-gap for shared file import</li> <li><a href="https://github.com/microsoft/playwright/commit/d23fb005d4cd171408aee90db3cde733c6179ed3"><code>d23fb00</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29754">#29754</a>): chore: remove pw- binaries from ct</li> <li><a href="https://github.com/microsoft/playwright/commit/56e50a7304b160b89979a239688a691f90bd1f51"><code>56e50a7</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29748">#29748</a>): fix(ct): fix the non-react cli entry points</li> <li><a href="https://github.com/microsoft/playwright/commit/3f6b6419c507ea8db01dcd0dd21284b47cf14fcb"><code>3f6b641</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29738">#29738</a>): fix(HEAD): revert GET->HEAD migration, net-effect was ne...</li> <li><a href="https://github.com/microsoft/playwright/commit/20db86da3e492e6b966e008dab11102bc03937e0"><code>20db86d</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29706">#29706</a>): fit(ct): remove unused type import (<a href="https://github.com/microsoft/playwright/issues/29709">#29709</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/84780b1b750d343cf6372c5965582f43e75cb8c9"><code>84780b1</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29715">#29715</a>): fix: point to the right cli program export</li> <li>Additional commits viewable in <a href="https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.1">compare view</a></li> </ul> </details> <br /> Updates `@skeletonlabs/skeleton` from 2.8.0 to 2.9.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/skeletonlabs/skeleton/releases"><code>@skeletonlabs/skeleton</code>'s releases</a>.</em></p> <blockquote> <h2><code>@skeletonlabs/skeleton</code><a href="https://github.com/2"><code>@2</code></a>.9.0</h2> <h3>Minor Changes</h3> <ul> <li>feat: Added <code>disabled</code> prop to ListBox and ListBoxItem components. (<a href="https://github.com/skeletonlabs/skeleton/pull/2485">#2485</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/skeletonlabs/skeleton/commit/0af33f41224c88753eb2c7d547e911b55a475110"><code>0af33f4</code></a> Merge pull request <a href="https://github.com/skeletonlabs/skeleton/issues/2520">#2520</a> from skeletonlabs/changeset-release/master</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/18d246a2e082c124c11b8daa08015752451f6069"><code>18d246a</code></a> chore(release): version package</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/7bc56a1a10f67bece05e5bad308f1c137b4e0462"><code>7bc56a1</code></a> Merge pull request <a href="https://github.com/skeletonlabs/skeleton/issues/2519">#2519</a> from skeletonlabs/dev</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/b78a3b48fee48999b5e39325abd71a067e4a33db"><code>b78a3b4</code></a> docs/fix typo in file path for Datatable.svelte within SSD docs (<a href="https://github.com/skeletonlabs/skeleton/issues/2515">#2515</a>)</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/3a27212fe7d4e23a491902de1279780ee43ae6e7"><code>3a27212</code></a> Feat/add disabled to listbox listboxitem (<a href="https://github.com/skeletonlabs/skeleton/issues/2485">#2485</a>)</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/a5a588d8819f36bc369c097c0cc972996e820e06"><code>a5a588d</code></a> remove store link from sidebar navigation (<a href="https://github.com/skeletonlabs/skeleton/issues/2500">#2500</a>)</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/9314b1fb2b5070603ff561d99465a53a515014ba"><code>9314b1f</code></a> Testing build isolation</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/2b72ae11ffc55bf2fb65c654d93f7d7050b870be"><code>2b72ae1</code></a> Merge pull request <a href="https://github.com/skeletonlabs/skeleton/issues/2478">#2478</a> from kmalloy24/docs/ssd-typo</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/191526d9d2bbf3e943d62f098f12dd582f7fb939"><code>191526d</code></a> typo</li> <li><a href="https://github.com/skeletonlabs/skeleton/commit/c6a4ddc02d2883e2ff0c350cc5f02f3b69d0d9ce"><code>c6a4ddc</code></a> Merge pull request <a href="https://github.com/skeletonlabs/skeleton/issues/2476">#2476</a> from skeletonlabs/changeset-release/master</li> <li>Additional commits viewable in <a href="https://github.com/skeletonlabs/skeleton/compare/@skeletonlabs/skeleton@2.8.0...@skeletonlabs/skeleton@2.9.0">compare view</a></li> </ul> </details> <br /> Updates `@sveltejs/kit` from 2.5.1 to 2.5.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/kit/releases"><code>@sveltejs/kit</code>'s releases</a>.</em></p> <blockquote> <h2><code>@sveltejs/kit</code><a href="https://github.com/2"><code>@2</code></a>.5.2</h2> <h3>Patch Changes</h3> <ul> <li>fix: tsconfig includes should cover svelte.config.js (<a href="https://github.com/sveltejs/kit/pull/11886">#11886</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md"><code>@sveltejs/kit</code>'s changelog</a>.</em></p> <blockquote> <h2>2.5.2</h2> <h3>Patch Changes</h3> <ul> <li>fix: tsconfig includes should cover svelte.config.js (<a href="https://github.com/sveltejs/kit/pull/11886">#11886</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/kit/commit/4d98369e19f99e239c4ee747a078b0abeb142c53"><code>4d98369</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11903">#11903</a>)</li> <li><a href="https://github.com/sveltejs/kit/commit/f6f9e70097c721e76a2f42b0e4dee48f815bc160"><code>f6f9e70</code></a> fix: tsconfig includes should cover svelte.config.js (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/11886">#11886</a>)</li> <li>See full diff in <a href="https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.5.2/packages/kit">compare view</a></li> </ul> </details> <br /> Updates `@types/node` from 18.19.18 to 18.19.21 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/eslint-plugin` from 7.0.2 to 7.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/eslint-plugin</code>'s releases</a>.</em></p> <blockquote> <h2>v7.1.0</h2> <h2>7.1.0 (2024-02-26)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> add *-type-checked-only configs (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8367">#8367</a>)</li> <li><strong>eslint-plugin:</strong> [naming-convention] support the auto-accessor syntax (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8084">#8084</a>)</li> <li><strong>eslint-plugin:</strong> [consistent-return] add new rule (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8289">#8289</a>)</li> <li><strong>typescript-estree:</strong> add debug logs for useProgramFromProjectService (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8426">#8426</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [prefer-optional-chan] allow typeof for avoiding reference error (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8472">#8472</a>)</li> <li><strong>eslint-plugin:</strong> [no-misused-promises] improve check union types (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8534">#8534</a>)</li> <li><strong>eslint-plugin:</strong> [no-use-before-define] fix false positive type reference in as, satisfies (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8474">#8474</a>)</li> <li><strong>typescript-estree:</strong> use simpler absolutify behavior for project service client file paths (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8520">#8520</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Arka Pratim Chaudhuri <a href="https://github.com/arka1002"><code>@arka1002</code></a></li> <li>Josh Goldberg ✨</li> <li>YeonJuan <a href="https://github.com/yeonjuan"><code>@yeonjuan</code></a></li> </ul> <p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md"><code>@typescript-eslint/eslint-plugin</code>'s changelog</a>.</em></p> <blockquote> <h2>7.1.0 (2024-02-26)</h2> <h3>🚀 Features</h3> <ul> <li> <p><strong>eslint-plugin:</strong> add *-type-checked-only configs</p> </li> <li> <p><strong>eslint-plugin:</strong> [naming-convention] support the auto-accessor syntax</p> </li> <li> <p><strong>eslint-plugin:</strong> [consistent-return] add new rule</p> </li> </ul> <h3>🩹 Fixes</h3> <ul> <li> <p><strong>eslint-plugin:</strong> [prefer-optional-chan] allow typeof for avoiding reference error</p> </li> <li> <p><strong>eslint-plugin:</strong> [no-misused-promises] improve check union types</p> </li> <li> <p><strong>eslint-plugin:</strong> [no-use-before-define] fix false positive type reference in as, satisfies</p> </li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Arka Pratim Chaudhuri</li> <li>Josh Goldberg ✨</li> <li>YeonJuan</li> </ul> <p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/4bc6944f880570273d8486d07bbac63186c8dfe0"><code>4bc6944</code></a> chore(release): publish 7.1.0</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/1807d555aeb99873c665b34b75a4e5bc89bc1f86"><code>1807d55</code></a> docs: add tabs in no-unsafe-unary-minus.md (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8542">#8542</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/f2f57de6d203f083a0573c132196f0777182793f"><code>f2f57de</code></a> test(eslint-plugin): [no-misused-promises] add test cases for spread args (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8">#8</a>...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/fa679550052f122c82bc4fd88d2e2c9138824bc3"><code>fa67955</code></a> chore: drop T from internal types (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8521">#8521</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/60c1cd35dd057f0e6d836f1c38d255f275002c89"><code>60c1cd3</code></a> fix(eslint-plugin): [no-use-before-define] fix false positive type reference ...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/14589205e405d91605be84c0492c02458efe5f54"><code>1458920</code></a> fix(eslint-plugin): [no-misused-promises] improve check union types (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8534">#8534</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/c1441c8f5bb0f980238c934af6e499baacdd41f2"><code>c1441c8</code></a> fix(eslint-plugin): [prefer-optional-chan] allow typeof for avoiding referenc...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/e7ec6f061f9ce77346906a0d865fd9c18281256d"><code>e7ec6f0</code></a> docs: from option instead of source in prefer-readonly-parameter-types (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8461">#8461</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/46cef966fb861f341768815a6fcae974d7cd43ff"><code>46cef96</code></a> feat(eslint-plugin): [consistent-return] add new rule (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8289">#8289</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/f7198db67d881c9b288e8f0774c1ad0ea2a5d900"><code>f7198db</code></a> feat(eslint-plugin): [naming-convention] support the auto-accessor syntax (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/8">#8</a>...</li> <li>Additional commits viewable in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v7.1.0/packages/eslint-plugin">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/parser` from 7.0.2 to 7.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/parser</code>'s releases</a>.</em></p> <blockquote> <h2>v7.1.0</h2> <h2>7.1.0 (2024-02-26)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> add *-type-checked-only configs (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8367">#8367</a>)</li> <li><strong>eslint-plugin:</strong> [naming-convention] support the auto-accessor syntax (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8084">#8084</a>)</li> <li><strong>eslint-plugin:</strong> [consistent-return] add new rule (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8289">#8289</a>)</li> <li><strong>typescript-estree:</strong> add debug logs for useProgramFromProjectService (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8426">#8426</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [prefer-optional-chan] allow typeof for avoiding reference error (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8472">#8472</a>)</li> <li><strong>eslint-plugin:</strong> [no-misused-promises] improve check union types (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8534">#8534</a>)</li> <li><strong>eslint-plugin:</strong> [no-use-before-define] fix false positive type reference in as, satisfies (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8474">#8474</a>)</li> <li><strong>typescript-estree:</strong> use simpler absolutify behavior for project service client file paths (<a href="https://github.com/typescript-eslint/typescript-eslint/pull/8520">#8520</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Arka Pratim Chaudhuri <a href="https://github.com/arka1002"><code>@arka1002</code></a></li> <li>Josh Goldberg ✨</li> <li>YeonJuan <a href="https://github.com/yeonjuan"><code>@yeonjuan</code></a></li> </ul> <p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md"><code>@typescript-eslint/parser</code>'s changelog</a>.</em></p> <blockquote> <h2>7.1.0 (2024-02-26)</h2> <p>This was a version bump only for parser to align it with other projects, there were no code changes.</p> <p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/4bc6944f880570273d8486d07bbac63186c8dfe0"><code>4bc6944</code></a> chore(release): publish 7.1.0</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v7.1.0/packages/parser">compare view</a></li> </ul> </details> <br /> Updates `autoprefixer` from 10.4.17 to 10.4.18 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/postcss/autoprefixer/releases">autoprefixer's releases</a>.</em></p> <blockquote> <h2>10.4.18</h2> <ul> <li>Fixed removing <code>-webkit-box-orient</code> on <code>-webkit-line-clamp</code> (<a href="https://github.com/Goodwine"><code>@Goodwine</code></a>).</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md">autoprefixer's changelog</a>.</em></p> <blockquote> <h2>10.4.18</h2> <ul> <li>Fixed removing <code>-webkit-box-orient</code> on <code>-webkit-line-clamp</code> (<a href="https://github.com/Goodwine"><code>@Goodwine</code></a>).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/postcss/autoprefixer/commit/90dc18d7201608ccf1a02aba476feec28f60257e"><code>90dc18d</code></a> Release 10.4.18 version</li> <li><a href="https://github.com/postcss/autoprefixer/commit/0af1be8a7453d28701f99cfdeefe026548c690cf"><code>0af1be8</code></a> Update dependencies</li> <li><a href="https://github.com/postcss/autoprefixer/commit/1efe165b9511049b72f4abdb537cf9494889e48e"><code>1efe165</code></a> Update c8 config</li> <li><a href="https://github.com/postcss/autoprefixer/commit/80ff109c02e9ab40e4f8de57584309372f90ec5a"><code>80ff109</code></a> Add Node.js 21 to CI</li> <li><a href="https://github.com/postcss/autoprefixer/commit/5e5d1935b81c41a5f9bbcc1b63377e32b8c6de59"><code>5e5d193</code></a> Automate release creation</li> <li><a href="https://github.com/postcss/autoprefixer/commit/e72c36a761b07b8083c2d746f200e7d2e7fc7e47"><code>e72c36a</code></a> Update actions</li> <li><a href="https://github.com/postcss/autoprefixer/commit/ec68b5212fee8d25354cd68566311a808dbe96d8"><code>ec68b52</code></a> Preserve -webkit-box-orient when -webkit-line-clamp is present (<a href="https://github.com/postcss/autoprefixer/issues/1511">#1511</a>)</li> <li>See full diff in <a href="https://github.com/postcss/autoprefixer/compare/10.4.17...10.4.18">compare view</a></li> </ul> </details> <br /> Updates `msw` from 2.2.1 to 2.2.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/mswjs/msw/releases">msw's releases</a>.</em></p> <blockquote> <h2>v2.2.2 (2024-02-28)</h2> <h3>Bug Fixes</h3> <ul> <li>set correct "Content-Length" response header for special characters (<a href="https://github.com/mswjs/msw/issues/2045">#2045</a>) (<a href="https://github.com/mswjs/msw/issues/2046">#2046</a>) (eb3e284a3e27956987854d23878aa4ea11c56dde) <a href="https://github.com/ZeroCho"><code>@ZeroCho</code></a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/mswjs/msw/commit/b3e47f71d3a0333aaeab3da5839cb9068a30d7ef"><code>b3e47f7</code></a> chore(release): v2.2.2</li> <li><a href="https://github.com/mswjs/msw/commit/eb3e284a3e27956987854d23878aa4ea11c56dde"><code>eb3e284</code></a> fix: set correct "Content-Length" response header for special characters (<a href="https://github.com/mswjs/msw/issues/20">#20</a>...</li> <li>See full diff in <a href="https://github.com/mswjs/msw/compare/v2.2.1...v2.2.2">compare view</a></li> </ul> </details> <br /> Updates `prettier-plugin-svelte` from 3.2.1 to 3.2.2 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/prettier-plugin-svelte/blob/master/CHANGELOG.md">prettier-plugin-svelte's changelog</a>.</em></p> <blockquote> <h2>3.2.2</h2> <ul> <li>(fix) handle updated <code>@render</code> tag AST shape</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/601ee41a20311882bb9c046dcac21c868911b624"><code>601ee41</code></a> chore: release 3.2.2</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/c968fef2c2de4092ccedc0f2f9ba7cb0f207669f"><code>c968fef</code></a> fix: adjust render tag printing for Svelte 5 AST changes</li> <li><a href="https://github.com/sveltejs/prettier-plugin-svelte/commit/08d7a8ba9978b5392d0adb4127da2cb7ed8aee6d"><code>08d7a8b</code></a> chore: cross-test dirs test.only support</li> <li>See full diff in <a href="https://github.com/sveltejs/prettier-plugin-svelte/compare/v3.2.1...v3.2.2">compare view</a></li> </ul> </details> <br /> Updates `svelte-check` from 3.6.4 to 3.6.6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sveltejs/language-tools/releases">svelte-check's releases</a>.</em></p> <blockquote> <h2>svelte-check-3.6.6</h2> <ul> <li>fix: adjust render tag for latest AST version</li> </ul> <h2>svelte-check-3.6.5</h2> <ul> <li>fix: adjust $props() comment type logic (<a href="https://github.com/sveltejs/language-tools/issues/2294">#2294</a>)</li> <li>fix: use Svelte 4 compiler from user when available</li> <li>fix: adjust snippet helper type to new snippet API</li> <li>fix: also take type argument into account when analyzing $props()</li> <li>fix: don't add form type to zero types when property is not typed out</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sveltejs/language-tools/commit/4bd1424d80ab2c659644b7ce1346dfaaa640628e"><code>4bd1424</code></a> chore: bump versions (<a href="https://github.com/sveltejs/language-tools/issues/2304">#2304</a>)</li> <li><a href="https://github.com/sveltejs/language-tools/commit/ff2f10a1a80b146df51374060358dd34e63432df"><code>ff2f10a</code></a> chore: update tests</li> <li><a href="https://github.com/sveltejs/language-tools/commit/c27a99b6570f91781e7321ee5d4c248bf535d9bd"><code>c27a99b</code></a> fix: adjust render tag for latest AST version</li> <li><a href="https://github.com/sveltejs/language-tools/commit/259ff2c85d193681ace45dd681678ef25581b5c7"><code>259ff2c</code></a> fix: don't add form types when not typed out</li> <li><a href="https://github.com/sveltejs/language-tools/commit/6badc2f2e8ed480c6cae41ef0ae2a913879b0cf7"><code>6badc2f</code></a> fix: also take type argument into account when analyzing <code>$props()</code></li> <li><a href="https://github.com/sveltejs/language-tools/commit/8976bbe33d464dcefc7949870a5618c19e2206cf"><code>8976bbe</code></a> fix: adjust snippet helper type to new snippet API</li> <li><a href="https://github.com/sveltejs/language-tools/commit/0b1cb0665046703f882cf08a99b1e2a880f6f88e"><code>0b1cb06</code></a> fix: use Svelte 4 compiler from user when available</li> <li><a href="https://github.com/sveltejs/language-tools/commit/00e347e1b4e51410bfc346a8c81b4c885e47f821"><code>00e347e</code></a> feat: completion for custom element tag name and event (<a href="https://github.com/sveltejs/language-tools/issues/2300">#2300</a>)</li> <li><a href="https://github.com/sveltejs/language-tools/commit/1b5e9134d40b623c88490e14d3338af94f6b552c"><code>1b5e913</code></a> fix: adjust <code>$props()</code> comment type logic (<a href="https://github.com/sveltejs/language-tools/issues/2294">#2294</a>)</li> <li>See full diff in <a href="https://github.com/sveltejs/language-tools/compare/svelte-check-3.6.4...svelte-check-3.6.6">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details>
Bumps the minor group with 9 updates: | Package | From | To | | --- | --- | --- | | [@playwright/experimental-ct-vue](https://github.com/microsoft/playwright) | `1.41.2` | `1.42.1` | | [@playwright/test](https://github.com/microsoft/playwright) | `1.41.2` | `1.42.1` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.11.20` | `20.11.24` | | [@vue/compiler-dom](https://github.com/vuejs/core/tree/HEAD/packages/compiler-dom) | `3.4.20` | `3.4.21` | | [eslint-plugin-playwright](https://github.com/playwright-community/eslint-plugin-playwright) | `1.3.1` | `1.5.1` | | [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks) | `2.9.0` | `2.10.0` | | [vue](https://github.com/vuejs/core) | `3.4.20` | `3.4.21` | | [vue-i18n](https://github.com/intlify/vue-i18n-next/tree/HEAD/packages/vue-i18n) | `9.9.1` | `9.10.1` | | [@types/eslint](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/eslint) | `8.56.3` | `8.56.5` | Updates `@playwright/experimental-ct-vue` from 1.41.2 to 1.42.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/experimental-ct-vue</code>'s releases</a>.</em></p> <blockquote> <h2>v1.42.1</h2> <h3>Highlights</h3> <p><a href="https://github.com/microsoft/playwright/issues/29732">microsoft/playwright#29732</a> - [Regression]: HEAD requests to webServer.url since v1.42.0 <a href="https://github.com/microsoft/playwright/issues/29746">microsoft/playwright#29746</a> - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin import <a href="https://github.com/microsoft/playwright/issues/29739">microsoft/playwright#29739</a> - [Bug]: Component tests fails when imported a module with a dot in a name <a href="https://github.com/microsoft/playwright/issues/29731">microsoft/playwright#29731</a> - [Regression]: 1.42.0 breaks some import statements <a href="https://github.com/microsoft/playwright/issues/29760">microsoft/playwright#29760</a> - [Bug]: Possible regression with chained locators in v1.42</p> <h3>Browser Versions</h3> <ul> <li>Chromium 123.0.6312.4</li> <li>Mozilla Firefox 123.0</li> <li>WebKit 17.4</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 122</li> <li>Microsoft Edge 123</li> </ul> <h2>v1.42.0</h2> <h2>New APIs</h2> <ul> <li> <p><strong>Test tags</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New tag syntax</a> for adding tags to the tests (@-tokens in the test title are still supported).</p> <pre lang="js"><code>test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... }); </code></pre> <p>Use <code>--grep</code> command line option to run only tests with certain tags.</p> <pre lang="sh"><code>npx playwright test --grep @fast </code></pre> </li> <li> <p><strong>Annotating skipped tests</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#annotate-tests">New annotation syntax</a> for test annotations allows annotating the tests that do not run.</p> <pre lang="js"><code>test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/playwright/commit/9749f7542676bce2d77f738b5fffcd7b0f46d67c"><code>9749f75</code></a> chore: mark 1.42.1 (<a href="https://github.com/microsoft/playwright/issues/29774">#29774</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/d4ac444f7d5e0a01a27e5c2c023962a38c4bce41"><code>d4ac444</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29770">#29770</a>): docs: improve addLocatorHandler docs</li> <li><a href="https://github.com/microsoft/playwright/commit/a7025956c3d7161c16eb7054646d809249b29020"><code>a702595</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29765">#29765</a>): Revert "chore(role): cache element list by role (<a href="https://github.com/microsoft/playwright/issues/29130">#29130</a>)"</li> <li><a href="https://github.com/microsoft/playwright/commit/b67050638b65156c55798b60a0a75e15fe935d2d"><code>b670506</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29766">#29766</a>): fix(tsload): fix tsconfig inheritance resolution</li> <li><a href="https://github.com/microsoft/playwright/commit/3a4381303ccafdeb599f461d60bd55fa6425f57c"><code>3a43813</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29744">#29744</a>): fix(ct): stop-gap for shared file import</li> <li><a href="https://github.com/microsoft/playwright/commit/d23fb005d4cd171408aee90db3cde733c6179ed3"><code>d23fb00</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29754">#29754</a>): chore: remove pw- binaries from ct</li> <li><a href="https://github.com/microsoft/playwright/commit/56e50a7304b160b89979a239688a691f90bd1f51"><code>56e50a7</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29748">#29748</a>): fix(ct): fix the non-react cli entry points</li> <li><a href="https://github.com/microsoft/playwright/commit/3f6b6419c507ea8db01dcd0dd21284b47cf14fcb"><code>3f6b641</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29738">#29738</a>): fix(HEAD): revert GET->HEAD migration, net-effect was ne...</li> <li><a href="https://github.com/microsoft/playwright/commit/20db86da3e492e6b966e008dab11102bc03937e0"><code>20db86d</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29706">#29706</a>): fit(ct): remove unused type import (<a href="https://github.com/microsoft/playwright/issues/29709">#29709</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/84780b1b750d343cf6372c5965582f43e75cb8c9"><code>84780b1</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29715">#29715</a>): fix: point to the right cli program export</li> <li>Additional commits viewable in <a href="https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.1">compare view</a></li> </ul> </details> <br /> Updates `@playwright/test` from 1.41.2 to 1.42.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.42.1</h2> <h3>Highlights</h3> <p><a href="https://github.com/microsoft/playwright/issues/29732">microsoft/playwright#29732</a> - [Regression]: HEAD requests to webServer.url since v1.42.0 <a href="https://github.com/microsoft/playwright/issues/29746">microsoft/playwright#29746</a> - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin import <a href="https://github.com/microsoft/playwright/issues/29739">microsoft/playwright#29739</a> - [Bug]: Component tests fails when imported a module with a dot in a name <a href="https://github.com/microsoft/playwright/issues/29731">microsoft/playwright#29731</a> - [Regression]: 1.42.0 breaks some import statements <a href="https://github.com/microsoft/playwright/issues/29760">microsoft/playwright#29760</a> - [Bug]: Possible regression with chained locators in v1.42</p> <h3>Browser Versions</h3> <ul> <li>Chromium 123.0.6312.4</li> <li>Mozilla Firefox 123.0</li> <li>WebKit 17.4</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 122</li> <li>Microsoft Edge 123</li> </ul> <h2>v1.42.0</h2> <h2>New APIs</h2> <ul> <li> <p><strong>Test tags</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New tag syntax</a> for adding tags to the tests (@-tokens in the test title are still supported).</p> <pre lang="js"><code>test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... }); </code></pre> <p>Use <code>--grep</code> command line option to run only tests with certain tags.</p> <pre lang="sh"><code>npx playwright test --grep @fast </code></pre> </li> <li> <p><strong>Annotating skipped tests</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#annotate-tests">New annotation syntax</a> for test annotations allows annotating the tests that do not run.</p> <pre lang="js"><code>test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/playwright/commit/9749f7542676bce2d77f738b5fffcd7b0f46d67c"><code>9749f75</code></a> chore: mark 1.42.1 (<a href="https://github.com/microsoft/playwright/issues/29774">#29774</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/d4ac444f7d5e0a01a27e5c2c023962a38c4bce41"><code>d4ac444</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29770">#29770</a>): docs: improve addLocatorHandler docs</li> <li><a href="https://github.com/microsoft/playwright/commit/a7025956c3d7161c16eb7054646d809249b29020"><code>a702595</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29765">#29765</a>): Revert "chore(role): cache element list by role (<a href="https://github.com/microsoft/playwright/issues/29130">#29130</a>)"</li> <li><a href="https://github.com/microsoft/playwright/commit/b67050638b65156c55798b60a0a75e15fe935d2d"><code>b670506</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29766">#29766</a>): fix(tsload): fix tsconfig inheritance resolution</li> <li><a href="https://github.com/microsoft/playwright/commit/3a4381303ccafdeb599f461d60bd55fa6425f57c"><code>3a43813</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29744">#29744</a>): fix(ct): stop-gap for shared file import</li> <li><a href="https://github.com/microsoft/playwright/commit/d23fb005d4cd171408aee90db3cde733c6179ed3"><code>d23fb00</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29754">#29754</a>): chore: remove pw- binaries from ct</li> <li><a href="https://github.com/microsoft/playwright/commit/56e50a7304b160b89979a239688a691f90bd1f51"><code>56e50a7</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29748">#29748</a>): fix(ct): fix the non-react cli entry points</li> <li><a href="https://github.com/microsoft/playwright/commit/3f6b6419c507ea8db01dcd0dd21284b47cf14fcb"><code>3f6b641</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29738">#29738</a>): fix(HEAD): revert GET->HEAD migration, net-effect was ne...</li> <li><a href="https://github.com/microsoft/playwright/commit/20db86da3e492e6b966e008dab11102bc03937e0"><code>20db86d</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29706">#29706</a>): fit(ct): remove unused type import (<a href="https://github.com/microsoft/playwright/issues/29709">#29709</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/84780b1b750d343cf6372c5965582f43e75cb8c9"><code>84780b1</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29715">#29715</a>): fix: point to the right cli program export</li> <li>Additional commits viewable in <a href="https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.1">compare view</a></li> </ul> </details> <br /> Updates `@types/node` from 20.11.20 to 20.11.24 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li> </ul> </details> <br /> Updates `@vue/compiler-dom` from 3.4.20 to 3.4.21 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/releases"><code>@vue/compiler-dom</code>'s releases</a>.</em></p> <blockquote> <h2>v3.4.21</h2> <p>Please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md"><code>@vue/compiler-dom</code>'s changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/vuejs/core/compare/v3.4.20...v3.4.21">3.4.21</a> (2024-02-28)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>runtime-dom:</strong> avoid unset option's value (<a href="https://github.com/vuejs/core/issues/10416">#10416</a>) (<a href="https://github.com/vuejs/core/commit/b3f8b5a4e700d4c47a146b6040882287d180f6cb">b3f8b5a</a>), closes <a href="https://github.com/vuejs/core/issues/10412">#10412</a> <a href="https://github.com/vuejs/core/issues/10396">#10396</a></li> <li><strong>suspense:</strong> ensure nested suspense patching if in fallback state (<a href="https://github.com/vuejs/core/issues/10417">#10417</a>) (<a href="https://github.com/vuejs/core/commit/7c97778aec1e3513035e5df265e1b8a7801f6106">7c97778</a>), closes <a href="https://github.com/vuejs/core/issues/10415">#10415</a></li> <li><strong>warning:</strong> stringify args in warn handler (<a href="https://github.com/vuejs/core/issues/10414">#10414</a>) (<a href="https://github.com/vuejs/core/commit/bc37258caa2f6f67f4554ab8587aca3798d92124">bc37258</a>), closes <a href="https://github.com/vuejs/core/issues/10409">#10409</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vuejs/core/commit/f66a75ea75c8aece065b61e2126b4c5b2338aa6e"><code>f66a75e</code></a> release: v3.4.21</li> <li>See full diff in <a href="https://github.com/vuejs/core/commits/v3.4.21/packages/compiler-dom">compare view</a></li> </ul> </details> <br /> Updates `eslint-plugin-playwright` from 1.3.1 to 1.5.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/playwright-community/eslint-plugin-playwright/releases">eslint-plugin-playwright's releases</a>.</em></p> <blockquote> <h2>v1.5.1</h2> <h2><a href="https://github.com/playwright-community/eslint-plugin-playwright/compare/v1.5.0...v1.5.1">1.5.1</a> (2024-02-28)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>require-hook:</strong> False positive when using new options argument (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/8a067481d65049c0129d69eb70576eb50767d55b">8a06748</a>)</li> <li><strong>valid-describe-callback:</strong> False positive when using new options argument (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/c25d200c43494b3a1265c173d81a8b6e98794468">c25d200</a>), closes <a href="https://github.com/playwright-community/eslint-plugin-playwright/issues/266">#266</a></li> </ul> <h3>Documentation</h3> <ul> <li>Add missing URLs to rules (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/26998b55eed6deee1895ffafdc954ecbd3dd8c23">26998b5</a>)</li> </ul> <h2>v1.5.0</h2> <h2><a href="https://github.com/playwright-community/eslint-plugin-playwright/compare/v1.4.2...v1.5.0">1.5.0</a> (2024-02-28)</h2> <h3>Features</h3> <ul> <li>Add support for new <a href="https://playwright.dev/docs/test-annotations#tag-tests">test option syntax</a> (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/e7155b64cc015767ca678ffb7a9c91d98ad649f3">e7155b6</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>no-useless-not:</strong> Add support for <code>visible</code> and <code>enabled</code> options (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/e97a62baadf156a4e67ef4de75df3de6b4a78ba6">e97a62b</a>)</li> </ul> <h3>Documentation</h3> <ul> <li><strong>no-standalone-expect:</strong> Improve documentation around best practices (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/95fcfd8f7b65acd0d799da5b43255945c97c37e7">95fcfd8</a>)</li> </ul> <h2>v1.4.2</h2> <h2><a href="https://github.com/playwright-community/eslint-plugin-playwright/compare/v1.4.1...v1.4.2">1.4.2</a> (2024-02-27)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>valid-describe-callback:</strong> False positive with <code>test.describe.configure</code> (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/91988d575916b3c19139ad4df2b9ecdf2abc6909">91988d5</a>)</li> </ul> <h3>Tests</h3> <ul> <li>Add more test cases test configuration (<a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/6bc2576094808490b4140f78578603934c35e6db">6bc2576</a>)</li> </ul> <h2>v1.4.1</h2> <h2><a href="https://github.com/playwright-community/eslint-plugin-playwright/compare/v1.4.0...v1.4.1">1.4.1</a> (2024-02-27)</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/1affb2ee2f2eb012c28b212564b01c00a875649e"><code>1affb2e</code></a> chore: Update example folder</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/26998b55eed6deee1895ffafdc954ecbd3dd8c23"><code>26998b5</code></a> docs: Add missing URLs to rules</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/8a067481d65049c0129d69eb70576eb50767d55b"><code>8a06748</code></a> fix(require-hook): False positive when using new options argument</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/c25d200c43494b3a1265c173d81a8b6e98794468"><code>c25d200</code></a> fix(valid-describe-callback): False positive when using new options argument</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/99f11c70bd0e21fff7b4825fc42c97ce782b7c47"><code>99f11c7</code></a> Merge pull request <a href="https://github.com/playwright-community/eslint-plugin-playwright/issues/265">#265</a> from playwright-community/new-test-syntax-tags</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/e7155b64cc015767ca678ffb7a9c91d98ad649f3"><code>e7155b6</code></a> feat: Add support for new test option syntax</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/d51f04357331d04949e47e80aefffcb0f8bfecee"><code>d51f043</code></a> Merge pull request <a href="https://github.com/playwright-community/eslint-plugin-playwright/issues/264">#264</a> from playwright-community/no-useless-not</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/e97a62baadf156a4e67ef4de75df3de6b4a78ba6"><code>e97a62b</code></a> fix(no-useless-not): Add support for <code>visible</code> and <code>enabled</code> options</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/95fcfd8f7b65acd0d799da5b43255945c97c37e7"><code>95fcfd8</code></a> docs(no-standalone-expect): Improve documentation around best practices</li> <li><a href="https://github.com/playwright-community/eslint-plugin-playwright/commit/0b0baeeacafd0896f4123a43e06fcb6ea96882e7"><code>0b0baee</code></a> chore: Remove references to <code>expect.assertions</code> and <code>expect.hasAssertions</code></li> <li>Additional commits viewable in <a href="https://github.com/playwright-community/eslint-plugin-playwright/compare/v1.3.1...v1.5.1">compare view</a></li> </ul> </details> <br /> Updates `simple-git-hooks` from 2.9.0 to 2.10.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/toplenboren/simple-git-hooks/releases">simple-git-hooks's releases</a>.</em></p> <blockquote> <h2>2.10.0</h2> <h2>What's Changed</h2> <ul> <li>fix: small typo fix in README.md by <a href="https://github.com/samydoesit"><code>@samydoesit</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/93">toplenboren/simple-git-hooks#93</a></li> <li>Update GitHub Action Versions by <a href="https://github.com/bhanuprasadcherukuvada"><code>@bhanuprasadcherukuvada</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/95">toplenboren/simple-git-hooks#95</a></li> <li>Add info in README about yarn version 1 by <a href="https://github.com/EugenGedroyc"><code>@EugenGedroyc</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/98">toplenboren/simple-git-hooks#98</a></li> <li>docs: update husky and simple-git-hooks weight by <a href="https://github.com/rivajunior"><code>@rivajunior</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/100">toplenboren/simple-git-hooks#100</a></li> <li>feat: add env var to bypass hooks execution by <a href="https://github.com/bhanuprasadcherukuvada"><code>@bhanuprasadcherukuvada</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/96">toplenboren/simple-git-hooks#96</a></li> <li>feat: use SIMPLE_GIT_HOOKS_RC to run optional init script by <a href="https://github.com/IlyaSemenov"><code>@IlyaSemenov</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/103">toplenboren/simple-git-hooks#103</a></li> <li>Use codeql v3 by <a href="https://github.com/toplenboren"><code>@toplenboren</code></a> in <a href="https://github.com/toplenboren/simple-git-hooks/pull/104">toplenboren/simple-git-hooks#104</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/samydoesit"><code>@samydoesit</code></a> made their first contribution in <a href="https://github.com/toplenboren/simple-git-hooks/pull/93">toplenboren/simple-git-hooks#93</a></li> <li><a href="https://github.com/bhanuprasadcherukuvada"><code>@bhanuprasadcherukuvada</code></a> made their first contribution in <a href="https://github.com/toplenboren/simple-git-hooks/pull/95">toplenboren/simple-git-hooks#95</a></li> <li><a href="https://github.com/EugenGedroyc"><code>@EugenGedroyc</code></a> made their first contribution in <a href="https://github.com/toplenboren/simple-git-hooks/pull/98">toplenboren/simple-git-hooks#98</a></li> <li><a href="https://github.com/rivajunior"><code>@rivajunior</code></a> made their first contribution in <a href="https://github.com/toplenboren/simple-git-hooks/pull/100">toplenboren/simple-git-hooks#100</a></li> <li><a href="https://github.com/IlyaSemenov"><code>@IlyaSemenov</code></a> made their first contribution in <a href="https://github.com/toplenboren/simple-git-hooks/pull/103">toplenboren/simple-git-hooks#103</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/toplenboren/simple-git-hooks/compare/2.9.0...2.10.0">https://github.com/toplenboren/simple-git-hooks/compare/2.9.0...2.10.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/3cce73e08f679de75c3c133eaec60c7c22b8a7e5"><code>3cce73e</code></a> Update README.md</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/0f5f5f174023e1e076bc6a8f4f51e42de4ded56c"><code>0f5f5f1</code></a> Use codeql v3 (<a href="https://github.com/toplenboren/simple-git-hooks/issues/104">#104</a>)</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/0fde2ac3783f144be0e25a6c545a3dca0558fc85"><code>0fde2ac</code></a> Refactor simple-git-hooks.test.js</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/66cd8a74ced04dce4c8ab013b5d0ff23653688eb"><code>66cd8a7</code></a> Refactor simple-git-hooks.test.js</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/a315a602f274b2141c723487202f3a0ca90337e6"><code>a315a60</code></a> feat: use SIMPLE_GIT_HOOKS_RC to run optional init script (<a href="https://github.com/toplenboren/simple-git-hooks/issues/102">#102</a>)</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/20121df9d1c3662343eb716dc934afc6d98b3030"><code>20121df</code></a> Merge pull request <a href="https://github.com/toplenboren/simple-git-hooks/issues/96">#96</a> from bhanuprasadcherukuvada/bypass-hooks</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/d53a27cc722ab57944d0beda48a01ac79af5c618"><code>d53a27c</code></a> Merge pull request <a href="https://github.com/toplenboren/simple-git-hooks/issues/100">#100</a> from rivajunior/patch-1</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/6631e3504d088686189de0166f0888d86bc2d1e3"><code>6631e35</code></a> docs: update husky and simple-git-hooks weight</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/eb53a4f95cdca98b8a97b2df50d9e1d92a8ff7ae"><code>eb53a4f</code></a> Merge pull request <a href="https://github.com/toplenboren/simple-git-hooks/issues/98">#98</a> from EugenGedroyc/add-readme-yarn1</li> <li><a href="https://github.com/toplenboren/simple-git-hooks/commit/ffef3e27b6c234cea2bba139084c848d1a1e478f"><code>ffef3e2</code></a> Add info in README about yarn version 1</li> <li>Additional commits viewable in <a href="https://github.com/toplenboren/simple-git-hooks/compare/2.9.0...2.10.0">compare view</a></li> </ul> </details> <br /> Updates `vue` from 3.4.20 to 3.4.21 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/releases">vue's releases</a>.</em></p> <blockquote> <h2>v3.4.21</h2> <p>Please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">vue's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/vuejs/core/compare/v3.4.20...v3.4.21">3.4.21</a> (2024-02-28)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>runtime-dom:</strong> avoid unset option's value (<a href="https://github.com/vuejs/core/issues/10416">#10416</a>) (<a href="https://github.com/vuejs/core/commit/b3f8b5a4e700d4c47a146b6040882287d180f6cb">b3f8b5a</a>), closes <a href="https://github.com/vuejs/core/issues/10412">#10412</a> <a href="https://github.com/vuejs/core/issues/10396">#10396</a></li> <li><strong>suspense:</strong> ensure nested suspense patching if in fallback state (<a href="https://github.com/vuejs/core/issues/10417">#10417</a>) (<a href="https://github.com/vuejs/core/commit/7c97778aec1e3513035e5df265e1b8a7801f6106">7c97778</a>), closes <a href="https://github.com/vuejs/core/issues/10415">#10415</a></li> <li><strong>warning:</strong> stringify args in warn handler (<a href="https://github.com/vuejs/core/issues/10414">#10414</a>) (<a href="https://github.com/vuejs/core/commit/bc37258caa2f6f67f4554ab8587aca3798d92124">bc37258</a>), closes <a href="https://github.com/vuejs/core/issues/10409">#10409</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vuejs/core/commit/f66a75ea75c8aece065b61e2126b4c5b2338aa6e"><code>f66a75e</code></a> release: v3.4.21</li> <li><a href="https://github.com/vuejs/core/commit/b3f8b5a4e700d4c47a146b6040882287d180f6cb"><code>b3f8b5a</code></a> fix(runtime-dom): avoid unset option's value (<a href="https://github.com/vuejs/core/issues/10416">#10416</a>)</li> <li><a href="https://github.com/vuejs/core/commit/bc37258caa2f6f67f4554ab8587aca3798d92124"><code>bc37258</code></a> fix(warning): stringify args in warn handler (<a href="https://github.com/vuejs/core/issues/10414">#10414</a>)</li> <li><a href="https://github.com/vuejs/core/commit/7c97778aec1e3513035e5df265e1b8a7801f6106"><code>7c97778</code></a> fix(suspense): ensure nested suspense patching if in fallback state (<a href="https://github.com/vuejs/core/issues/10417">#10417</a>)</li> <li><a href="https://github.com/vuejs/core/commit/1f6a1102aa09960f76a9af2872ef01e7da8538e3"><code>1f6a110</code></a> test: clean snapshot</li> <li>See full diff in <a href="https://github.com/vuejs/core/compare/v3.4.20...v3.4.21">compare view</a></li> </ul> </details> <br /> Updates `vue-i18n` from 9.9.1 to 9.10.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/intlify/vue-i18n-next/releases">vue-i18n's releases</a>.</em></p> <blockquote> <h2>v9.10.1</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>⚡ Improvement Features</h3> <ul> <li>chore(fix): <a href="https://github.com/intlify/vue-i18n-next/tree/HEAD/packages/vue-i18n/issues/1630">#1630</a> make the install function synchronous to be aligned… by <a href="https://github.com/k-paxian"><code>@k-paxian</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1631">intlify/vue-i18n-next#1631</a></li> </ul> <h3>📝️ Documentations</h3> <ul> <li>docs: wrong te docs by <a href="https://github.com/kazupon"><code>@kazupon</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1753">intlify/vue-i18n-next#1753</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/k-paxian"><code>@k-paxian</code></a> made their first contribution in <a href="https://github.com/intlify/vue-i18n-next/pull/1631">intlify/vue-i18n-next#1631</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/intlify/vue-i18n-next/compare/v9.10.0...v9.10.1">https://github.com/intlify/vue-i18n-next/compare/v9.10.0...v9.10.1</a></p> <h2>v9.10.0</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>🌟 Features</h3> <ul> <li>fix: Support for <code>te</code> behavior compatibility before v9.6 by <a href="https://github.com/kazupon"><code>@kazupon</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1751">intlify/vue-i18n-next#1751</a></li> </ul> <h3>📝️ Documentations</h3> <ul> <li>docs: update description of Nuxt I18n and its status by <a href="https://github.com/BobbieGoede"><code>@BobbieGoede</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1739">intlify/vue-i18n-next#1739</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/twolfvb"><code>@twolfvb</code></a> made their first contribution in <a href="https://github.com/intlify/vue-i18n-next/pull/1732">intlify/vue-i18n-next#1732</a></li> <li><a href="https://github.com/ismailarilik"><code>@ismailarilik</code></a> made their first contribution in <a href="https://github.com/intlify/vue-i18n-next/pull/1722">intlify/vue-i18n-next#1722</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/intlify/vue-i18n-next/compare/v9.9.1...v9.10.0">https://github.com/intlify/vue-i18n-next/compare/v9.9.1...v9.10.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/intlify/vue-i18n-next/blob/master/CHANGELOG.md">vue-i18n's changelog</a>.</em></p> <blockquote> <h1>v9.10.1 (2024-03-01T01:26:17Z)</h1> <p>This changelog is generated by <a href="https://github.com/intlify/vue-i18n-next/releases/tag/v9.10.1">GitHub Releases</a></p> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>⚡ Improvement Features</h3> <ul> <li>chore(fix): <a href="https://github.com/intlify/vue-i18n-next/tree/HEAD/packages/vue-i18n/issues/1630">#1630</a> make the install function synchronous to be aligned… by <a href="https://github.com/k-paxian"><code>@k-paxian</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1631">intlify/vue-i18n-next#1631</a></li> </ul> <h3>📝️ Documentations</h3> <ul> <li>docs: wrong te docs by <a href="https://github.com/kazupon"><code>@kazupon</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1753">intlify/vue-i18n-next#1753</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/k-paxian"><code>@k-paxian</code></a> made their first contribution in <a href="https://github.com/intlify/vue-i18n-next/pull/1631">intlify/vue-i18n-next#1631</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/intlify/vue-i18n-next/compare/v9.10.0...v9.10.1">https://github.com/intlify/vue-i18n-next/compare/v9.10.0...v9.10.1</a></p> <h1>v9.10.0 (2024-03-01T00:50:42Z)</h1> <p>This changelog is generated by <a href="https://github.com/intlify/vue-i18n-next/releases/tag/v9.10.0">GitHub Releases</a></p> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>🌟 Features</h3> <ul> <li>fix: Support for <code>te</code> behavior compatibility before v9.6 by <a href="https://github.com/kazupon"><code>@kazupon</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1751">intlify/vue-i18n-next#1751</a></li> </ul> <h3>📝️ Documentations</h3> <ul> <li>docs: update description of Nuxt I18n and its status by <a href="https://github.com/BobbieGoede"><code>@BobbieGoede</code></a> in <a href="https://github.com/intlify/vue-i18n-next/pull/1739">intlify/vue-i18n-next#1739</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/twolfvb"><code>@twolfvb</code></a> made their first contribution in <a href="https://github.com/intlify/vue-i18n-next/pull/1732">intlify/vue-i18n-next#1732</a></li> <li><a href="https://github.com/ismailarilik"><code>@ismailarilik</code></a> made their first contribution in <a href="https://github.com/intlify/vue-i18n-next/pull/1722">intlify/vue-i18n-next#1722</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/intlify/vue-i18n-next/compare/v9.9.1...v9.10.0">https://github.com/intlify/vue-i18n-next/compare/v9.9.1...v9.10.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/intlify/vue-i18n-next/commit/6879f9af9fbfe0142b748079bbd28a1cfb7e331a"><code>6879f9a</code></a> release: v9.10.1</li> <li><a href="https://github.com/intlify/vue-i18n-next/commit/93b290d83f209179a179f2232ab2a34fab415cb9"><code>93b290d</code></a> docs: wrong te docs (<a href="https://github.com/intlify/vue-i18n-next/tree/HEAD/packages/vue-i18n/issues/1753">#1753</a>)</li> <li><a href="https://github.com/intlify/vue-i18n-next/commit/9d0fb46fa35fadbf4983a3fa291c961a2478fada"><code>9d0fb46</code></a> release: v9.10.0</li> <li><a href="https://github.com/intlify/vue-i18n-next/commit/7d28dd242051564e47c227c3a869732115d253e2"><code>7d28dd2</code></a> fix: Support for <code>te</code> behavior compatibility before v9.6 (<a href="https://github.com/intlify/vue-i18n-next/tree/HEAD/packages/vue-i18n/issues/1751">#1751</a>)</li> <li><a href="https://github.com/intlify/vue-i18n-next/commit/52ee105494c9b64fa4f781a4b881bb3b7eb3acd4"><code>52ee105</code></a> docs: add return explanation for <code>te</code> (<a href="https://github.com/intlify/vue-i18n-next/tree/HEAD/packages/vue-i18n/issues/1738">#1738</a>)</li> <li>See full diff in <a href="https://github.com/intlify/vue-i18n-next/commits/v9.10.1/packages/vue-i18n">compare view</a></li> </ul> </details> <br /> Updates `@types/eslint` from 8.56.3 to 8.56.5 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/eslint">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lars Rickert <lars.rickert@mail.schwarz> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: larsrickert <67898185+larsrickert@users.noreply.github.com>
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.41.2 to 1.42.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.42.1</h2> <h3>Highlights</h3> <p><a href="https://github.com/microsoft/playwright/issues/29732">microsoft/playwright#29732</a> - [Regression]: HEAD requests to webServer.url since v1.42.0 <a href="https://github.com/microsoft/playwright/issues/29746">microsoft/playwright#29746</a> - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin import <a href="https://github.com/microsoft/playwright/issues/29739">microsoft/playwright#29739</a> - [Bug]: Component tests fails when imported a module with a dot in a name <a href="https://github.com/microsoft/playwright/issues/29731">microsoft/playwright#29731</a> - [Regression]: 1.42.0 breaks some import statements <a href="https://github.com/microsoft/playwright/issues/29760">microsoft/playwright#29760</a> - [Bug]: Possible regression with chained locators in v1.42</p> <h3>Browser Versions</h3> <ul> <li>Chromium 123.0.6312.4</li> <li>Mozilla Firefox 123.0</li> <li>WebKit 17.4</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 122</li> <li>Microsoft Edge 123</li> </ul> <h2>v1.42.0</h2> <h2>New APIs</h2> <ul> <li> <p><strong>Test tags</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New tag syntax</a> for adding tags to the tests (@-tokens in the test title are still supported).</p> <pre lang="js"><code>test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... }); </code></pre> <p>Use <code>--grep</code> command line option to run only tests with certain tags.</p> <pre lang="sh"><code>npx playwright test --grep @fast </code></pre> </li> <li> <p><strong>Annotating skipped tests</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#annotate-tests">New annotation syntax</a> for test annotations allows annotating the tests that do not run.</p> <pre lang="js"><code>test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/playwright/commit/9749f7542676bce2d77f738b5fffcd7b0f46d67c"><code>9749f75</code></a> chore: mark 1.42.1 (<a href="https://github.com/microsoft/playwright/issues/29774">#29774</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/d4ac444f7d5e0a01a27e5c2c023962a38c4bce41"><code>d4ac444</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29770">#29770</a>): docs: improve addLocatorHandler docs</li> <li><a href="https://github.com/microsoft/playwright/commit/a7025956c3d7161c16eb7054646d809249b29020"><code>a702595</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29765">#29765</a>): Revert "chore(role): cache element list by role (<a href="https://github.com/microsoft/playwright/issues/29130">#29130</a>)"</li> <li><a href="https://github.com/microsoft/playwright/commit/b67050638b65156c55798b60a0a75e15fe935d2d"><code>b670506</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29766">#29766</a>): fix(tsload): fix tsconfig inheritance resolution</li> <li><a href="https://github.com/microsoft/playwright/commit/3a4381303ccafdeb599f461d60bd55fa6425f57c"><code>3a43813</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29744">#29744</a>): fix(ct): stop-gap for shared file import</li> <li><a href="https://github.com/microsoft/playwright/commit/d23fb005d4cd171408aee90db3cde733c6179ed3"><code>d23fb00</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29754">#29754</a>): chore: remove pw- binaries from ct</li> <li><a href="https://github.com/microsoft/playwright/commit/56e50a7304b160b89979a239688a691f90bd1f51"><code>56e50a7</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29748">#29748</a>): fix(ct): fix the non-react cli entry points</li> <li><a href="https://github.com/microsoft/playwright/commit/3f6b6419c507ea8db01dcd0dd21284b47cf14fcb"><code>3f6b641</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29738">#29738</a>): fix(HEAD): revert GET->HEAD migration, net-effect was ne...</li> <li><a href="https://github.com/microsoft/playwright/commit/20db86da3e492e6b966e008dab11102bc03937e0"><code>20db86d</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29706">#29706</a>): fit(ct): remove unused type import (<a href="https://github.com/microsoft/playwright/issues/29709">#29709</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/84780b1b750d343cf6372c5965582f43e75cb8c9"><code>84780b1</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29715">#29715</a>): fix: point to the right cli program export</li> <li>Additional commits viewable in <a href="https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.41.2&new-version=1.42.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
[![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](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.40.1` -> `1.42.1`](https://renovatebot.com/diffs/npm/playwright/1.40.1/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.40.1/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.40.1/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (playwright)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 5am every weekday" in timezone Europe/Berlin, Automerge - "after 10pm every weekday,before 5am every weekday" in timezone Europe/Berlin. 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Never, 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://developer.mend.io/github/solid-design-system/solid). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjcuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: ionitron <hi@ionicframework.com> Co-authored-by: Maria Hutt <maria@ionic.io>
…-player-7 (#5659) Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.41.1 to 1.42.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.42.0</h2> <h2>New APIs</h2> <ul> <li> <p><strong>Test tags</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New tag syntax</a> for adding tags to the tests (@-tokens in the test title are still supported).</p> <pre lang="js"><code>test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... }); </code></pre> <p>Use <code>--grep</code> command line option to run only tests with certain tags.</p> <pre lang="sh"><code>npx playwright test --grep @fast </code></pre> </li> <li> <p><strong>Annotating skipped tests</strong></p> <p><a href="https://playwright.dev/docs/test-annotations#annotate-tests">New annotation syntax</a> for test annotations allows annotating the tests that do not run.</p> <pre lang="js"><code>test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); </code></pre> </li> <li> <p><strong>page.addLocatorHandler()</strong></p> <p>New method <a href="https://playwright.dev/docs/api/class-page#page-add-locator-handler">page.addLocatorHandler()</a> registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears.</p> <pre lang="js"><code>// Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); </code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/playwright/commit/e7f0635c17ac5c178b0960cb35f849edd3cf69ef"><code>e7f0635</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29692">#29692</a>): docs: better addLocatorHandler example in release notes ...</li> <li><a href="https://github.com/microsoft/playwright/commit/8709a3a24b22304a2be67ac5688a998e71a32c5e"><code>8709a3a</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29687">#29687</a>): chore: fix docs roll for functions without args follow-u...</li> <li><a href="https://github.com/microsoft/playwright/commit/aa9f6fb71872b8bf066209ff229a0fe9c43fe91e"><code>aa9f6fb</code></a> cherry-pick(<a href="https://github.com/microsoft/playwright/issues/29669">#29669</a>): chore: strengthen linting (<a href="https://github.com/microsoft/playwright/issues/29674">#29674</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/f5899c155647da3c358b5a1e152b619518fb55e2"><code>f5899c1</code></a> chore: set version to 1.42.0 (<a href="https://github.com/microsoft/playwright/issues/29671">#29671</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/77e1b025521912c4930f5dcac9a7ee492e0c3549"><code>77e1b02</code></a> docs: 1.42 release notes (<a href="https://github.com/microsoft/playwright/issues/29666">#29666</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/c1421bc9f2be2388b0b3d5fd5c601977689fa897"><code>c1421bc</code></a> docs: typescript compiler invocation before tests (<a href="https://github.com/microsoft/playwright/issues/29667">#29667</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/bd8d04443350212b95451f800d75148712bb99f9"><code>bd8d044</code></a> feat(uimode) uses relative paths to establish websocket connection (<a href="https://github.com/microsoft/playwright/issues/29617">#29617</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/56028269bb9364f5870daa7f054dad5bb401135e"><code>5602826</code></a> devops: add a hint how to create a repro (<a href="https://github.com/microsoft/playwright/issues/29665">#29665</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/015a1bcc1c0bdcc17409266ccc448b2def320914"><code>015a1bc</code></a> feat(ct): double unmounting component throws error (<a href="https://github.com/microsoft/playwright/issues/29650">#29650</a>)</li> <li><a href="https://github.com/microsoft/playwright/commit/303d7fdac9971312d7314a151c7e33329b06b660"><code>303d7fd</code></a> chore(ct): vue resolve internal type errors (<a href="https://github.com/microsoft/playwright/issues/29649">#29649</a>)</li> <li>Additional commits viewable in <a href="https://github.com/microsoft/playwright/compare/v1.41.1...v1.42.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.41.1&new-version=1.42.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
[![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-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/playwright-core/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (playwright-core)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </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://developer.mend.io/github/likec4/likec4). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2MS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.41.2` -> `1.42.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.2/1.42.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.2/1.42.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 </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 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://developer.mend.io/github/redwoodjs/redwood). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: David Price <thedavid@thedavidprice.com>
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.43.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.42.1` -> `1.43.0`](https://renovatebot.com/diffs/npm/playwright-chromium/1.42.1/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.42.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.42.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.42.1` -> `1.43.0`](https://renovatebot.com/diffs/npm/playwright-core/1.42.1/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.42.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.42.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.39.0` -> `1.43.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.39.0/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.39.0/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.39.0/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 10pm every weekday,before 6am every weekday" (UTC), 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://developer.mend.io/github/camunda/zeebe). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
[![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://github.com/microsoft/playwright)) | [`1.39.0` -> `1.43.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.39.0/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.39.0/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.39.0/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 10pm every weekday,before 6am every weekday" (UTC), 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://developer.mend.io/github/camunda/zeebe). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
#17016) [![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://github.com/microsoft/playwright)) | [`1.39.0` -> `1.43.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.39.0/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.39.0/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.39.0/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 10pm every weekday,before 6am every weekday" (UTC), 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://developer.mend.io/github/camunda/zeebe). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
) [![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://github.com/microsoft/playwright)) | [`1.37.1` -> `1.43.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.37.1/1.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.37.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.37.1/1.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 </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 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://developer.mend.io/github/UltiXstorm/Next-App-Template). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.43.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.43.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.43.0` -> `1.43.1`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.43.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.43.0` -> `1.43.1`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.43.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.43.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.44.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.44.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.43.1` -> `1.44.0`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.44.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.43.1` -> `1.44.0`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.44.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.44.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.44.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.44.0` -> `1.44.1`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.44.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.44.0` -> `1.44.1`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.44.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.45.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.44.1` -> `1.45.0`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.44.1` -> `1.45.0`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.45.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.45.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.0` -> `1.45.1`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.45.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.0` -> `1.45.1`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.45.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.45.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.45.2`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.45.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.1` -> `1.45.2`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.45.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.1` -> `1.45.2`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.45.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.45.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.45.2`](https://github.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.1...v1.45.2) ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] 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/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.45.3`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.45.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.2` -> `1.45.3`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.45.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.2` -> `1.45.3`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.45.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.45.3`](https://github.com/microsoft/playwright/compare/v1.45.2...0e130fa8edaf85765c4a5a86bded0e6d33bfd7c2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.2...v1.45.3) ### [`v1.45.2`](https://github.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.1...v1.45.2) ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.46.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.46.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.3` -> `1.46.0`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.46.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.45.3` -> `1.46.0`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.46.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.46.0`](https://github.com/microsoft/playwright/compare/v1.45.3...99a36310570617222290c09b96a2026beb8b00f9) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.3...v1.46.0) ### [`v1.45.3`](https://github.com/microsoft/playwright/compare/v1.45.2...0e130fa8edaf85765c4a5a86bded0e6d33bfd7c2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.2...v1.45.3) ### [`v1.45.2`](https://github.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.1...v1.45.2) ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
[![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://github.com/microsoft/playwright)) | [`1.35.1` -> `1.46.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.46.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.46.0` -> `1.46.1`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.46.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.46.0` -> `1.46.1`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.46.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.46.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.46.1`](https://github.com/microsoft/playwright/compare/v1.46.0...e1c861cfa7a6caf3c5b798786b1e6298c4f3cf31) [Compare Source](https://github.com/microsoft/playwright/compare/v1.46.0...v1.46.1) ### [`v1.46.0`](https://github.com/microsoft/playwright/compare/v1.45.3...99a36310570617222290c09b96a2026beb8b00f9) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.3...v1.46.0) ### [`v1.45.3`](https://github.com/microsoft/playwright/compare/v1.45.2...0e130fa8edaf85765c4a5a86bded0e6d33bfd7c2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.2...v1.45.3) ### [`v1.45.2`](https://github.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.1...v1.45.2) ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.35.1` -> `1.47.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.47.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.46.1` -> `1.47.0`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.47.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.46.1` -> `1.47.0`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.47.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.47.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.47.0`](https://github.com/microsoft/playwright/compare/v1.46.1...d5943def35edadc6f9bd8daeed382559d2a55fbe) [Compare Source](https://github.com/microsoft/playwright/compare/v1.46.1...v1.47.0) ### [`v1.46.1`](https://github.com/microsoft/playwright/compare/v1.46.0...e1c861cfa7a6caf3c5b798786b1e6298c4f3cf31) [Compare Source](https://github.com/microsoft/playwright/compare/v1.46.0...v1.46.1) ### [`v1.46.0`](https://github.com/microsoft/playwright/compare/v1.45.3...99a36310570617222290c09b96a2026beb8b00f9) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.3...v1.46.0) ### [`v1.45.3`](https://github.com/microsoft/playwright/compare/v1.45.2...0e130fa8edaf85765c4a5a86bded0e6d33bfd7c2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.2...v1.45.3) ### [`v1.45.2`](https://github.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.1...v1.45.2) ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.35.1` -> `1.47.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.35.1/1.47.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.35.1/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.35.1/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-chromium](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.47.0` -> `1.47.1`](https://renovatebot.com/diffs/npm/playwright-chromium/1.43.0/1.47.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-chromium/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-chromium/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-chromium/1.43.0/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-chromium/1.43.0/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [playwright-core](https://playwright.dev) ([source](https://github.com/microsoft/playwright)) | [`1.47.0` -> `1.47.1`](https://renovatebot.com/diffs/npm/playwright-core/1.43.0/1.47.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright-core/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright-core/1.43.0/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.43.0/1.47.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.47.1`](https://github.com/microsoft/playwright/compare/v1.47.0...3d2ffd0fe97f23f480092054da5928539a3c5beb) [Compare Source](https://github.com/microsoft/playwright/compare/v1.47.0...v1.47.1) ### [`v1.47.0`](https://github.com/microsoft/playwright/compare/v1.46.1...d5943def35edadc6f9bd8daeed382559d2a55fbe) [Compare Source](https://github.com/microsoft/playwright/compare/v1.46.1...v1.47.0) ### [`v1.46.1`](https://github.com/microsoft/playwright/compare/v1.46.0...e1c861cfa7a6caf3c5b798786b1e6298c4f3cf31) [Compare Source](https://github.com/microsoft/playwright/compare/v1.46.0...v1.46.1) ### [`v1.46.0`](https://github.com/microsoft/playwright/compare/v1.45.3...99a36310570617222290c09b96a2026beb8b00f9) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.3...v1.46.0) ### [`v1.45.3`](https://github.com/microsoft/playwright/compare/v1.45.2...0e130fa8edaf85765c4a5a86bded0e6d33bfd7c2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.2...v1.45.3) ### [`v1.45.2`](https://github.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.1...v1.45.2) ### [`v1.45.1`](https://github.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947) [Compare Source](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) ### [`v1.45.0`](https://github.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) ### [`v1.44.1`](https://github.com/microsoft/playwright/releases/tag/v1.44.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.44.0...v1.44.1) ##### Highlights [microsoft/playwright#30779 - \[REGRESSION]: When using `video: 'on'` with VSCode extension the browser got closed [microsoft/playwright#30755 - \[REGRESSION]: Electron launch with spaces inside executablePath didn't work[microsoft/playwright#30770 - \[REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't wor[microsoft/playwright#30858 - \[REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.44.0`](https://github.com/microsoft/playwright/releases/tag/v1.44.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.1...v1.44.0) #### New APIs **Accessibility assertions** - [expect(locator).toHaveAccessibleName()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); ``` - [expect(locator).toHaveAccessibleDescription()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```js const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); ``` - [expect(locator).toHaveRole()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```js const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button'); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `noWaitAfter` option. - You can use new `times` option in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```js const locator = page.getByText('This interstitial covers the button'); await page.addLocatorHandler(locator, async overlay => { await overlay.locator('#close').click(); }, { times: 3, noWaitAfter: true }); // Run your tests that can be interrupted by the overlay. // ... await page.removeLocatorHandler(locator); ``` **Miscellaneous options** - [`multipart`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-multipart) option in `apiRequestContext.fetch()` now accepts [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and supports repeating fields with the same name. ```js const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); ``` - `expect(callback).toPass({ intervals })` can now be configured by `expect.toPass.inervals` option globally in [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or per project in [testProject.expect](https://playwright.dev/docs/api/class-testproject#test-project-expect). - `expect(page).toHaveURL(url)` now supports `ignoreCase` [option](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). - [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots) allows to configure per project whether to skip screenshot expectations. **Reporter API** - New method [suite.entries()](https://playwright.dev/docs/api/class-suite#suite-entries) returns child test suites and test cases in their declaration order. [suite.type](https://playwright.dev/docs/api/class-suite#suite-type) and [testCase.type](https://playwright.dev/docs/api/class-testcase#test-case-type) can be used to tell apart test cases and suites in the list. - [Blob](https://playwright.dev/docs/test-reporters#blob-reporter) reporter now allows overriding report file path with a single option `outputFile`. The same option can also be specified as `PLAYWRIGHT_BLOB_OUTPUT_FILE` environment variable that might be more convenient on CI/CD. - [JUnit](https://playwright.dev/docs/test-reporters#junit-reporter) reporter now supports `includeProjectInTestName` option. **Command line** - `--last-failed` CLI option for running only tests that failed in the previous run. First run all tests: ```sh $ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s) ``` Now fix the failing tests and run Playwright again with `--last-failed` option: ```sh $ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s) ``` #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.1`](https://github.com/microsoft/playwright/releases/tag/v1.43.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.43.0...v1.43.1) ##### Highlights [microsoft/playwright#30300 - \[REGRESSION]: UI mode restarts if keep storage state[microsoft/playwright#30339 - \[REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode ##### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.43.0`](https://github.com/microsoft/playwright/releases/tag/v1.43.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.1...v1.43.0) #### New APIs - Method [browserContext.clearCookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```js // Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); ``` - New mode `retain-on-first-failure` for [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace). In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed. ```js title=playwright.config.ts import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); ``` - New property [testInfo.tags](https://playwright.dev/docs/api/class-testinfo#test-info-tags) exposes test tags during test execution. ```js test('example', async ({ page }) => { console.log(test.info().tags); }); ``` - New method [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) converts a `Locator` object to a `FrameLocator`. This can be useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame. ```js const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); ``` - New method [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner) converts a `FrameLocator` object to a `Locator`. This can be useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element. ```js const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible(); ``` #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/9881434/61ca7cfc-eb7a-4305-8b62-b6c9f098f300) - See tags in the test list. - Filter by tags by typing `@fast` or clicking on the tag itself. - New shortcuts: - <kbd>F5</kbd> to run tests. - <kbd>Shift</kbd> <kbd>F5</kbd> to stop running tests. - <kbd>Ctrl</kbd> <kbd>\`</kbd> to toggle test output. #### Browser Versions - Chromium 124.0.6367.29 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.1`](https://github.com/microsoft/playwright/releases/tag/v1.42.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.42.0...v1.42.1) ##### Highlights [microsoft/playwright#29732 - \[Regression]: HEAD requests to webServer.url since v1.42.0[microsoft/playwright#29746 - \[Regression]: Playwright CT CLI scripts fail due to broken initializePlugin impor[microsoft/playwright#29739 - \[Bug]: Component tests fails when imported a module with a dot in a na[microsoft/playwright#29731 - \[Regression]: 1.42.0 breaks some import stateme[microsoft/playwright#29760 - \[Bug]: Possible regression with chained locators in v1.42 ##### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.42.0`](https://github.com/microsoft/playwright/releases/tag/v1.42.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0) #### New APIs - **Test tags** [New tag syntax](https://playwright.dev/docs/test-annotations#tag-tests) for adding tags to the tests (@​-tokens in the test title are still supported). ```js test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... }); ``` Use `--grep` command line option to run only tests with certain tags. ```sh npx playwright test --grep @​fast ``` - **Annotating skipped tests** [New annotation syntax](https://playwright.dev/docs/test-annotations#annotate-tests) for test annotations allows annotating the tests that do not run. ```js test('test full report', { annotation: [ { type: 'issue', description: 'microsoft/playwright#23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); ``` - **page.addLocatorHandler()** New method [page.addLocatorHandler()](https://playwright.dev/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```js // Setup the handler. await page.addLocatorHandler( page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }), async () => { await page.getByRole('button', { name: 'Accept all' }).click(); }); // Write the test as usual. await page.goto('https://www.ikea.com/'); await page.getByRole('link', { name: 'Collection of blue and white' }).click(); await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible(); ``` - **Project wildcard filter** Playwright command line [flag](https://playwright.dev/docs/test-cli#reference) now supports '\*' wildcard when filtering by project. ```sh npx playwright test --project='*mobile*' ``` - **Other APIs** - expect(callback).toPass({ timeout }) The timeout can now be configured by `expect.toPass.timeout` option [globally](https://playwright.dev/docs/api/class-testconfig#test-config-expect) or in [project config](https://playwright.dev/docs/api/class-testproject#test-project-expect) - electronApplication.on('console') [electronApplication.on('console')](https://playwright.dev/docs/api/class-electronapplication#electron-application-event-console) event is emitted when Electron main process calls console API methods. ```js electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); ``` - [page.pdf()](https://playwright.dev/docs/api/class-page#page-pdf) accepts two new options [`tagged`](https://playwright.dev/docs/api/class-page#page-pdf-option-tagged) and [`outline`](https://playwright.dev/docs/api/class-page#page-pdf-option-outline). #### Breaking changes Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard. ```js const test = baseTest.extend({ item: async ({}, use) => {} }); baseTest.describe('Admin user', () => { test('1', async ({ page, item }) => {}); test('2', async ({ page, item }) => {}); }); ``` #### Announcements -⚠️ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123 ### [`v1.41.2`](https://github.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [microsoft/playwright#29123 - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.1`](https://github.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [microsoft/playwright#29067 - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[microsoft/playwright#29028 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[microsoft/playwright#29027 - \[REGRESSION] React component tests not passing Date prop valu[microsoft/playwright#29023 - \[REGRESSION] React component tests not rendering children p[microsoft/playwright#29019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://github.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.40.1`](https://github.com/microsoft/playwright/releases/tag/v1.40.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.40.0...v1.40.1) ##### Highlights [microsoft/playwright#28319 - \[REGRESSION]: Version 1.40.0 Produces corrupted traces[microsoft/playwright#28371 - \[BUG] The color of the 'ok' text did not change to green in the vs code test results sectio[microsoft/playwright#28321 - \[BUG] Ambiguous test outcome and status for serial mo[microsoft/playwright#28362 - \[BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 charact[microsoft/playwright#28239 - fix: collect all errors in removeFolders ##### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.40.0`](https://github.com/microsoft/playwright/releases/tag/v1.40.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.39.0...v1.40.0) #### Test Generator Update ![Playwright Test Generator](https://github.com/microsoft/playwright/assets/9881434/e8d67e2e-f36d-4301-8631-023948d3e190) New tools to generate assertions: - "Assert visibility" tool generates [expect(locator).toBeVisible()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible). - "Assert value" tool generates [expect(locator).toHaveValue(value)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value). - "Assert text" tool generates [expect(locator).toContainText(text)](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-contain-text). Here is an example of a generated test with assertions: ```js import { test, expect } from '@​playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation'); await expect(page.getByLabel('Search')).toBeVisible(); await page.getByLabel('Search').click(); await page.getByPlaceholder('Search docs').fill('locator'); await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator'); }); ``` #### New APIs - Option `reason` in [page.close()](https://playwright.dev/docs/api/class-page#page-close), [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) and [browser.close()](https://playwright.dev/docs/api/class-browser#browser-close). Close reason is reported for all operations interrupted by the closure. - Option `firefoxUserPrefs` in [browserType.launchPersistentContext(userDataDir)](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context). #### Other Changes - Methods [download.path()](https://playwright.dev/docs/api/class-download#download-path) and [download.createReadStream()](https://playwright.dev/docs/api/class-download#download-create-read-stream) throw an error for failed and cancelled downloads. - Playwright [docker image](https://playwright.dev/docs/docker) now comes with Node.js v20. #### Browser Versions - Chromium 120.0.6099.28 - Mozilla Firefox 119.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 119 - Microsoft Edge 119 ### [`v1.39.0`](https://github.com/microsoft/playwright/releases/tag/v1.39.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0) #### Add custom matchers to your expect You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object. ```js import { expect as baseExpect } from '@​playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); }); ``` See the documentation [for a full example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend). #### Merge test fixtures You can now merge test fixtures from multiple files or modules: ```js import { mergeTests } from '@​playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); ``` ```js import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. }); ``` #### Merge custom expect matchers You can now merge custom expect matchers from multiple files or modules: ```js import { mergeTests, mergeExpects } from '@​playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect); ``` ```js import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); }); ``` #### Hide implementation details: box test steps You can mark a [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as "boxed" so that errors inside it point to the step call site. ```js async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. } ``` ```txt Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | }); ``` See [`test.step()`](https://playwright.dev/docs/api/class-test#test-step) documentation for a full example. #### New APIs - [`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2) #### Browser Versions - Chromium 119.0.6045.9 - Mozilla Firefox 118.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 118 - Microsoft Edge 118 ### [`v1.38.1`](https://github.com/microsoft/playwright/releases/tag/v1.38.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.38.0...v1.38.1) ##### Highlights [microsoft/playwright#27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 [microsoft/playwright#27072 - \[BUG] PWT trace viewer fails to load trace and throws TypeError[microsoft/playwright#27073 - \[BUG] RangeError: Invalid time valu[microsoft/playwright#27087 - \[REGRESSION]: npx playwright test --list prints all tests twi[microsoft/playwright#27113 - \[REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pa[microsoft/playwright#27144 - \[BUG]can not display t[microsoft/playwright#27163 - \[REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode[microsoft/playwright#27181 - \[BUG] evaluate serializing fails at 1.38 ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 ### [`v1.38.0`](https://github.com/microsoft/playwright/releases/tag/v1.38.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.1...v1.38.0) #### UI Mode Updates ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369) 1. Zoom into time range. 2. Network panel redesign. #### New APIs - [`browserContext.on('weberror')`][browserContext.on('weberror')] - [`locator.pressSequentially()`][locator.pressSequentially()] - The [`reporter.onEnd()`][reporter.onEnd()] now reports `startTime` and total run `duration`. #### Deprecations - The following methods were deprecated: [`page.type()`][page.type()], [`frame.type()`][frame.type()], [`locator.type()`][locator.type()] and [`elementHandle.type()`][elementHandle.type()]. Please use [`locator.fill()`][locator.fill()] instead which is much faster. Use [`locator.pressSequentially()`][locator.pressSequentially()] only if there is a special keyboard handling on the page, and you need to press keys one-by-one. #### Breaking Changes: Playwright no longer downloads browsers automatically > \[!NOTE] > If you are using `@playwright/test` package, this change **does not** affect you. Playwright recommends to use `@playwright/test` package and download browsers via `npx playwright install` command. If you are following this recommendation, nothing has changed for you. However, up to v1.38, installing the `playwright` package instead of `@playwright/test` did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via `npx playwright install` command. **v1.37 and earlier** `playwright` package was downloading browsers during `npm install`, while `@playwright/test` was not. **v1.38 and later** `playwright` and `@playwright/test` packages do not download browsers during `npm install`. **Recommended migration** Run `npx playwright install` to download browsers after `npm install`. For example, in your CI configuration: ```yml - run: npm ci - run: npx playwright install --with-deps ``` **Alternative migration option - not recommended** Add `@playwright/browser-chromium`, `@playwright/browser-firefox` and `@playwright/browser-webkit` as a dependency. These packages download respective browsers during `npm install`. Make sure you keep the version of all playwright packages in sync: ```json5 // package.json { "devDependencies": { "playwright": "1.38.0", "@​playwright/browser-chromium": "1.38.0", "@​playwright/browser-firefox": "1.38.0", "@​playwright/browser-webkit": "1.38.0" } } ``` ##### Browser Versions - Chromium 117.0.5938.62 - Mozilla Firefox 117.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 116 - Microsoft Edge 116 [`browserContext.on('weberror')`]: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error [`locator.pressSequentially()`]: https://playwright.dev/docs/api/class-locator#locator-press-sequentially [`reporter.onEnd()`]: https://playwright.dev/docs/api/class-reporter#reporter-on-end [`page.type()`]: https://playwright.dev/docs/api/class-page#page-type [`frame.type()`]: https://playwright.dev/docs/api/class-frame#frame-type [`locator.type()`]: https://playwright.dev/docs/api/class-locator#locator-type [`elementHandle.type()`]: https://playwright.dev/docs/api/class-elementhandle#element-handle-type [`locator.fill()`]: https://playwright.dev/docs/api/class-locator#locator-fill [`expect(value).toMatchSnapshot()`]: https://playwright.dev/docs/api/class-snapshotassertions#snapshot-assertions-to-match-snapshot-1 [`expect(page).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 [`expect(locator).toHaveScreenshot()`]: https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 ### [`v1.37.1`](https://github.com/microsoft/playwright/releases/tag/v1.37.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.37.0...v1.37.1) ##### Highlights [microsoft/playwright#26496 - \[REGRESSION] webServer stdout is always getting printed[microsoft/playwright#26492 - \[REGRESSION] test.only with project dependency is not working #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.37.0`](https://github.com/microsoft/playwright/releases/tag/v1.37.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.2...v1.37.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> #### ✨ New tool to merge reports If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report) using the new `merge-reports` CLI tool. Using `merge-reports` tool requires the following steps: 1. Adding a new "blob" reporter to the config when running on CI: ```js title="playwright.config.ts" export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', }); ``` The "blob" reporter will produce ".zip" files that contain all the information about the test run. 2. Copying all "blob" reports in a single shared location and running `npx playwright merge-reports`: ```bash npx playwright merge-reports --reporter html ./all-blob-reports ``` Read more in [our documentation](https://playwright.dev/docs/test-sharding). #### 📚 Debian 12 Bookworm Support Playwright now supports Debian 12 Bookworm on both x86\_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | #### 🌈 UI Mode Updates - UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list. - Console logs from the test are now displayed in the Console tab. #### Browser Versions - Chromium 116.0.5845.82 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 115 - Microsoft Edge 115 ### [`v1.36.2`](https://github.com/microsoft/playwright/releases/tag/v1.36.2): 1.36.2 [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.1...v1.36.2) ##### Highlights [microsoft/playwright#24316 - \[REGRESSION] Character classes are not working in globs in 1.36 ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.1`](https://github.com/microsoft/playwright/releases/tag/v1.36.1) [Compare Source](https://github.com/microsoft/playwright/compare/v1.36.0...v1.36.1) ##### Highlights [microsoft/playwright#24184 - \[REGRESSION]: Snapshot name contains some random string after test name when tests are run in container ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 ### [`v1.36.0`](https://github.com/microsoft/playwright/releases/tag/v1.36.0) [Compare Source](https://github.com/microsoft/playwright/compare/v1.35.1...v1.36.0) <a href="https://youtu.be/cEd4SH_Xf5U"><img src="https://github.com/microsoft/playwright/assets/746130/3a3cc6c3-b0f8-4a31-b1a3-a85bf5d93ac5" width=340></a> <a href="https://youtu.be/cEd4SH_Xf5U">Watch the overview: Playwright 1.36 & 1.37</a> ##### Highlights 🏝️ Summer maintenance release. ##### Browser Versions - Chromium 115.0.5790.75 - Mozilla Firefox 115.0 - WebKit 17.0 This version was also tested against the following stable channels: - Google Chrome 114 - Microsoft Edge 114 </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. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
Currently adding tags is only possible by inserting them into test title, e.g.:
It may have some downsides for reporting when you get very long titles, see #17375
Suggestion is to introduce
test.tags()
method that will add tags to current test without altering the title:The text was updated successfully, but these errors were encountered: