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
--grep
command 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 byexpect.toPass.timeout
option 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
tagged
andoutline
.
-
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