Repository navigation
fix(engine): a render on Windows opens no console windows - #6613
Conversation
Edit accuracy: accurate 271 (base branch 271), smooth 131 of thoseThe gate passes. Quarantined, measured but not gated (0) Unstable (2)
|
…s with the reporter's flags
… that open a window
There was a problem hiding this comment.
Verdict: APPROVE · 0 blocker · 0 important · 0 nits · head 155fe9fb
The lock now holds a single @puppeteer/browsers 3.2.2, and its launch.js sets detached ??= platform !== 'win32' with windowsHide: true. The hideChildConsoles default leaves an explicit windowsHide: false alone (openBrowser, desktopApp), and the Chrome watchdog already set it.
Scope
Read the full diff. Ran hideChildConsoles.test.ts, openBrowser.test.ts and puppeteerLauncher.test.ts locally: all pass. CI attempt 1 failed only Producer: integration tests (lottie chunk-boundary test: page.goto Navigation timeout 60000 ms on the last chunk, after earlier chunks navigated in about 100 ms). Rerunning the failed jobs passed. Windows render verification, Windows window probe and regression are green. Not exercised: the open-package fallback (PowerShell Start, now hidden) actually showing the default browser on Windows, because the probe's preview run opens no browser.
— Genesis reviewer
On Windows,
renderandsnapshotopened a visible console window for every Chrome process (28 for a two-worker render of the blank example, 8 forsnapshot), as reported in #5653. Nothing in the CLI or engine spawned them: the engine loads the fullpuppeteerpackage, which the lockfile had at 25.8.0, and that release pins@puppeteer/browsers3.2.1. 3.2.1 starts Chrome detached on every platform; on Windows a detached Chrome has no console, so Windows Terminal gives each Chrome process its own window. 3.2.2 stopped doing that on Windows.What changed:
puppeteerin the engine and producer is now~25.11.0(the line the CLI'spuppeteer-coreis already on), so the lock holds one launcher, 3.2.2.windowsHide: trueby default for every child process it or its dependencies start on Windows (docker, whisper, tts, media tools, workers), and the two launchers that must show a window (the user's browser, the desktop app) opt out withwindowsHide: false. Three engine library spawns that lacked it now pass it.windows-latestjob renders, runschecktwice,snapshot,doctorandpreviewfrom a launcher with no console, and fails if any of them opens a visible window.Measured on windows-latest, same commands, before and after: render 28 to 0 windows, snapshot 8 to 0; check, doctor and preview opened none either way.
fails without the fix: packages/engine/src/services/puppeteerLauncher.test.ts ("does not start Chrome detached on Windows") fails on the old lock; packages/cli/src/utils/hideChildConsoles.test.ts covers the default; the Windows window job fails on main with 28 windows.
Refs #5653.