validateBrowserConfig decides the sandbox default like this:
if (browserName === 'chromium' && browser.launchOptions.chromiumSandbox === undefined) {
if (process.platform === 'linux')
browser.launchOptions.chromiumSandbox = browser.launchOptions.channel !== 'chromium' && browser.launchOptions.channel !== 'chrome-for-testing';
else
browser.launchOptions.chromiumSandbox = true;
}
The two named channels that resolve to a downloaded build get the sandbox disabled on linux, but an undefined channel does not, and that is the same downloaded build. So this launches on linux:
const connection = await createConnection({ browser: { browserName: 'chromium', launchOptions: { channel: 'chrome-for-testing' } } });
and this does not:
const connection = await createConnection({ browser: { browserName: 'chromium' } });
The second fails at launch with Chromium sandboxing failed! and No usable sandbox! from the zygote host, because the bundled build has no setuid helper. BrowserType.launch defaults chromiumSandbox to false, so the same browser started through the library works, and only the config path turns it on.
I hit this from a test in #42365 and worked around it there by passing chromiumSandbox: false. Treating an undefined channel the same as chromium and chrome-for-testing looks like the fix, since all three mean the downloaded browser, but I did not want to change the default in that PR.
Version: 32095ea (main, 2026-08-26)
validateBrowserConfigdecides the sandbox default like this:The two named channels that resolve to a downloaded build get the sandbox disabled on linux, but an undefined channel does not, and that is the same downloaded build. So this launches on linux:
and this does not:
The second fails at launch with
Chromium sandboxing failed!andNo usable sandbox!from the zygote host, because the bundled build has no setuid helper.BrowserType.launchdefaultschromiumSandboxto false, so the same browser started through the library works, and only the config path turns it on.I hit this from a test in #42365 and worked around it there by passing
chromiumSandbox: false. Treating an undefined channel the same aschromiumandchrome-for-testinglooks like the fix, since all three mean the downloaded browser, but I did not want to change the default in that PR.Version: 32095ea (main, 2026-08-26)