chore(deps): update dependency @playwright/test to v1.48.0
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| @playwright/test (source) | 1.41.1 -> 1.48.0 |
Release Notes
microsoft/playwright (@playwright/test)
v1.48.0
v1.47.2
Highlights
https://github.com/microsoft/playwright/pull/32699- [REGRESSION]: fix(codegen): use content_frame property in python/.NEThttps://github.com/microsoft/playwright/issues/327066- [REGRESSION]: page.pause() does not pause test timeout after 1.4https://github.com/microsoft/playwright/pull/3266161 - fix(trace-viewer): time delta between local and remote actions
Browser Versions
- Chromium 129.0.6668.29
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 128
- Microsoft Edge 128
v1.47.1
v1.47.0
v1.46.1
v1.46.0
v1.45.3
v1.45.2
v1.45.1
v1.45.0
v1.44.1
Highlights
https://github.com/microsoft/playwright/issues/30779 - [REGRESSION]: When using video: 'on' with VSCode extension the browser got closed
https://github.com/microsoft/playwright/issues/30755 - [REGRESSION]: Electron launch with spaces inside executablePath didn't workhttps://github.com/microsoft/playwright/issues/307700 - [REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't worhttps://github.com/microsoft/playwright/issues/3085858 - [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
New APIs
Accessibility assertions
-
expect(locator).toHaveAccessibleName() checks if the element has the specified accessible name:
const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); -
expect(locator).toHaveAccessibleDescription() checks if the element has the specified accessible description:
const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); -
expect(locator).toHaveRole() checks if the element has the specified ARIA role:
const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button');
Locator handler
- After executing the handler added with page.addLocatorHandler(), 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
noWaitAfteroption. - You can use new
timesoption in page.addLocatorHandler() to specify maximum number of times the handler should be run. - The handler in page.addLocatorHandler() now accepts the locator as argument.
- New page.removeLocatorHandler() method for removing previously added locator handlers.
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
-
multipartoption inapiRequestContext.fetch()now acceptsFormDataand supports repeating fields with the same name.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 byexpect.toPass.inervalsoption globally in testConfig.expect or per project in testProject.expect. -
expect(page).toHaveURL(url)now supportsignoreCaseoption. -
testProject.ignoreSnapshots allows to configure per project whether to skip screenshot expectations.
Reporter API
- New method suite.entries() returns child test suites and test cases in their declaration order. suite.type and testCase.type can be used to tell apart test cases and suites in the list.
-
Blob reporter now allows overriding report file path with a single option
outputFile. The same option can also be specified asPLAYWRIGHT_BLOB_OUTPUT_FILEenvironment variable that might be more convenient on CI/CD. -
JUnit reporter now supports
includeProjectInTestNameoption.
Command line
-
--last-failedCLI option for running only tests that failed in the previous run.First run all tests:
$ 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-failedoption:$ 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
Highlights
https://github.com/microsoft/playwright/issues/30300 - [REGRESSION]: UI mode restarts if keep storage statehttps://github.com/microsoft/playwright/issues/303399 - [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
New APIs
-
Method browserContext.clearCookies() now supports filters to remove only some cookies.
// 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-failurefor testOptions.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.import { defineConfig } from '@​playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); -
New property testInfo.tags exposes test tags during test execution.
test('example', async ({ page }) => { console.log(test.info().tags); }); -
New method locator.contentFrame() converts a
Locatorobject to aFrameLocator. This can be useful when you have aLocatorobject obtained somewhere, and later on would like to interact with the content inside the frame.const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); -
New method frameLocator.owner() converts a
FrameLocatorobject to aLocator. This can be useful when you have aFrameLocatorobject obtained somewhere, and later on would like to interact with theiframeelement.const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible();
UI Mode Updates
- See tags in the test list.
- Filter by tags by typing
@fastor clicking on the tag itself. - New shortcuts:
- F5 to run tests.
- Shift F5 to stop running tests.
- Ctrl ` 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
Highlights
https://github.com/microsoft/playwright/issues/29732 - [Regression]: HEAD requests to webServer.url since v1.42.0https://github.com/microsoft/playwright/issues/297466 - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin imporhttps://github.com/microsoft/playwright/issues/2973939 - [Bug]: Component tests fails when imported a module with a dot in a nahttps://github.com/microsoft/playwright/issues/29731731 - [Regression]: 1.42.0 breaks some import statemehttps://github.com/microsoft/playwright/issues/297609760 - [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
New APIs
-
Test tags
New tag syntax for adding tags to the tests (@-tokens in the test title are still supported).
test('test customer login', { tag: ['@​fast', '@​login'] }, async ({ page }) => { // ... });Use
--grepcommand line option to run only tests with certain tags.npx playwright test --grep @​fast -
Annotating skipped tests
New annotation syntax for test annotations allows annotating the tests that do not run.
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 }) => { // ... }); -
page.addLocatorHandler()
New method page.addLocatorHandler() 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.
// 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 now supports '*' wildcard when filtering by project.
npx playwright test --project='*mobile*' -
Other APIs
-
expect(callback).toPass({ timeout }) The timeout can now be configured by
expect.toPass.timeoutoption globally or in project config -
electronApplication.on('console') electronApplication.on('console') event is emitted when Electron main process calls console API methods.
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() accepts two new options
taggedandoutline.
-
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.
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
Highlights
https://github.com/microsoft/playwright/issues/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
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.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
⚠️ No Changeset found
Latest commit: e3eb0ab68134ceb9c7c4aa03e278f5ab50d9f20e
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Click here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR