Update dependency playwright to v1.46.0
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
playwright (changelog) | dependencies | minor |
1.43.0 -> 1.46.0
|
Release Notes
Microsoft/playwright-python (playwright)
v1.46.0
TLS Client Certificates
Playwright now allows to supply client-side certificates, so that server can verify them, as specified by TLS Client Authentication.
You can provide client certificates as a parameter of browser.new_context() and api_request.new_context(). The following snippet sets up a client certificate for https://example.com
:
context = browser.new_context(
client_certificates=[
{
"origin": "https://example.com",
"certPath": "client-certificates/cert.pem",
"keyPath": "client-certificates/key.pem",
}
],
)
When using the Pytest plugin, it can be added like this:
@​pytest.fixture(scope="session")
def browser_context_args(browser_context_args):
return {
**browser_context_args,
"client_certificates": [
{
"origin": "https://example.com",
"certPath": "client-certificates/cert.pem",
"keyPath": "client-certificates/key.pem",
}
],
}
Trace Viewer Updates
- Content of text attachments is now rendered inline in the attachments pane.
- New setting to show/hide routing actions like route.continue_().
- Request method and status are shown in the network details tab.
- New button to copy source file location to clipboard.
- Metadata pane now displays the
base_url
.
Miscellaneous
- New
max_retries
option in apiRequestContext.fetch() which retries on theECONNRESET
network error.
Browser Versions
- Chromium 128.0.6613.18
- Mozilla Firefox 128.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 127
- Microsoft Edge 127
v1.45.1
Highlights
https://github.com/microsoft/playwright-java/issues/1617 - [Bug]: Trace Viewer not reporting all actions https://github.com/microsoft/playwright/issues/31764 - [Bug]: some actions do not appear in the trace file
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
v1.45.0
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.
### Initialize clock with some time before the test time and let the page load
### naturally. `Date.now` will progress as the timers fire.
page.clock.install(time=datetime.datetime(2024, 2, 2, 8, 0, 0))
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.
page.clock.pause_at(datetime.datetime(2024, 2, 2, 10, 0, 0))
### Assert the page state.
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:00:00 AM")
### Close the laptop lid again and open it at 10:30am.
page.clock.fast_forward("30:00")
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:30:00 AM")
See the clock guide for more details.
Miscellaneous
- Method locator.setInputFiles() now supports uploading a directory for
<input type=file webkitdirectory>
elements.page.get_by_label("Upload directory").set_input_files('mydir')
- Multiple methods like locator.click() or locator.press() now support a
ControlOrMeta
modifier key. This key maps toMeta
on macOS and maps toControl
on Windows and Linux.
Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
page.keyboard.press("ControlOrMeta+S")
- New property `httpCredentials.send` in [apiRequest.newContext()](https://playwright.dev/python/docs/api/class-apirequest#api-request-new-context) that allows to either always send the `Authorization` header or only send it in response to `401 Unauthorized`.
- Playwright now supports Chromium, Firefox and WebKit on Ubuntu 24.04.
- v1.45 is the last release to receive WebKit update for macOS 12 Monterey. Please update macOS to keep using the latest WebKit.
#### 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
v1.44.0
New APIs
Accessibility assertions
-
expect(locator).to_have_accessible_name() checks if the element has the specified accessible name:
locator = page.get_by_role("button") expect(locator).to_have_accessible_name("Submit")
-
expect(locator).to_have_accessible_description() checks if the element has the specified accessible description:
locator = page.get_by_role("button") expect(locator).to_have_accessible_description("Upload a photo")
-
expect(locator).to_have_role() checks if the element has the specified ARIA role:
locator = page.get_by_test_id("save-button") expect(locator).to_have_role("button")
Locator handler
- After executing the handler added with page.add_locator_handler(), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new
no_wait_after
option. - You can use new
times
option in page.add_locator_handler() to specify maximum number of times the handler should be run. - The handler in page.add_locator_handler() now accepts the locator as argument.
- New page.remove_locator_handler() method for removing previously added locator handlers.
locator = page.get_by_text("This interstitial covers the button")
page.add_locator_handler(locator, lambda overlay: overlay.locator("#close").click(), times=3, no_wait_after=True)
### Run your tests that can be interrupted by the overlay.
### ...
page.remove_locator_handler(locator)
Miscellaneous options
-
expect(page).to_have_url() now supports
ignore_case
option.
Browser Versions
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 124
- Microsoft Edge 124
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.