'use strict'; const assert = require('node:assert/strict'); const fs = require('node:fs'); const vm = require('node:vm'); const { test } = require('node:test'); test('Games route loads the source scan button handler without visiting Protection first', async () => { const loaded = []; const window = {}; const document = { createElement: () => ({ dataset: {}, addEventListener(event, callback) { if (event === 'load') this.complete = callback; } }), head: { appendChild(script) { loaded.push(script.src); script.complete(); } } }; vm.runInNewContext(fs.readFileSync('renderer/bootstrap.js', 'utf8'), { window, document, console }); await window.ChimeraModuleLoader.ensureForPage('games'); const scanOwners = loaded.filter(file => fs.existsSync(`renderer/${file}`) && fs.readFileSync(`renderer/${file}`, 'utf8').includes("$('btn-rescan-game-sources').addEventListener")); assert.equal(scanOwners.length, 1); });