const { exec } = require("child_process"); const puppeteer = require("puppeteer"); const config = require("./config"); const args = [`--app=${config.url}`, "--kiosk"]; async function cleanup(browser) { try { await browser.close(); } catch { // Ignore errors } } (async function start() { exec(config.start, { stdio: "inherit" }); await new Promise((resolve) => setTimeout(resolve, 2000)); const browser = await puppeteer.launch({ headless: false, handleSIGINT: false, handleSIGTERM: false, handleSIGHUP: false, args, executablePath: config.chromeExecutable, }); browser.on("disconnected", () => cleanup(browser)); browser.on("targetdestroyed", () => cleanup(browser)); process.on("exit", () => cleanup(browser)); process.on("SIGINT", () => cleanup(browser)); process.on("SIGUSR1", () => cleanup(browser)); process.on("SIGUSR2", () => cleanup(browser)); process.on("uncaughtException", () => cleanup(browser)); const context = browser.defaultBrowserContext(); await context.clearPermissionOverrides(); })();