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();