/** * Search-box.ai * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai * File: scripts/screenshots.mjs * Description: Captures README screenshots (home, session desktop, session mobile) via Playwright. * * Usage: node scripts/screenshots.mjs [baseUrl] [sessionId] */ import { chromium } from "playwright"; const base = process.argv[2] ?? "http://localhost:3000"; const sessionId = process.argv[3] ?? "ses_4OqHdb-YRqwM"; const browser = await chromium.launch(); async function shot(url, viewport, out, { settle = 9000, toTop = true } = {}) { const page = await browser.newPage({ viewport }); await page.goto(url, { waitUntil: "networkidle" }).catch(() => {}); await page.waitForTimeout(settle); if (toTop) { await page.evaluate(() => window.scrollTo(0, 0)); await page.waitForTimeout(600); } await page.screenshot({ path: out }); await page.close(); console.log(`captured ${out}`); } await shot(`${base}/`, { width: 1440, height: 860 }, "docs/screenshots/home.png", { settle: 3000 }); await shot(`${base}/r/${sessionId}`, { width: 1440, height: 900 }, "docs/screenshots/session-live.png"); await shot(`${base}/r/${sessionId}`, { width: 390, height: 844 }, "docs/screenshots/mobile.png"); await browser.close();