import puppeteer from "puppeteer"; const targetUrl = process.env.TEST_URL || "http://localhost:3000"; const gatekeeperPassword = process.env.GATEKEEPER_PASSWORD || "secret"; async function main() { console.log(`\n๐Ÿš€ Starting E2E Form Submission Check for: ${targetUrl}`); // Launch browser with KLZ pattern: use system chromium via env const browser = await puppeteer.launch({ headless: true, executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || process.env.CHROME_PATH || undefined, args: [ "--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage", ], }); const page = await browser.newPage(); try { // Authenticate through Gatekeeper console.log(`\n๐Ÿ›ก๏ธ Authenticating through Gatekeeper...`); await page.goto(targetUrl, { waitUntil: "networkidle2", timeout: 60000 }); const isGatekeeperPage = await page.$('input[name="password"]'); if (isGatekeeperPage) { await page.type('input[name="password"]', gatekeeperPassword); await Promise.all([ page.waitForNavigation({ waitUntil: "networkidle2", timeout: 60000 }), page.click('button[type="submit"]'), ]); console.log(`โœ… Gatekeeper authentication successful!`); } else { console.log(`โœ… Already authenticated (no Gatekeeper gate detected).`); } // Basic smoke test console.log(`\n๐Ÿงช Testing page load...`); const title = await page.title(); console.log(`โœ… Page Title: ${title}`); if (title.toLowerCase().includes("mintel")) { console.log(`โœ… Basic smoke test passed!`); } else { throw new Error(`Page title mismatch: "${title}"`); } } catch (err: any) { console.error(`โŒ Test Failed: ${err.message}`); await browser.close(); process.exit(1); } await browser.close(); console.log(`\n๐ŸŽ‰ SUCCESS: E2E smoke test passed!`); process.exit(0); } main();