Ir al contenido
verdict:

Playwright 1.63.0

featured

note: la síntesis y las notas de la versión están en inglés

warning: requiere intervención

1 breaking change4 puntos clave

Adds test locks, cross-frame locators and visible-only locators; drops Ubuntu 20.04 support.

síntesis · solo a partir de las notas de la versión · claude-haiku-5-5 · prompt v7

breaking changestodos citados, cada uno con su solución

breaking[1]: Ubuntu 20.04 is no longer supported.

⚠️ Ubuntu 20.04 is not supported anymore.

help: Check your operating system and move to a supported Ubuntu release before upgrading.

puntos clave

release-notesgithub.com/microsoft/playwright · 114 líneas
  1. ## 🔒 Test locks
  2. Tests that access a shared resource — an external service, a global account setting — can now declare a named `lock`.
  3. Tests that share a lock name never run concurrently, across files, workers and [projects](https://playwright.dev/docs/test-projects), while
  4. everything else keeps running in parallel:
  5. ```js
  6. test('update user settings', { lock: 'user-settings' }, async ({ page }) => {
  7. // never runs at the same time as other tests holding 'user-settings'
  8. });
  9. ```
  10. A test can hold multiple locks, and [test.describe()](https://playwright.dev/docs/api/class-test#test-describe) accepts a `lock` for the whole group.
  11. Learn more about [test locks](https://playwright.dev/docs/test-parallel#test-locks).
  12. ## 🪟 Locate across frames
  13. [page.frameLocator()](https://playwright.dev/docs/api/class-page#page-frame-locator) and [frame.frameLocator()](https://playwright.dev/docs/api/class-frame#frame-frame-locator) called without a selector search in any frame of the
  14. subtree, so you no longer need to locate the iframe first:
  15. ```js
  16. // Finds the button in any frame on the page.
  17. await page.frameLocator().getByRole('button').click();
  18. ```
  19. The rest of the locator resolves inside a single frame, just like a regular locator, and an error is thrown when it
  20. matches elements in several frames.
  21. ## 👁️ Visible-only locators
  22. New [locator.visible()](https://playwright.dev/docs/api/class-locator#locator-visible) returns a locator that matches only visible elements. It is the recommended
  23. replacement for the `:visible` CSS pseudo-class:
  24. ```js
  25. await page.locator('button').visible().click();
  26. ```
  27. ## 🧾 Step params and subtitles
  28. Steps now carry structured data for reporters. Playwright API steps report the target locator and call arguments,
  29. and [test.step()](https://playwright.dev/docs/api/class-test#test-step) accepts `subtitle` and `params` options for your own steps:
  30. ```js
  31. await test.step('Login', async () => {
  32. // ...
  33. }, { subtitle: 'as admin', params: { user: 'admin' } });
  34. ```
  35. Reporters receive them via [testStep.subtitle](https://playwright.dev/docs/api/class-teststep#test-step-subtitle) and [testStep.params](https://playwright.dev/docs/api/class-teststep#test-step-params). For Playwright API
  36. steps, the subtitle is the locator or the navigation url — for example, `Click` with subtitle `getByRole('button')`.
  37. Both are rendered next to the step title in the trace viewer and the HTML report.
  38. ## 🖼️ Aria and screen snapshots in traces
  39. The `snapshots` option of [tracing.start()](https://playwright.dev/docs/api/class-tracing#tracing-start) and the [testOptions.trace](https://playwright.dev/docs/api/class-testoptions#test-options-trace) fixture option now accept an
  40. object selecting what to capture on every action:
  41. ```js
  42. // playwright.config.ts
  43. export default defineConfig({
  44. use: {
  45. trace: {
  46. mode: 'on',
  47. snapshots: { dom: true, aria: true, screen: true }
  48. },
  49. },
  50. });
  51. ```
  52. With aria and screen snapshots recorded, the new **Display Aria** mode in the trace viewer shows the action screenshot
  53. side by side with the aria snapshot, and hovering an aria node highlights it on the screenshot.
  54. ## New APIs
  55. ### Browser and Context
  56. - [`httpCredentials`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-http-credentials) now also accepts an array of credentials. The first entry matching the request origin is used, and entries without an origin match any request.
  57. - New option [`opfs`](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state-option-opfs) includes the [origin private file system](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system) in the storage state, so it can be persisted and restored into later contexts.
  58. - New events [page.on('dialogclosed')](https://playwright.dev/docs/api/class-page#page-event-dialog-closed) and [browserContext.on('dialogclosed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog-closed) are emitted when a JavaScript dialog is accepted, dismissed or closed by the user.
  59. ### Locators
  60. - New [locator.ariaSnapshotJSON()](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot-json) and [page.ariaSnapshotJSON()](https://playwright.dev/docs/api/class-page#page-aria-snapshot-json) return the aria snapshot as a JSON value instead of YAML markup, with `mode`, `depth` and `boxes` options.
  61. - [apiRequestContext.get()](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get) and other request methods accept a type argument that types the response `json()`:
  62. ```js
  63. const response = await request.get<User>('/api/users/42');
  64. const user = await response.json(); // typed as User
  65. ```
  66. ### Test runner
  67. - New standalone [testOptions.reducedMotion](https://playwright.dev/docs/api/class-testoptions#test-options-reduced-motion), [testOptions.forcedColors](https://playwright.dev/docs/api/class-testoptions#test-options-forced-colors) and [testOptions.contrast](https://playwright.dev/docs/api/class-testoptions#test-options-contrast) options.
  68. - New `--add-reporter` command line option appends a reporter on top of the ones configured in `playwright.config`, instead of replacing them like `--reporter` does.
  69. - New `omitTags` option for the `list`, `line`, `dot`, `github` and `junit` reporters suppresses the tags that are automatically appended to test titles.
  70. ### Command line
  71. - `npx playwright install --no-remove` keeps the browsers of other Playwright installations instead of removing them.
  72. - `npx playwright codegen --http-credentials` records against pages behind HTTP authentication.
  73. ### Miscellaneous
  74. - New built-in [`perfetto`](https://playwright.dev/docs/test-reporters#perfetto-reporter) reporter writes a Trace Event Format file for the [Perfetto UI](https://ui.perfetto.dev) or `chrome://tracing`, rendering the test run as a timeline with a lane per worker.
  75. - The HTML report renders a duration waterfall next to test steps.
  76. ## Announcements
  77. * ⚠️ The experimental `@playwright/experimental-ct-react`, `@playwright/experimental-ct-react17` and `@playwright/experimental-ct-vue` packages will no longer be updated. Follow the [migration guide](https://playwright.dev/docs/test-components#migration-from-the-experimental-packages) to move to the stories model introduced in 1.62. Story ids passed to [fixtures.mount()](https://playwright.dev/docs/api/class-fixtures#fixtures-mount) can now be typed through the generated `Stories` registry.
  78. * ⚠️ Ubuntu 20.04 is not supported anymore.
  79. * 🐧 On Linux arm64, Playwright now downloads the [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing) build of Chromium, the same build used on all other platforms.
  80. ## Browser Versions
  81. - Chromium 153.0.8010.12
  82. - Mozilla Firefox 155.0
  83. - WebKit 26.6
  84. This version was also tested against the following stable channels:
  85. - Google Chrome 153
  86. - Microsoft Edge 153

ver en githubimported 2026-09-28 vía npm