Fix: Make sure browser is connected before returning (#4417)

This commit is contained in:
Nelson Chan 2024-01-25 07:59:42 +08:00 committed by GitHub
parent b4e45c7ce8
commit 288cab6dd7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9,6 +9,10 @@ const Database = require("../database");
const jwt = require("jsonwebtoken");
const config = require("../config");
/**
* Cached instance of a browser
* @type {import ("playwright-core").Browser}
*/
let browser = null;
let allowedList = [];
@ -62,8 +66,15 @@ async function isAllowedChromeExecutable(executablePath) {
return allowedList.includes(executablePath);
}
/**
* Get the current instance of the browser. If there isn't one, create
* it.
* @returns {Promise<import ("playwright-core").Browser>} The browser
*/
async function getBrowser() {
if (!browser) {
if (browser && browser.isConnected()) {
return browser;
} else {
let executablePath = await Settings.get("chromeExecutable");
executablePath = await prepareChromeExecutable(executablePath);
@ -72,9 +83,10 @@ async function getBrowser() {
//headless: false,
executablePath,
});
}
return browser;
}
}
async function prepareChromeExecutable(executablePath) {
// Special code for using the playwright_chromium