import { chromium } from "playwright"; import { startPreview } from "./preview.mjs"; import { root } from "./build.mjs"; import { mkdir } from "node:fs/promises"; process.chdir(root); await mkdir("captures/current", { recursive: true }); const preview = await startPreview({ port: 0 }); (async () => { let browser; try { browser = await chromium.launch(); const context = await browser.newContext({ viewport: { width: 390, height: 1000 }, recordVideo: { dir: "reports/video", size: { width: 390, height: 1000 } }, }); const page = await context.newPage(); await page.goto(preview.url); await page.evaluate(() => document.fonts.ready); await page.waitForTimeout(19000); const video = page.video(); await context.close(); await video.saveAs("captures/current/mobile-task-loop.webm"); const agentContext = await browser.newContext({ viewport: { width: 1440, height: 1000 }, recordVideo: { dir: "reports/video", size: { width: 1440, height: 1000 }, }, }); const agentPage = await agentContext.newPage(); await agentPage.goto(preview.url + "#agent"); await agentPage.locator("[data-agent-demo]").scrollIntoViewIfNeeded(); await agentPage.waitForTimeout(7000); const agentVideo = agentPage.video(); await agentContext.close(); await agentVideo.saveAs("captures/current/agent-preparation.webm"); console.log("Mobile loop and agent preparation recorded"); } finally { await browser?.close(); await preview.close(); } })().catch((e) => { console.error(e); process.exitCode = 1; });