chore: roll to Playwright v1.61.1 - #617
Merged
Merged
Conversation
Roll the bundled driver from v1.60.0 to v1.61.1 and port the new client surface.
New APIs (mirroring playwright-python #3102 / playwright-java #1929):
- WebStorage class + Page.LocalStorage()/SessionStorage()
- Credentials class (WebAuthn virtual authenticator) + BrowserContext.Credentials()
- APIResponse.SecurityDetails()/ServerAddr()
- Screencast cursor option + ScreencastFrame timestamp
Behavior changes ported:
- Page.close/runBeforeUnload protocol split (upstream #40780)
- assertion expect failures now arrive as protocol errors carrying errorDetails
instead of a { matches: false } result (upstream); handled in both expect
call-sites (locator + page assertions)
- client-certificate interceptor now scopes certs to the matching origin, so an
origin-mismatch navigation aborts the TLS handshake; updated the test
Also fixes scripts/apply-patch.sh to always check out the pinned tag (previously
the first roll on a fresh submodule patched the old version).
Repo-local skill that automates rolling playwright-go to a new upstream version: discovers API changes from the python/java/dotnet roll PRs and the upstream docs diff, edits the langs gating in patches/main.patch, regenerates, and verifies parity against the sibling clients. Includes find-changes.sh and verify-parity.sh.
- client-cert handshake-abort error wording varies by browser AND platform (chromium ERR_BAD_SSL_CLIENT_AUTH_CERT, firefox SSL_ERROR_UNKNOWN, webkit 'Certificate is required' on linux/macos / 'Failure when receiving data' on windows); match any known variant - Firefox websocket error is now ': 404' like other browsers (was CLOSE_ABNORMAL) since v1.61 - replace deprecated WaitForTimeout with time.Sleep; check Close/Stop returns
…overage - getByTestId JSON-quotes the test-id attribute name when it contains a comma, so a comma-separated list set via SetTestIdAttribute (upstream #40844) matches any of the named attributes instead of producing an invalid selector. Mirrors upstream encodeTestIdAttributeName. - add tests matching the sibling clients: comma-separated getByTestId, session storage items/remove/clear, local-vs-session independence.
Make Step 6b mandatory and exhaustive: every test python/java/dotnet add in their roll must have a Go counterpart (port the union; a sibling test often exposes a Go feature gap, e.g. the v1.61 comma-testid bug). verify-parity.sh now lists each sibling's added test FUNCTION names, not just files. Step 7 requires running new tests on all three browsers (engine-specific behavior).
Capture the parts of a roll that happen after the PR opens: read gh pr checks, expect cross-browser/cross-OS failures that don't reproduce locally, Flakiness.io is a reporter not a gate; and how to rebase the run.go/README.md conflicts that a roll always produces when main moves. Minor: align Step 9/refs wording with the function-name listing verify-parity.sh now emits.
…ing loop Step 10 now creates the PR (gh pr create) once local checks pass, without waiting to be asked. Step 11 is an explicit loop: gh run watch --exit-status -> read each failure's --log-failed -> triage (my code / engine-OS-specific / behavior change) -> fix -> re-push, repeat until gh pr checks shows 0 fail. Reconcile 'When to ask': work autonomously through PR + CI, but never merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rolls the bundled driver from v1.60.0 to v1.61.1 and ports the new client surface, mirroring playwright-python#3102 and playwright-java#1929.
New APIs
WebStorageclass +Page.LocalStorage()/Page.SessionStorage()Credentialsclass (WebAuthn virtual authenticator) +BrowserContext.Credentials()APIResponse.SecurityDetails()/APIResponse.ServerAddr()cursoroption +ScreencastFrametimestampBehavior changes ported
Page.close/runBeforeUnloadprotocol split (upstream #40780)expectfailures now arrive as protocol errors carryingerrorDetailsinstead of a{ matches: false }result — handled in both expect call-sites (locator + page assertions)net::ERR_BAD_SSL_CLIENT_AUTH_CERT); the client-cert test was updated accordinglyFixes / internal
scripts/apply-patch.sh: always check out the pinned tag (previously the first roll on a fresh submodule patched the old version)screencast.go: guardonFramewith a mutex (latent data race surfaced by the new-racescreencast test)generateGoApi.js: honor the documented* alias:for new return types (VirtualCredential,WebStorageItem) and mark the new pure getters as not returningerrorAlso adds a repo-local
roll-playwrightClaude Code skill that automates this process.Tests pass with
-raceacross the suite.