cram-exl100.mjs (2359B)
1 // Exelmémoire sur l'EXL 100 (CROS 16K en ligne de commande) : DIR sur CRAM vierge, FMT, DIR, 2 // sauvegarde localStorage, rechargement de la page, DIR : le volume doit être là. 3 // node test/cram-exl100.mjs [url] 4 import { open, sleep } from './cdp.mjs'; 5 6 const url = process.argv[2] ?? 'http://127.0.0.1:8195/?exelmem=1'; 7 const KEY = 'exl100.cram.exl100'; 8 9 const key = async (page, k, code, vk) => { 10 await page.send('Input.dispatchKeyEvent', { type: 'keyDown', key: k, code, windowsVirtualKeyCode: vk }); 11 await sleep(60); 12 await page.send('Input.dispatchKeyEvent', { type: 'keyUp', key: k, code, windowsVirtualKeyCode: vk }); 13 await sleep(260); 14 }; 15 const enter = (p) => key(p, 'Enter', 'Enter', 13); 16 const typeSlow = async (p, text) => { 17 for (const ch of text.toUpperCase()) await key(p, ch.toLowerCase(), 'Key' + ch, ch.charCodeAt(0)); 18 }; 19 const lsLen = (p) => p.evaluate(`(localStorage.getItem(${JSON.stringify(KEY)}) || '').length`); 20 21 let page = await open(url, { width: 900, height: 1100 }); 22 await page.evaluate(`localStorage.removeItem(${JSON.stringify(KEY)})`); 23 await sleep(8000); // boot -> CROS 16K 24 await page.screenshot('/tmp/x-0-cros.png'); 25 await enter(page); await sleep(1500); // DIR (vierge) 26 await page.screenshot('/tmp/x-1-dir-vierge.png'); 27 await typeSlow(page, 'FMT'); await enter(page); await sleep(2500); 28 await page.screenshot('/tmp/x-2-fmt.png'); 29 await typeSlow(page, 'Y'); await enter(page); await sleep(2500); // confirmation éventuelle 30 await page.screenshot('/tmp/x-3-fmt-after.png'); 31 await typeSlow(page, 'DIR'); await enter(page); 32 await page.screenshot('/tmp/x-4a-dir-300ms.png'); await sleep(600); 33 await page.screenshot('/tmp/x-4b-dir-900ms.png'); await sleep(900); 34 await page.screenshot('/tmp/x-4c-dir-1800ms.png'); 35 await sleep(4000); 36 console.log('Phase 1 : localStorage =', await lsLen(page), 'car.'); 37 page.close(); await sleep(800); 38 39 page = await open(url, { width: 900, height: 1100 }); 40 console.log('Phase 2 : clé au rechargement =', await lsLen(page), 'car.'); 41 await sleep(8000); 42 await page.screenshot('/tmp/x-5-reload.png'); 43 await enter(page); await sleep(2000); // DIR 44 await page.screenshot('/tmp/x-6-dir-reload.png'); 45 console.log('restauration :', page.logs.filter((l) => /Exelmémoire restaurée/.test(l)).join(' | ') || '(aucune)'); 46 page.close();