Я нашел chrome-launcher и посмотрел исходный код.Очевидно, хитрость в создании этой работы заключается в --user-data-dir=/tmp/lighthouse.6ppUDxi
флаге командной строки.
например, это работает:
#!/usr/bin/env node
const ChildProc = require('child_process');
function makeUnixTmpDir() {
return ChildProc.execSync('mktemp -d -t lighthouse.XXXXXXX').toString().trim();
}
const chrome = ChildProc.spawn('/usr/bin/google-chrome',[
'--disable-translate',
'--disable-extensions',
'--disable-background-networking',
'--safebrowsing-disable-auto-update',
'--disable-sync',
'--metrics-recording-only',
'--disable-default-apps',
'--mute-audio',
'--no-first-run',
'--user-data-dir='+makeUnixTmpDir(),
'https://google.com',
],{detached: true, stdio: 'ignore'});
// chrome.unref();
setTimeout(() => {
console.log('killing');
chrome.kill();
}, 5000); // pretend we did some stuff, and now we're done with chrome.
Возможно, это как-то связано с тем, как Chrome объединяет процессы, но ядумаю, этого не произойдет, если окно использует собственный профиль пользователя.