Releases: microsoft/playwright
v1.32.2
Highlights
#21993 - [BUG] Browser crash when using Playwright VSC extension and trace-viewer enabled in config
#22003 - [Feature] Make Vue component mount props less restrictive
#22089 - [REGRESSION]: Tests failing with "Error: tracing.stopChunk"
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
v1.32.1
Highlights
#21832 - [BUG] Trace is not opening on specific broken locator
#21897 - [BUG] --ui fails to open with error reading mainFrame from an undefined this._page
#21918 - [BUG]: UI mode, skipped tests not being found
#21941 - [BUG] UI mode does not show webServer startup errors
#21953 - [BUG] Parameterized tests are not displayed in the UI mode
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
v1.32.0
📣 Introducing UI Mode (preview)
New UI Mode lets you explore, run and debug tests. Comes with a built-in watch mode.
Engage with a new flag --ui
:
npx playwright test --ui
New APIs
- New options
option: updateMode
andoption: updateContent
inpage.routeFromHAR()
andbrowserContext.routeFromHAR()
. - Chaining existing locator objects, see locator docs for details.
- New property
TestInfo.testId
. - New option
name
in methodTracing.startChunk()
.
⚠️ Breaking change in component tests
Note: component tests only, does not affect end-to-end tests.
@playwright/experimental-ct-react
now supports React 18 only.- If you're running component tests with React 16 or 17, please replace
@playwright/experimental-ct-react
with@playwright/experimental-ct-react17
.
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
v1.31.2
Highlights
#20784 - [BUG] ECONNREFUSED on GitHub Actions with Node 18
#21145 - [REGRESSION]: firefox-1378 times out on await page.reload() when URL contains a #hash
#21226 - [BUG] Playwright seems to get stuck when using shard option and last test is skipped
#21227 - Using the webServer config with a Vite dev server?
#21312 - throw if defineConfig is not used for component testing
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
v1.31.1
Highlights
#21093 - [Regression v1.31] Headless Windows shows cascading cmd windows
#21106 - fix(loader): experimentalLoader with node@18
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
v1.31.0
New APIs
-
New property
TestProject.dependencies
to configure dependencies between projects.Using dependencies allows global setup to produce traces and other artifacts,
see the setup steps in the test report and more.// playwright.config.ts import { defineConfig } from '@playwright/test'; export default defineConfig({ projects: [ { name: 'setup', testMatch: /global.setup\.ts/, }, { name: 'chromium', use: devices['Desktop Chrome'], dependencies: ['setup'], }, { name: 'firefox', use: devices['Desktop Firefox'], dependencies: ['setup'], }, { name: 'webkit', use: devices['Desktop Safari'], dependencies: ['setup'], }, ], });
-
New assertion
expect(locator).toBeInViewport()
ensures that locator points to an element that intersects viewport, according to the intersection observer API.const button = page.getByRole('button'); // Make sure at least some part of element intersects viewport. await expect(button).toBeInViewport(); // Make sure element is fully outside of viewport. await expect(button).not.toBeInViewport(); // Make sure that at least half of the element intersects viewport. await expect(button).toBeInViewport({ ratio: 0.5 });
Miscellaneous
- DOM snapshots in trace viewer can be now opened in a separate window.
- New method
defineConfig
to be used inplaywright.config
. - New option
maxRedirects
for methodRoute.fetch
. - Playwright now supports Debian 11 arm64.
- Official docker images now include Node 18 instead of Node 16.
⚠️ Breaking change in component tests
Note: component tests only, does not affect end-to-end tests.
playwright-ct.config
configuration file for component testing now requires calling defineConfig
.
// Before
import { type PlaywrightTestConfig, devices } from '@playwright/experimental-ct-react';
const config: PlaywrightTestConfig = {
// ... config goes here ...
};
export default config;
Replace config
variable definition with defineConfig
call:
// After
import { defineConfig, devices } from '@playwright/experimental-ct-react';
export default defineConfig({
// ... config goes here ...
});
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
v1.30.0
🎉 Happy New Year 🎉
Maintenance release with bugfixes and new browsers only. We are baking some nice features for v1.31.
Browser Versions
- Chromium 110.0.5481.38
- Mozilla Firefox 108.0.2
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 109
- Microsoft Edge 109
v1.29.2
v1.29.1
Highlights
#18928 - [BUG] Electron firstWindow times out after upgrading to 1.28.0
#19246 - [BUG] Electron firstWindow times out after upgrading to 1.28.1
#19412 - [REGRESSION]: 1.28 does not work with electron-serve anymore.
#19540 - [BUG] electron.app.getAppPath() returns the path one level higher if you run electron pointing to the directory
#19548 - [REGRESSION]: Ubuntu 18 LTS not supported anymore
Browser Versions
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 108
- Microsoft Edge 108
v1.29.0
New APIs
-
New method
route.fetch()
and new optionjson
forroute.fulfill()
:await page.route('**/api/settings', async route => { // Fetch original settings. const response = await route.fetch(); // Force settings theme to a predefined value. const json = await response.json(); json.theme = 'Solorized'; // Fulfill with modified data. await route.fulfill({ json }); });
-
New method
locator.all()
to iterate over all matching elements:// Check all checkboxes! const checkboxes = page.getByRole('checkbox'); for (const checkbox of await checkboxes.all()) await checkbox.check();
-
Locator.selectOption
matches now by value or label:<select multiple> <option value="red">Red</div> <option value="green">Green</div> <option value="blue">Blue</div> </select>
await element.selectOption('Red');
-
Retry blocks of code until all assertions pass:
await expect(async () => { const response = await page.request.get('https://api.example.com'); await expect(response).toBeOK(); }).toPass();
Read more in our documentation.
-
Automatically capture full page screenshot on test failure:
// playwright.config.ts import type { PlaywrightTestConfig } from '@playwright/test'; const config: PlaywrightTestConfig = { use: { screenshot: { mode: 'only-on-failure', fullPage: true, } } }; export default config;
Miscellaneous
- Playwright Test now respects
jsconfig.json
. - New options
args
andproxy
forandroidDevice.launchBrowser()
. - Option
postData
in methodroute.continue()
now supports serializable values. - Ubuntu 18.04 is not supported anymore
Browser Versions
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 108
- Microsoft Edge 108