const test = require('node:test'); const assert = require('node:assert/strict'); const { readdirSync, readFileSync } = require('node:fs'); const { join } = require('node:path'); test('download and offline icons never use emoji or text glyphs', () => { // Arrow keys are prose, not action icons. Exact lines prevent new exceptions. const allow = new Map([ ['index.html', new Set(['
Space stamp (Tap-sync) · S stamp selected · K play · ↑↓ select · ⌘/Ctrl S save'])],
]);
const failures=[];
for (const file of readdirSync(__dirname).filter(f=>/\.(js|html|css)$/.test(f) && !f.endsWith('.test.js'))) {
readFileSync(join(__dirname,file),'utf8').split('\n').forEach((line,i)=>{
if (/[⬇⤓⇩💾📥↓]/u.test(line) && !allow.get(file)?.has(line.trim())) failures.push(`${file}:${i+1}`);
});
}
assert.deepEqual(failures,[]);
});