Files
evus.acvisa.com/tests/homepage-menu.cjs

31 lines
1.2 KiB
JavaScript

const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const vm = require('node:vm');
const template = fs.readFileSync(path.join(__dirname, '../app/home/view/public/site_nav.html'), 'utf8');
const script = template.match(/<script id="ac-mobile-menu-dismiss">([\s\S]*?)<\/script>/);
assert.ok(script, 'Shared navigation must include the menu dismiss handler');
const summary = {};
const link = {};
const outside = {};
const menu = { open: true, contains: target => target === summary || target === link };
let click;
vm.runInNewContext(script[1], {
document: {
querySelector: () => menu,
addEventListener: (type, handler) => { if (type === 'click') click = handler; },
},
});
click({ target: summary });
assert.equal(menu.open, true, 'Summary clicks must keep native toggling intact');
click({ target: link });
assert.equal(menu.open, true, 'Menu links must keep their normal click behavior');
click({ target: outside });
assert.equal(menu.open, false, 'Outside clicks must close the open menu');
click({ target: outside });
assert.equal(menu.open, false, 'Outside clicks must not reopen a closed menu');
console.log('PASS: mobile menu outside-click dismissal');