import assert from 'node:assert/strict'; import test from 'node:test'; import { makeLargeHouseFixture } from '../demo/fixtures/large-house.mjs'; import { spaceModels } from '../test-build/space-geometry.js'; import { readFileSync } from 'node:fs'; import { confirmedSummaryPanelWriteRecovery, defaultSummaryPanel, effectiveSummaryVisible, normalizeSummaryDraft, normalizeSummaryScale, parseSummaryLocal, resolveSummaryLayout, summaryPanelEntityIds, summaryLocalKey, summaryPanelOf, validateSummaryDraft, visibleSummaryBlocks, } from '../test-build/summary-panel.js'; import { representedHaDeviceIds, summaryEntityValue, summarySystemValue, totalCleanFloorAreaM2, spaceWallGeometry, } from '../test-build/summary-panel-metrics.js'; import { summaryPanelDictionaries, summaryPanelText } from '../test-build/summary-panel-i18n.js'; import { stableSummaryPlacementSlot } from '../test-build/summary-panel-identity.js'; import { SUMMARY_ENTITY_RESULT_LIMIT, refreshSummaryEntityIndex, searchSummaryEntityIndex, } from '../test-build/summary-panel-picker.js'; const tr = (key) => key; test('#437 keeps the settings form lazy and every summary surface action-free', () => { const loaded = readFileSync(new URL('../src/summary-panel-runtime-loaded.ts', import.meta.url), 'utf8'); const editor = readFileSync(new URL('../src/summary-panel-editor.ts', import.meta.url), 'utf8'); const card = readFileSync(new URL('../src/houseplan-card.ts', import.meta.url), 'utf8'); const manifest = JSON.parse(readFileSync(new URL('../dist/houseplan-assets.json', import.meta.url), 'utf8')); assert.match(card, /import\('\.\/summary-panel-runtime-loaded'\)/); assert.match(loaded, /import\('\.\/summary-panel-editor'\)/); assert.ok(manifest.lazyFiles.some((path) => path.includes('summary-panel-runtime-loaded-'))); assert.ok(manifest.initialViewFiles.every((path) => !path.includes('summary-panel'))); assert.doesNotMatch(card, /from ['"]\.\/summary-panel-editor/); assert.doesNotMatch(`${loaded}\n${editor}`, /callService\s*\(/); assert.doesNotMatch(editor, /Object\.entries\(host\.hass\?\.states/); assert.doesNotMatch(editor, /entities\.map\([^)]*