fix: only kill the process when there is no browser instance available (#7762)
When the browser has been started and we have a valid reference lets make use of it instead of force-killing the process. A force kill should probably be the last resort in cleaning up the process. This will help with Firefox as described on #7668 (comment).
This commit is contained in:
parent
790c7a0eb9
commit
51e61696c1
@ -174,6 +174,7 @@ class ChromeLauncher implements ProductLauncher {
|
|||||||
pipe: usePipe,
|
pipe: usePipe,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let browser;
|
||||||
try {
|
try {
|
||||||
const connection = await runner.setupConnection({
|
const connection = await runner.setupConnection({
|
||||||
usePipe,
|
usePipe,
|
||||||
@ -181,7 +182,7 @@ class ChromeLauncher implements ProductLauncher {
|
|||||||
slowMo,
|
slowMo,
|
||||||
preferredRevision: this._preferredRevision,
|
preferredRevision: this._preferredRevision,
|
||||||
});
|
});
|
||||||
const browser = await Browser.create(
|
browser = await Browser.create(
|
||||||
connection,
|
connection,
|
||||||
[],
|
[],
|
||||||
ignoreHTTPSErrors,
|
ignoreHTTPSErrors,
|
||||||
@ -189,13 +190,21 @@ class ChromeLauncher implements ProductLauncher {
|
|||||||
runner.proc,
|
runner.proc,
|
||||||
runner.close.bind(runner)
|
runner.close.bind(runner)
|
||||||
);
|
);
|
||||||
if (waitForInitialPage)
|
|
||||||
await browser.waitForTarget((t) => t.type() === 'page', { timeout });
|
|
||||||
return browser;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
runner.kill();
|
runner.kill();
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (waitForInitialPage) {
|
||||||
|
try {
|
||||||
|
await browser.waitForTarget((t) => t.type() === 'page', { timeout });
|
||||||
|
} catch (error) {
|
||||||
|
await browser.close();
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultArgs(options: BrowserLaunchArgumentOptions = {}): string[] {
|
defaultArgs(options: BrowserLaunchArgumentOptions = {}): string[] {
|
||||||
@ -371,6 +380,7 @@ class FirefoxLauncher implements ProductLauncher {
|
|||||||
pipe,
|
pipe,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let browser;
|
||||||
try {
|
try {
|
||||||
const connection = await runner.setupConnection({
|
const connection = await runner.setupConnection({
|
||||||
usePipe: pipe,
|
usePipe: pipe,
|
||||||
@ -378,7 +388,7 @@ class FirefoxLauncher implements ProductLauncher {
|
|||||||
slowMo,
|
slowMo,
|
||||||
preferredRevision: this._preferredRevision,
|
preferredRevision: this._preferredRevision,
|
||||||
});
|
});
|
||||||
const browser = await Browser.create(
|
browser = await Browser.create(
|
||||||
connection,
|
connection,
|
||||||
[],
|
[],
|
||||||
ignoreHTTPSErrors,
|
ignoreHTTPSErrors,
|
||||||
@ -386,13 +396,21 @@ class FirefoxLauncher implements ProductLauncher {
|
|||||||
runner.proc,
|
runner.proc,
|
||||||
runner.close.bind(runner)
|
runner.close.bind(runner)
|
||||||
);
|
);
|
||||||
if (waitForInitialPage)
|
|
||||||
await browser.waitForTarget((t) => t.type() === 'page', { timeout });
|
|
||||||
return browser;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
runner.kill();
|
runner.kill();
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (waitForInitialPage) {
|
||||||
|
try {
|
||||||
|
await browser.waitForTarget((t) => t.type() === 'page', { timeout });
|
||||||
|
} catch (error) {
|
||||||
|
await browser.close();
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
executablePath(): string {
|
executablePath(): string {
|
||||||
|
Loading…
Reference in New Issue
Block a user