From 55982f6514d462e83dd5f018418bb195a4eb7225 Mon Sep 17 00:00:00 2001 From: Alex Rudenko Date: Thu, 8 Sep 2022 10:08:33 +0200 Subject: [PATCH] fix: FirefoxLauncher should not use BrowserFetcher in puppeteer-core Closes #8919 --- scripts/test-install.sh | 28 ++++++++++++++++++++++++++++ src/node/FirefoxLauncher.ts | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/scripts/test-install.sh b/scripts/test-install.sh index 15d1a552dee6d..9da5bbb0ade88 100755 --- a/scripts/test-install.sh +++ b/scripts/test-install.sh @@ -127,3 +127,31 @@ echo '{"type":"module"}' >>$TMPDIR/package.json npm install --loglevel silent "${tarball}" node --input-type="module" --eval="import puppeteer from 'puppeteer-core'" node --input-type="module" --eval="import 'puppeteer-core/lib/esm/puppeteer/revisions.js';" + +echo "Testing... Puppeteer Core launch with executablePath" +TMPDIR="$(mktemp -d)" +cd $TMPDIR +echo '{"type":"module"}' >>$TMPDIR/package.json +npm install --loglevel silent "${tarball}" +# The test tries to launch the node process because +# real browsers are not downloaded by puppeteer-core. +# The expected error is "Failed to launch the browser process" +# so the test verifies that it does not fail for other reasons. +node --input-type="module" --eval=" +import puppeteer from 'puppeteer-core'; +(async () => { + puppeteer.launch({ + product: 'firefox', + executablePath: 'node' + }).catch(error => error.message.includes('Failed to launch the browser process') ? process.exit(0) : process.exit(1)); +})(); +" +node --input-type="module" --eval=" +import puppeteer from 'puppeteer-core'; +(async () => { + puppeteer.launch({ + product: 'chrome', + executablePath: 'node' + }).catch(error => error.message.includes('Failed to launch the browser process') ? process.exit(0) : process.exit(1)); +})(); +" diff --git a/src/node/FirefoxLauncher.ts b/src/node/FirefoxLauncher.ts index c27f1b8d8b374..7f36fb42f016e 100644 --- a/src/node/FirefoxLauncher.ts +++ b/src/node/FirefoxLauncher.ts @@ -113,7 +113,9 @@ export class FirefoxLauncher implements ProductLauncher { firefoxArguments.push(userDataDir); } - await this._updateRevision(); + if (!this._isPuppeteerCore) { + await this._updateRevision(); + } let firefoxExecutable = executablePath; if (!executablePath) { const {missingText, executablePath} = resolveExecutablePath(this);