draft-session.test.mjs (1408B)
1 import test from 'node:test'; 2 import assert from 'node:assert/strict'; 3 import {readFile,readdir,access} from 'node:fs/promises'; 4 5 test('browser code has no draft persistence or retired storage module',async()=>{ 6 for(const directory of ['src','dist']){ 7 const root=new URL('../'+directory+'/',import.meta.url); 8 for(const name of await readdir(root)){ 9 if(!/\.(?:ts|js)$/.test(name))continue; 10 assert.doesNotMatch(await readFile(new URL(name,root),'utf8'),/\b(?:localStorage|sessionStorage|indexedDB|saveDraft|readDraft|writeDraft|recoveryButtons)\b|draft-storage/,name); 11 } 12 } 13 for(const file of ['src/draft-storage.ts','dist/draft-storage.js']) 14 await assert.rejects(access(new URL('../'+file,import.meta.url)),{code:'ENOENT'}); 15 }); 16 17 test('source remains editable without autosave or recovery controls',async()=>{ 18 const html=await readFile(new URL('../index.html',import.meta.url),'utf8'); 19 assert.doesNotMatch(html,/draft-recovery|draft-save-status|recover-draft|forget-draft|download-draft-source|Draft recovery/); 20 for(const id of ['source-editor','compile','stop','restore-source']) 21 assert.match(html,new RegExp(`id="${id}"`)); 22 assert.doesNotMatch(html,/id="edit-source"|id="compiler-disclosure"/); 23 const readme=await readFile(new URL('../README.md',import.meta.url),'utf8'); 24 assert.match(readme,/Draft source lives in the open page/); 25 assert.match(readme,/Reloading starts fresh/); 26 });