Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
20 lines
1.3 KiB
JavaScript
20 lines
1.3 KiB
JavaScript
// Prova locale di un copione del trailer, senza la VM: un finto «d» col solo necessario, una schermata per battuta.
|
|
// OUT=/tmp/prova COPIONE=./trailer-extended.mjs node video/prova-locale.mjs
|
|
import { chromium } from 'playwright';
|
|
import { staticServer } from '../tests/helpers.mjs';
|
|
const server = await staticServer();
|
|
const browser = await chromium.launch({ args: ['--autoplay-policy=no-user-gesture-required', '--use-gl=angle', '--use-angle=swiftshader', '--enable-unsafe-swiftshader'] });
|
|
const out = process.env.OUT;
|
|
try {
|
|
const page = await browser.newPage({ viewport: { width: 1600, height: 900 } });
|
|
page.on('pageerror', e => console.log('ERR', e.message));
|
|
const orig = page.goto.bind(page);
|
|
page.goto = url => orig(url.replace('http://127.0.0.1:8000/', `http://127.0.0.1:${server.port}/`));
|
|
const mod = await import(process.env.COPIONE ?? './trailer.mjs');
|
|
const t0 = Date.now(); let n = 0;
|
|
const d = { page, vm: () => {}, cue: async id => { console.log(((Date.now() - t0) / 1000).toFixed(1), id); setTimeout(() => page.screenshot({ path: `${out}/tr-${String(++n).padStart(2, '0')}-${id}.png` }), id === 'buio' ? 5000 : 3000); } };
|
|
await mod.setup(d);
|
|
await mod.run(d);
|
|
console.log('fine', ((Date.now() - t0) / 1000).toFixed(1));
|
|
} finally { await browser.close(); server.kill(); }
|