const { test } = require('node:test'); const assert = require('node:assert/strict'); const { bootPage } = require('../boot.js'); const el = (tagName = 'div') => ({ tagName, textContent: '', innerHTML: '', style: {}, children: [], type: '', src: '', appendChild(child) { this.children.push(child); } }); test('bootPage handles file and http origins', () => { const loaderSubtitle = el(), bootMessage = el(), body = el('body'); const doc = { body, querySelector: s => s === '.loader-subtitle' ? loaderSubtitle : null, getElementById: id => id === 'boot-message' ? bootMessage : null, createElement: tag => el(tag) }; const fileResult = bootPage({ location: { protocol: 'file:' } }, doc); assert.equal(fileResult.mode, 'file'); assert.equal(body.children.length, 0); assert.match(loaderSubtitle.textContent, /serve this world over http/i); assert.match(bootMessage.innerHTML, /python3 -m http\.server 8888/i); const httpResult = bootPage({ location: { protocol: 'http:' } }, doc); assert.equal(httpResult.mode, 'module'); assert.equal(body.children.length, 1); assert.equal(body.children[0].tagName, 'script'); assert.equal(body.children[0].type, 'module'); assert.equal(body.children[0].src, './bootstrap.mjs'); });