Skip to content

chore(driver): roll to 1.62.0 - #3338

Merged
Devin Rousso (dcrousso) merged 1 commit into
microsoft:mainfrom
dcrousso:roll-1.62.0
Jul 30, 2026
Merged

chore(driver): roll to 1.62.0#3338
Devin Rousso (dcrousso) merged 1 commit into
microsoft:mainfrom
dcrousso:roll-1.62.0

Conversation

@dcrousso

@dcrousso Devin Rousso (dcrousso) commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Rolls Playwright for .NET to driver 1.62.0 with Chromium 151.0.7922.34, Firefox 153.0, WebKit 26.5, and Node.js 24.18.1.

Protocol timeout migration

1.62 removes per method timeout parameters and carries the call timeout in Metadata.timeout. The .NET client still sent timeout as a parameter, so the 1.62.0 server ignored every server dispatched operation timeout.

Connection.InnerSendMessageToServerAsync now moves the resolved timeout parameter into the metadata before sending the message. waitForTimeout remains unaffected because it uses waitTimeout.

The follow-up #3339 passes the timeout as a separate SendMessageToServerAsync argument instead of extracting it from the parameter dictionary.

Failed Passed Duration
Before 24 278 12m 15s
After 0 302 1m 49s

Rolling tooling

Upstream removed utils/build/build-playwright-driver.sh in microsoft/playwright#41518, so roll_driver could no longer read the Node.js version. It now reads the latest Node.js LTS from https://nodejs.org/dist/index.json, matching utils/build/update-playwright-node.mjs.

API and browser updates

  • Adds the handwritten IAPIResponse.Timing implementation required by the generated interface
  • Adds the handwritten ILocator.WaitForFunctionAsync implementation required by the generated interface
  • Removes the Firefox specific worker locale expectation because Firefox 153 fixes [Bug]: locale is not propagated to workers in firefox playwright#38919
  • Expects the certificate subject true from WebKit on Windows, matching the 1.62.0 upstream test
  • Aligns ShouldWorkWhileNavigating with the upstream full page screenshot test

Upstream marks timing and responseEndTiming optional and emits them together, while the .NET channel generator emits ResponseEndTiming as a non nullable float. APIResponse.Timing therefore uses timing == null to select the -1 fallback for ResponseEnd.

The viewport version of ShouldWorkWhileNavigating passed with 1.61.1-beta in https://github.com/microsoft/playwright-dotnet/actions/runs/28052877970, but waits out its timeout with 1.62.0. An explicit Timeout = 1000 is honored after approximately 1000 milliseconds, so the test now matches the upstream full page scenario.

Validation:

  • dotnet build src/Playwright succeeds with no warnings or errors
  • dotnet format ./src/ --verify-no-changes succeeds
  • The targeted WebKit security details tests pass
  • The Chromium suite passes with 1818 tests and 33 skipped tests
  • The only two local failures require pwsh, which is not installed on the validation machine

Comment thread src/Playwright/Transport/Connection.cs Outdated
["wallTime"] = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
};

// The protocol carries the call timeout in the metadata instead of as a parameter.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Useless comment detected!

};

// The protocol carries the call timeout in the metadata instead of as a parameter.
if (sanitizedArgs.TryGetValue("timeout", out var timeout))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should follow up and pass timeout as a separate argument of SendMessageToServerAsync, similar to js and java clients.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread build.sh Outdated
new_driver_version="$1"
upstream_package_version=$(node -e "console.log(require('${upstream_repo_path}/package.json').version)")
new_node_version=$(sed -n 's/^NODE_VERSION="\([^"]*\)".*/\1/p' "${upstream_repo_path}/utils/build/build-playwright-driver.sh")
# The Node.js version used to be pinned in the upstream driver build script. That script was

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another useless comment detected!

Comment thread build.sh Outdated
# The Node.js version used to be pinned in the upstream driver build script. That script was
# removed in microsoft/playwright#41518, so for newer versions follow the policy it had, which
# upstream utils/build/update-playwright-node.mjs still uses: the latest Node.js LTS.
legacy_node_version_script="${upstream_repo_path}/utils/build/build-playwright-driver.sh"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's drop the support for the "legacy script".

@dcrousso
Devin Rousso (dcrousso) force-pushed the roll-1.62.0 branch 2 times, most recently from 73601b3 to 04a1359 Compare July 30, 2026 15:48
@dcrousso Devin Rousso (dcrousso) changed the title chore: roll to 1.62.0 chore(driver): roll to 1.62.0 Jul 30, 2026
`roll_driver` read the pinned Node.js version out of `utils/build/build-playwright-driver.sh`, but upstream deleted that script in <microsoft/playwright#41518>, so the roll aborted under `set -e`

read the latest Node.js LTS from <https://nodejs.org/dist/index.json> instead, matching the policy that upstream `utils/build/update-playwright-node.mjs` now follows

`1.62` removes the per method `timeout` parameter from the protocol and carries the call timeout in the metadata instead, so server dispatched operation timeouts silently stopped being honoured

move `timeout` out of the parameters and into the metadata when sending a message, which leaves every existing call site and its default resolution untouched

`IAPIResponse.Timing` and `ILocator.WaitForFunctionAsync` are new in `1.62`, so add handwritten implementations to back the generated interfaces

Firefox `153` fixes <microsoft/playwright#38919>, so `WorkersTests` no longer needs its Firefox specific `toLocaleString` expectation

WebKit on Windows reports the certificate subject as `true` in `1.62.0`, so align `ShouldReturnSecurityDetails` with upstream

`should work while navigating` took a viewport screenshot where the upstream test it ports takes a full page one, so align it
@dcrousso
Devin Rousso (dcrousso) merged commit 63fe44e into microsoft:main Jul 30, 2026
16 checks passed
@dcrousso
Devin Rousso (dcrousso) deleted the roll-1.62.0 branch July 30, 2026 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: locale is not propagated to workers in firefox

2 participants