52 lines
1.0 KiB
JavaScript
52 lines
1.0 KiB
JavaScript
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,
|
|
};
|