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

upload.mjs (1509B)


      1 // Chargement de fichier unifié : injecte un fichier dans #media (comme un choix ou un dépôt), lit le
      2 // message d'état, capture l'écran. Pour une image Exelmémoire, vérifie le localStorage après rechargement.
      3 //   node test/upload.mjs <fichier> [url] [secondes] [capture.png]
      4 import { open, sleep } from './cdp.mjs';
      5 import { resolve } from 'node:path';
      6 
      7 const file = resolve(process.argv[2]);
      8 const url = process.argv[3] ?? 'http://127.0.0.1:8195/';
      9 const secs = Number(process.argv[4] ?? 14);
     10 const shot = process.argv[5] ?? '/tmp/upload.png';
     11 const page = await open(url, { width: 900, height: 1100 });
     12 await sleep(6000);
     13 const doc = await page.send('DOM.getDocument', { depth: 1 });
     14 const { nodeId } = await page.send('DOM.querySelector', { nodeId: doc.root.nodeId, selector: '#media' });
     15 await page.send('DOM.setFileInputFiles', { files: [file], nodeId });
     16 await sleep(1500);
     17 const status1 = await page.evaluate("document.getElementById('status').textContent");
     18 console.log('état immédiat :', status1);
     19 await sleep(secs * 1000);
     20 const status2 = await page.evaluate("document.getElementById('status').textContent");
     21 const ls = await page.evaluate("(() => { try { return Object.keys(localStorage).filter((k) => k.startsWith('exl100.cram')).map((k) => k + '=' + localStorage.getItem(k).length).join(' '); } catch (e) { return ''; } })()");
     22 console.log('état final :', status2, '| cram localStorage :', ls || '(aucun)');
     23 await page.screenshot(shot);
     24 console.log('Capture :', shot);
     25 page.close();