v1.38.0
microsoft/playwrightv1.38.0Sep 13, 2023by aslushnikov
AI Summary
A major update featuring UI mode improvements, new APIs for error handling and reporting, and a significant breaking change regarding browser installation automation.
Key Highlights
- UI Mode updates include zooming into time range and a redesigned network panel
- New APIs: browserContext.on('weberror'), locator.pressSequentially(), and reporter.onEnd()
- Deprecated page.type(), frame.type(), locator.type(), and elementHandle.type() in favor of locator.fill()
- Playwright no longer downloads browsers automatically during npm install
Breaking Changes
- Playwright no longer downloads browsers automatically during npm install; users must run npx playwright install
New Features
- browserContext.on('weberror') event listener
- locator.pressSequentially() method
- reporter.onEnd() reporting startTime and duration
- UI Mode zoom and network panel redesign
Full Release Notes
## UI Mode Updates

1. Zoom into time range.
2. Network panel redesign.
## New APIs
- [`browserContext.on('weberror')`]
- [`locator.pressSequentially()`]
- The [`reporter.onEnd()`] now reports `startTime` and total run `duration`.
## Deprecations
- The following methods were deprecated: [`page.type()`], [`frame.type()`], [`locator.type()`] and [`elementHandle.type()`].
Please use [`locator.fill()`] instead which is much faster. Use [`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