const puppeteer = require('puppeteer'); const html = ` LLM Documentary

LARGE LANGUAGE MODELS

`; const TIME_SHIM = ` window.__VTIME_INSTALLED__ = true; var vtime = 0; var _origRaf = window.requestAnimationFrame; var rafCallbacks = []; var rafId = 0; window.requestAnimationFrame = function(cb){ rafId++; rafCallbacks.push({id: rafId, cb: cb}); return rafId; }; window.__advanceVTime = function(target){ var STEP = 8; while (vtime < target) { vtime = Math.min(vtime + STEP, target); var cbs = rafCallbacks; rafCallbacks = []; for (var j = 0; j < cbs.length; j++) { try { cbs[j].cb(vtime); } catch(e){} } } }; window.__renderFrame = function(target) { return new Promise(function(resolve) { window.__advanceVTime(target); if (typeof _origRaf === 'function') { _origRaf(function() { _origRaf(resolve); }); } else { setTimeout(resolve, 0); } }); }; `; (async () => { const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox', '--disable-setuid-sandbox'] }); const page = await browser.newPage(); await page.setViewport({ width: 1920, height: 1080, deviceScaleFactor: 1.6 }); const processedHtml = html.replace(/]*>/i, (m) => m + ''); await page.setContent(processedHtml, { waitUntil: 'networkidle0' }); // Advance time to 5000ms (Worker 2 Simulation) for (let i = 0; i <= 300; i++) { const timeMs = i * 16.666; await page.evaluate((t) => window.__renderFrame(t), timeMs); // Simulate fast-forwarding (skip screenshots) await new Promise(r => setTimeout(r, 5)); } // Take screenshot at exactly frame 300 (5 seconds) await page.screenshot({ path: 'test_canvas_worker2.jpg', type: 'jpeg', quality: 100 }); await page.screenshot({ path: 'test_canvas3.jpg', type: 'jpeg', quality: 100, clip: { x: 160, y: 90, width: 1600, height: 900 } }); await browser.close(); console.log("Done"); })();