Network Replay
Now you can record network traffic into a HAR file and re-use the data in your tests.
To record network into HAR file:
npx playwright open --save-har=github.har.zip https://github.com/microsoft
Alternatively, you can record HAR programmatically:
const context = await browser.newContext({
recordHar: { path: 'github.har.zip' }
});
// ... do stuff ...
await context.close();
Use the new methods page.routeFromHAR()
or browserContext.routeFromHAR()
to serve matching responses from the HAR file:
await context.routeFromHAR('github.har.zip');
Read more in our documentation.
Advanced Routing
You can now use route.fallback()
to defer routing to other handlers.
Consider the following example:
// Remove a header from all requests.
test.beforeEach(async ({ page }) => {
await page.route('**/*', route => {
const headers = route.request().headers();
delete headers['if-none-match'];
route.fallback({ headers });
});
});
test('should work', async ({ page }) => {
await page.route('**/*', route => {
if (route.request().resourceType() === 'image')
route.abort();
else
route.fallback();
});
});
Note that the new methods page.routeFromHAR()
and browserContext.routeFromHAR()
also participate in routing and could be deferred to.
Web-First Assertions Update
- New method
expect(locator).toHaveValues()
that asserts all selected values of<select multiple>
element. - Methods
expect(locator).toContainText()
andexpect(locator).toHaveText()
now acceptignoreCase
option.
Component Tests Update
- Support for Vue2 via the
@playwright/experimental-ct-vue2
package. - Support for component tests for create-react-app with components in
.js
files.
Read more about component testing with Playwright.
Miscellaneous
- If there's a service worker that's in your way, you can now easily disable it with a new context option
serviceWorkers
:// playwright.config.ts export default { use: { serviceWorkers: 'block', } }
- Using
.zip
path forrecordHar
context option automatically zips the resulting HAR:const context = await browser.newContext({ recordHar: { path: 'github.har.zip', } });
- If you intend to edit HAR by hand, consider using the
"minimal"
HAR recording mode
that only records information that is essential for replaying:const context = await browser.newContext({ recordHar: { path: 'github.har.zip', mode: 'minimal', } });
- Playwright now runs on Ubuntu 22 amd64 and Ubuntu 22 arm64. We also publish new docker image
mcr.microsoft.com/playwright:v1.23.0-focal
.
⚠️ Breaking Changes ⚠️
WebServer is now considered "ready" if request to the specified port has any of the following HTTP status codes:
200-299
300-399
(new)400
,401
,402
,403
(new)