Skip to content

feat(webkit): launch WebKit in WSL directly over WebSocket transport#41251

Merged
yury-s merged 2 commits into
microsoft:mainfrom
yury-s:fix-37036
Jun 15, 2026
Merged

feat(webkit): launch WebKit in WSL directly over WebSocket transport#41251
yury-s merged 2 commits into
microsoft:mainfrom
yury-s:fix-37036

Conversation

@yury-s

@yury-s yury-s commented Jun 12, 2026

Copy link
Copy Markdown
Member

Summary

  • Launch the Linux WebKit build inside the playwright WSL distribution via wsl.exe --remote-debugging-port=0 and connect to it over WebSocket from the Windows host (replaces the reverted intermediate proxy server).
  • Add tests_webkit_wsl workflow running the WebKit suite headed and headless on the self-hosted Windows runner.

Draft: the last commit temporarily disables other PR workflows so CI only runs tests_webkit_wsl. It will be reverted before merging.

Reference: #37036

Launch the Linux WebKit build inside the "playwright" WSL distribution
via wsl.exe with --remote-debugging-port=0 and connect to the printed
ws:// endpoint from the Windows host (reachable thanks to WSL localhost
forwarding). This replaces the reverted intermediate proxy server.

Make killForTests wait for the transport disconnect so the kill appears
atomic to clients, add a tests_webkit_wsl workflow that runs the WebKit
suite headed and headless on the self-hosted Windows pool, and update
library/page test expectations for the webkit-wsl channel.

Reference: microsoft#37036
@yury-s yury-s marked this pull request as ready for review June 12, 2026 18:07
@yury-s yury-s requested review from dcrousso and dgozman June 12, 2026 18:11
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Comment thread .github/workflows/tests_webkit_wsl.yml Outdated
Comment thread packages/playwright-core/src/server/webkit/webkit.ts Outdated
Comment thread packages/playwright-core/src/server/webkit/webkit.ts Outdated

async killForTests(progress: Progress) {
await progress.race(this.options.browserProcess.kill());
// With WebSocket transport the disconnect is not necessarily dispatched before the

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.

This sounds very strange! If that's true, let's fix it separately?

@yury-s yury-s Jun 15, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This mirrors close() right above (lines 196–197), which already does the same if (this.isConnected()) await Disconnected after the process is asked to exit.

- ffmpeg is already pulled in as a webkit-wsl dependency, drop it from the workflow
- remove redundant comments
@yury-s yury-s merged commit f4f64fb into microsoft:main Jun 15, 2026
44 of 46 checks passed
@yury-s yury-s deleted the fix-37036 branch June 15, 2026 22:47
@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

7341 passed, 1122 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

2 flaky ⚠️ [chromium-page] › page/page-request-continue.spec.ts:756 › propagate headers cross origin redirect after interception `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:717 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`

39583 passed, 743 skipped


Merge workflow run.

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.

2 participants