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

  ![Playwright UI Mode](https://github.com/microsoft/playwright/assets/746130/8ba27be0-58fd-4f62-8561-950480610369)

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