From a9e2dbc5d18f76c796048e5f40ff5a4ed9c52dde Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Fri, 14 Jun 2024 15:15:24 -0700 Subject: [PATCH] docs: js release notes for v1.45 --- docs/src/release-notes-js.md | 87 ++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/docs/src/release-notes-js.md b/docs/src/release-notes-js.md index ce2250f4706b78..3e19e60cfe7ac1 100644 --- a/docs/src/release-notes-js.md +++ b/docs/src/release-notes-js.md @@ -6,6 +6,93 @@ toc_max_heading_level: 2 import LiteYouTube from '@site/src/components/LiteYouTube'; +## Version 1.45 + +### Clock + +Utilizing the new [Clock] API allows to manipulate and control time within tests to verify time-related behavior. This API covers many common scenarios, including: +* testing with predefined time; +* keeping consistent time and timers; +* monitoring inactivity; +* ticking through time manually. + +```js +// Initialize clock and let the page load +// naturally. +await page.clock.install({ time: new Date('2024-02-02T08:00:00') }); +await page.goto('http://localhost:3333'); + +// Pretend that the user closed the laptop lid and opened it again at 10am, +// Pause the time once reached that point. +await page.clock.pauseAt(new Date('2024-02-02T10:00:00')); + +// Assert the page state. +await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:00:00 AM'); + +// Close the laptop lid again and open it at 10:30am. +await page.clock.fastForward('30:00'); +await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:30:00 AM'); +``` + +See [the clock guide](./clock.md) for more details. + +### HTML report + +You can now filter tests by [text in annotations](./test-annotations.md). + +![HTML report](https://github.com/microsoft/playwright/assets/9881434/4ef7c183-2aed-42d4-9fd4-78a87fe1d5c8) + +### Test runner + +- New CLI option `--fail-on-flaky-tests` that fails the test run upon any flaky tests. Note that by default, the test run will succeed when all failed tests recovered upon a retry. With this option, the test run will fail in such case. + +- New enviroment variable `PLAYWRIGHT_FORCE_TTY` controls whether built-in `list`, `line` and `dot` reporters assume a live terminal. You can force enable or disable tty behavior depending on your CI needs, or even set a specific tty width in columns. + ```sh + # Avoid TTY features that require ANSI control sequence support + # when your CI environment does not handle them well. + PLAYWRIGHT_FORCE_TTY=0 npx playwrigh test + ``` + +- New options [`property: TestConfig.respectGitIgnore`] and [`property: TestProject.respectGitIgnore`] control whether files matching `.gitignore` patterns are excluded when searching for tests. + +- New property `timeout` is now available for custom expect matchers. This property takes into account `playwright.config.ts` and `expect.configure()`. + ```ts + import { expect as baseExpect } from '@playwright/test'; + + export const expect = baseExpect.extend({ + async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { + // When no timeout option is specified, use the config timeout. + const timeout = options?.timeout ?? this.timeout; + // ... implement the assertion ... + }, + }); + ``` + +### Miscellaneous APIs + +- Multiple methods like [`method: Locator.click`] or [`method: Locator.press`] now support a `ControlOrMeta` modifier key. This key maps to `Meta` on macOS and maps to `Control` on Windows and Linux. + ```ts + // Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation. + await page.keyboard.press('ControlOrMeta+S'); + ``` + +- New property `httpCredentials.send` in [`method: APIRequest.newContext`] that allows to either always send the `Authorization` header or only send it in response to `401 Unauthorized`. + +- New option `reason` in [`method: APIRequestContext.dispose`] that will be included in the error message of ongoing operations interrupted by the context disposal. + +- New option `host` in [`method: BrowserType.launchServer`] allows to accept websocket connections on a specific address instead of unspecified `0.0.0.0`. + +### Browser Versions + +* Chromium 127.0.6533.5 +* Mozilla Firefox 127.0 +* WebKit 17.4 + +This version was also tested against the following stable channels: + +* Google Chrome 126 +* Microsoft Edge 126 + ## Version 1.44