"""Screenshot helper: python3 scripts/shot.py out.png '' [w h]""" import sys, asyncio from playwright.async_api import async_playwright async def main(): out, qs = sys.argv[1], sys.argv[2] w = int(sys.argv[3]) if len(sys.argv) > 3 else 540 h = int(sys.argv[4]) if len(sys.argv) > 4 else 960 async with async_playwright() as p: b = await p.chromium.launch(args=["--use-gl=angle", "--use-angle=swiftshader", "--enable-unsafe-swiftshader", "--autoplay-policy=no-user-gesture-required"]) pg = await b.new_page(viewport={"width": w, "height": h}) logs = [] pg.on("console", lambda m: logs.append(m.type + ": " + m.text)) pg.on("pageerror", lambda e: logs.append("PAGEERROR: " + str(e))) await pg.goto("http://localhost:5173/preview/production/ed5ba841-ed53-4eec-a8c5-93237d26b7ab/?" + qs) try: await pg.wait_for_function("window.__done === true", timeout=90000) except Exception as e: logs.append("TIMEOUT " + str(e)[:100]) await pg.screenshot(path=out) for l in logs: if "error" in l.lower() or "TIMEOUT" in l or "INFO" in l: print(l[:900]) await b.close() asyncio.run(main())