From 5eb20e29a21ea0e0368fa8937ef38f7c7693ab34 Mon Sep 17 00:00:00 2001 From: Andres Rondon Date: Fri, 30 Jul 2021 03:32:53 -0400 Subject: [PATCH] fix(browser-runner): reject promise on error (#7338) This patch adds a reject callback to the _processClosing promise and executes it if it catches an error on removeFolderAsync(...). Co-authored-by: Mathias Bynens --- docs/api.md | 2 ++ src/node/BrowserRunner.ts | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/api.md b/docs/api.md index 852dbce73fa51..fb9678fa346e4 100644 --- a/docs/api.md +++ b/docs/api.md @@ -882,6 +882,8 @@ a single instance of [BrowserContext]. Closes Chromium and all of its pages (if any were opened). The [Browser] object itself is considered to be disposed and cannot be used anymore. +During the process of closing the browser, Puppeteer attempts to delete the temp folder created exclusively for this browser instance. If this fails (either because a file in the temp folder is locked by another process or because of insufficient permissions) an error is logged. This implies that: a) the folder and/or its content is not fully deleted; and b) the connection with the browser is not properly disposed (see [browser.disconnect()](#browserdisconnect)). + #### browser.createIncognitoBrowserContext() - returns: <[Promise]<[BrowserContext]>> diff --git a/src/node/BrowserRunner.ts b/src/node/BrowserRunner.ts index 554f14ab884ef..beac06cf321de 100644 --- a/src/node/BrowserRunner.ts +++ b/src/node/BrowserRunner.ts @@ -91,14 +91,17 @@ export class BrowserRunner { this.proc.stdout.pipe(process.stdout); } this._closed = false; - this._processClosing = new Promise((fulfill) => { + this._processClosing = new Promise((fulfill, reject) => { this.proc.once('exit', () => { this._closed = true; // Cleanup as processes exit. if (this._tempDirectory) { removeFolderAsync(this._tempDirectory) .then(() => fulfill()) - .catch((error) => console.error(error)); + .catch((error) => { + console.error(error); + reject(error); + }); } else { fulfill(); }