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, };