'use strict'; const test = require('node:test'); const assert = require('node:assert/strict'); const fs = require('node:fs'); const path = require('node:path'); const root = path.join(__dirname, '..'); test('Electron boundary stays isolated and packaged files are declared', () => { const main = fs.readFileSync(path.join(root, 'main.js'), 'utf8'); const preload = fs.readFileSync(path.join(root, 'preload.js'), 'utf8'); const appProtocol = fs.readFileSync(path.join(root, 'src', 'app-protocol.js'), 'utf8'); const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')); assert.match(main, /nodeIntegration:\s*false/); assert.match(main, /contextIsolation:\s*true/); assert.match(main, /sandbox:\s*true/); assert.match(main, /isTrustedSender/); assert.match(main, /setPermissionCheckHandler/); assert.match(main, /setPermissionRequestHandler/); assert.match(main, /registerSchemesAsPrivileged/); assert.match(appProtocol, /app:\/\/bundle/); assert.doesNotMatch(main, /\.loadFile\s*\(/); assert.doesNotMatch(preload, /require\(['"](?:node:)?(?:fs|child_process|dgram)/); assert.match(preload, /exportCsv:\s*\(\)\s*=>\s*ipcRenderer\.invoke\('export-csv'\)/); assert.ok(pkg.build.files.includes('src/**/*')); assert.ok(pkg.build.files.includes('static/**/*')); assert.equal(pkg.build.win.icon, 'assets/icon.ico'); assert.equal(pkg.build.electronFuses.runAsNode, false); assert.equal(pkg.build.electronFuses.enableNodeOptionsEnvironmentVariable, false); assert.equal(pkg.build.electronFuses.enableNodeCliInspectArguments, false); assert.equal(pkg.build.electronFuses.enableEmbeddedAsarIntegrityValidation, true); assert.equal(pkg.build.electronFuses.onlyLoadAppFromAsar, true); assert.equal(pkg.build.electronFuses.grantFileProtocolExtraPrivileges, false); });