chore(e2e): run e2e:docker on Windows without Docker Desktop - #1886
Conversation
tools/e2e/run.js died with "Could not find `docker` on PATH" on Windows carrying Docker Engine inside WSL rather than Docker Desktop: /usr/bin/docker is a Linux ELF binary, and while WSL projects Windows executables into the distribution, nothing does the reverse. Probe through `wsl.exe -e docker` when the direct spawn returns ENOENT, translate the compose file paths with wslpath, and carry PLAYWRIGHT_VERSION, E2E_PLATFORM and PLAYWRIGHT_WORKERS across the boundary with WSLENV — without the last of those the image tag silently degrades to `v-noble` and nothing checks the browsers against the lockfile any more. A docker.cmd shim on PATH is not an alternative: Node does not resolve .bat/.cmd from a non-shell spawn, so spawnSync reports the same ENOENT. Neither is a native Windows CLI over TCP, which resolves the compose file's relative volumes into Windows paths that a Linux daemon cannot bind-mount.
playwright-report and test-results are mounted out of the container by tools/e2e/docker-compose.yml, so they appear as soon as anyone runs the suite locally. The HTML report embeds the trace viewer, which is minified vendor code: `eslint .` failed with 92 errors and 707 warnings, every one of them from that bundle rather than from the repository. Same reasoning as the neighbouring `**/dist` entry, and like dist it never shows up on the fresh checkout CI lints.
There was a problem hiding this comment.
Pull request overview
This PR improves the local E2E Docker runner so Windows users can run yarn run e2e:docker from PowerShell even when Docker Engine is only available inside WSL (and there is no working docker.exe on the Windows PATH). It also updates the docs and ESLint ignores to reflect the workflow and avoid linting Playwright-generated output.
Changes:
- Enhance
tools/e2e/run.jsto probedocker composeand, on Windows, transparently fall back to running Docker viawsl.exe, including translating compose file paths and forwarding required env vars. - Update E2E docs to point to the detailed Windows/WSL behavior documentation.
- Ignore Playwright report/output directories in
eslint.config.jsto prevent linting generated vendor/minified output.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| tools/e2e/run.js | Adds WSL fallback for Docker Compose on Windows, path translation via wslpath, and env forwarding for WSL execution. |
| packages/e2e/README.md | Links to the central testing guide section describing the Windows/WSL wrapper behavior. |
| eslint.config.js | Ignores Playwright report/output directories to avoid linting generated HTML/trace viewer bundles. |
| docs/guides/06-testing.md | Documents the Windows behavior: WSL fallback, distro selection via WSL_DISTRIBUTION, and limitations (daemon reachability still fails at runtime). |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Visit the preview URL for this PR (updated for commit de00f6e): https://koobiq-next--prs-1886-po67rayu.web.app (expires Sat, 15 Aug 2026 14:07:54 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: c9e37e518febda70d0317d07e8ceb35ac43c534c |
No description provided.