fix: make projectRoot optional in Puppeteer and launchers (#7967)

This commit is contained in:
Alex Rudenko 2022-02-07 12:59:44 +01:00 committed by GitHub
parent 09ff56b7a8
commit 9afdc6300b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 11 deletions

View File

@ -34,10 +34,6 @@ export const initializePuppeteerNode = (packageName: string): PuppeteerNode => {
if (!isPuppeteerCore && productName === 'firefox')
preferredRevision = PUPPETEER_REVISIONS.firefox;
if (!puppeteerRootDirectory) {
throw new Error('puppeteerRootDirectory is not found.');
}
return new PuppeteerNode({
projectRoot: puppeteerRootDirectory,
preferredRevision,

View File

@ -52,12 +52,12 @@ export interface ProductLauncher {
* @internal
*/
class ChromeLauncher implements ProductLauncher {
_projectRoot: string;
_projectRoot: string | undefined;
_preferredRevision: string;
_isPuppeteerCore: boolean;
constructor(
projectRoot: string,
projectRoot: string | undefined,
preferredRevision: string,
isPuppeteerCore: boolean
) {
@ -276,12 +276,12 @@ class ChromeLauncher implements ProductLauncher {
* @internal
*/
class FirefoxLauncher implements ProductLauncher {
_projectRoot: string;
_projectRoot: string | undefined;
_preferredRevision: string;
_isPuppeteerCore: boolean;
constructor(
projectRoot: string,
projectRoot: string | undefined,
preferredRevision: string,
isPuppeteerCore: boolean
) {
@ -428,6 +428,11 @@ class FirefoxLauncher implements ProductLauncher {
async _updateRevision(): Promise<void> {
// replace 'latest' placeholder with actual downloaded revision
if (this._preferredRevision === 'latest') {
if (!this._projectRoot) {
throw new Error(
'_projectRoot is undefined. Unable to create a BrowserFetcher.'
);
}
const browserFetcher = new BrowserFetcher(this._projectRoot, {
product: this.product,
});
@ -813,6 +818,11 @@ function resolveExecutablePath(launcher: ChromeLauncher | FirefoxLauncher): {
process.env.npm_config_puppeteer_download_path ||
process.env.npm_package_config_puppeteer_download_path;
}
if (!launcher._projectRoot) {
throw new Error(
'_projectRoot is undefined. Unable to create a BrowserFetcher.'
);
}
const browserFetcher = new BrowserFetcher(launcher._projectRoot, {
product: launcher.product,
path: downloadPath,
@ -845,7 +855,7 @@ function resolveExecutablePath(launcher: ChromeLauncher | FirefoxLauncher): {
* @internal
*/
export default function Launcher(
projectRoot: string,
projectRoot: string | undefined,
preferredRevision: string,
isPuppeteerCore: boolean,
product?: string

View File

@ -67,7 +67,7 @@ import { Product } from '../common/Product.js';
*/
export class PuppeteerNode extends Puppeteer {
private _lazyLauncher?: ProductLauncher;
private _projectRoot: string;
private _projectRoot?: string;
private __productName?: Product;
/**
* @internal
@ -79,7 +79,7 @@ export class PuppeteerNode extends Puppeteer {
*/
constructor(
settings: {
projectRoot: string;
projectRoot?: string;
preferredRevision: string;
productName?: Product;
} & CommonPuppeteerSettings
@ -224,6 +224,11 @@ export class PuppeteerNode extends Puppeteer {
* @returns A new BrowserFetcher instance.
*/
createBrowserFetcher(options: BrowserFetcherOptions): BrowserFetcher {
if (!this._projectRoot) {
throw new Error(
'_projectRoot is undefined. Unable to create a BrowserFetcher.'
);
}
return new BrowserFetcher(this._projectRoot, options);
}
}