From dccfadb90e8947cae3f33d7a209b6f5752f97b46 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 16 May 2022 15:32:29 +0200 Subject: [PATCH] fix: kill browser process when 'taskkill' fails on Windows (#8352) --- src/node/BrowserRunner.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/node/BrowserRunner.ts b/src/node/BrowserRunner.ts index f2dc6075857e7..7b3942cf011c1 100644 --- a/src/node/BrowserRunner.ts +++ b/src/node/BrowserRunner.ts @@ -186,7 +186,14 @@ export class BrowserRunner { if (this.proc && this.proc.pid && pidExists(this.proc.pid)) { try { if (process.platform === 'win32') { - childProcess.exec(`taskkill /pid ${this.proc.pid} /T /F`, () => {}); + childProcess.exec(`taskkill /pid ${this.proc.pid} /T /F`, (error) => { + if (error) { + // taskkill can fail to kill the process e.g. due to missing permissions. + // Let's kill the process via Node API. This delays killing of all child + // proccesses of `this.proc` until the main Node.js process dies. + this.proc.kill(); + } + }); } else { // on linux the process group can be killed with the group id prefixed with // a minus sign. The process group id is the group leader's pid.