exl100

Émulateur Exelvision EXL 100 (1984) dans le navigateur : dsp-cpp en WebAssembly, cartouches et cassettes BASIC
git clone https://git.schurger.org/exl100.git
Log | Files | Refs | README

cram-panel.mjs (1553B)


      1 // Explorateur de l'Exelmémoire : charge éventuellement un volume (.cram 16 Ko) dans le localStorage, ouvre
      2 // la page et lit le résumé + les lignes du tableau.
      3 //   node test/cram-panel.mjs [volume.cram|-] [url] [capture.png]
      4 import { open, sleep } from './cdp.mjs';
      5 import { readFileSync } from 'node:fs';
      6 
      7 const vol = process.argv[2] && process.argv[2] !== '-' ? readFileSync(process.argv[2]) : null;
      8 const url = process.argv[3] ?? 'http://127.0.0.1:8195/?game=exeltel&rom=/roms/exeltel.zip';
      9 const shot = process.argv[4] ?? '/tmp/cram-panel.png';
     10 const key = url.includes('exeltel') ? 'exl100.cram.exeltel' : 'exl100.cram.exl100';
     11 const page = await open(url, { width: 900, height: 1100 });
     12 await page.evaluate(vol ? `localStorage.setItem(${JSON.stringify(key)}, ${JSON.stringify(Buffer.from(vol).toString('base64'))})`
     13                         : `localStorage.removeItem(${JSON.stringify(key)})`);
     14 await page.evaluate('location.reload()');
     15 await sleep(8000);
     16 await page.evaluate("document.getElementById('cram-open').click()");
     17 await sleep(400);
     18 const info = await page.evaluate(`(() => {
     19   const rows = [...document.querySelectorAll('#cram-files tbody tr')].map((tr) => [...tr.children].map((td) => td.textContent).join(' | '));
     20   return { open: document.getElementById('cram-modal').open, summary: document.getElementById('cram-summary').textContent, rows, note: document.getElementById('cram-empty').textContent };
     21 })()`);
     22 console.log(JSON.stringify(info, null, 1));
     23 await page.screenshot(shot);
     24 console.log('Capture :', shot);
     25 page.close();