diff --git a/scripts/test-install.sh b/scripts/test-install.sh index 15d1a552dee6d..c7d14e4f40a28 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);