This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
const { chromium } = require('playwright');
|
||||
|
||||
let browser = null;
|
||||
let browserLaunchPromise = null;
|
||||
|
||||
async function getBrowser() {
|
||||
if (browser && browser.isConnected()) {
|
||||
return browser;
|
||||
}
|
||||
|
||||
if (browserLaunchPromise) {
|
||||
return browserLaunchPromise;
|
||||
}
|
||||
|
||||
browserLaunchPromise = chromium.launch({
|
||||
headless: true,
|
||||
args: [
|
||||
'--no-sandbox',
|
||||
'--disable-setuid-sandbox',
|
||||
'--disable-dev-shm-usage',
|
||||
'--disable-accelerated-2d-canvas',
|
||||
'--disable-gpu',
|
||||
],
|
||||
});
|
||||
|
||||
try {
|
||||
browser = await browserLaunchPromise;
|
||||
browserLaunchPromise = null;
|
||||
return browser;
|
||||
} catch (error) {
|
||||
browserLaunchPromise = null;
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async function closeBrowser() {
|
||||
if (browser) {
|
||||
await browser.close();
|
||||
browser = null;
|
||||
}
|
||||
}
|
||||
|
||||
function isBrowserConnected() {
|
||||
return browser && browser.isConnected();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getBrowser,
|
||||
closeBrowser,
|
||||
isBrowserConnected,
|
||||
};
|
||||
Reference in New Issue
Block a user