import puppeteer from 'puppeteer'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const url = process.argv[2] || 'http://localhost:3000'; const label = process.argv[3] || ''; const dir = path.join(__dirname, 'temporary screenshots'); if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true }); let n = 1; const name = () => label ? `screenshot-${n}-${label}.png` : `screenshot-${n}.png`; while (fs.existsSync(path.join(dir, name()))) n++; const filepath = path.join(dir, name()); const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage'], }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 900, deviceScaleFactor: 1 }); await page.goto(url, { waitUntil: 'networkidle0', timeout: 30000 }); // Allow GSAP + web fonts to settle await new Promise(r => setTimeout(r, 2500)); await page.screenshot({ path: filepath, fullPage: false }); await browser.close(); console.log(`Saved: ${filepath}`);