git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

scripts/web-probe/capture.mjs (884B)

 1 // capture.mjs <site-dir> <out.rgba>: open the probe page (browser.mjs), run
 2 // the probe, and write the frame it read back from the GPU to <out.rgba>
 3 // (premultiplied RGBA8), with a page screenshot beside it.
 4 import fs from 'fs';
 5 import { open } from './browser.mjs';
 6 
 7 const [root, out] = process.argv.slice(2);
 8 if (!root || !out) { console.error('usage: capture.mjs <site-dir> <out.rgba>'); process.exit(2); }
 9 const { page, logs, close } = await open(root, 'index.html', 1280, 800);
10 await page.waitForFunction(() => window.probeReady === true);
11 let ok = true;
12 try {
13   const b64 = await page.evaluate(() => window.runProbe());
14   fs.writeFileSync(out, Buffer.from(b64, 'base64'));
15   await page.screenshot({ path: out + '.screenshot.png' });
16 } catch (e) { ok = false; logs.push('[probe] ' + String(e)); }
17 for (const l of logs) console.log(l);
18 await close();
19 process.exit(ok ? 0 : 1);