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