feedBack/tests/js/diagnostics_summary.test.js
2026-06-16 18:47:13 +02:00

72 lines
3.2 KiB
JavaScript

const { test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const vm = require('node:vm');
const { createWindow, ROOT } = require('./capabilities_test_harness');
function loadDiagnostics() {
const window = createWindow();
// diagnostics.js short-circuits if window.slopsmith.diagnostics already
// exists (idempotent guard); the harness stubs it, so clear it first.
window.slopsmith.diagnostics = undefined;
window.navigator = { userAgent: 'test' };
const context = vm.createContext(window);
const source = fs.readFileSync(path.join(ROOT, 'static', 'diagnostics.js'), 'utf8');
vm.runInContext(source, context, { filename: 'diagnostics.js' });
return window;
}
test('summarizeRuntimeDomains counts actual UI contributions, not the {declared,legacy} wrapper keys', () => {
const { summarizeRuntimeDomains } = loadDiagnostics().slopsmith.diagnostics;
const snapshot = {
plugins: [
{
// Normalized backend shape: two declared regions (3 entries
// total) + two legacy entries = 5, NOT 2 (the wrapper keys).
ui_contributions: {
declared: {
'ui.navigation': [{ id: 'a' }, { id: 'b' }],
'settings': [{ id: 'c' }],
},
legacy: [
{ region: 'ui.navigation', legacy_source: 'nav' },
{ region: 'settings', legacy_source: 'settings' },
],
},
runtime_domains: { library: {}, playback: {} },
},
{
ui_contributions: { declared: {}, legacy: [] },
runtime_domains: {},
},
],
};
const summary = summarizeRuntimeDomains(snapshot);
assert.equal(summary.plugin_count, 2);
assert.equal(summary.ui_contribution_count, 5);
assert.equal(summary.runtime_domain_count, 2);
});
test('summarizeRuntimeDomains tolerates a flat region→contributions map', () => {
const { summarizeRuntimeDomains } = loadDiagnostics().slopsmith.diagnostics;
const summary = summarizeRuntimeDomains({
plugins: [{ ui_contributions: { 'ui.navigation': [{ id: 'a' }, { id: 'b' }] } }],
});
assert.equal(summary.ui_contribution_count, 2);
});
test('summarizeRuntimeDomains counts only array region values (malformed values are ignored)', () => {
const { summarizeRuntimeDomains } = loadDiagnostics().slopsmith.diagnostics;
// Non-array region values (a stray object/string from a malformed payload)
// must not inflate the count — only the two real array entries count.
const declaredSummary = summarizeRuntimeDomains({
plugins: [{ ui_contributions: { declared: { good: [{ id: 'a' }, { id: 'b' }], bad: { id: 'x' }, alsoBad: 'nope' }, legacy: [] } }],
});
assert.equal(declaredSummary.ui_contribution_count, 2);
const flatSummary = summarizeRuntimeDomains({
plugins: [{ ui_contributions: { good: [{ id: 'a' }], bad: { id: 'x' } } }],
});
assert.equal(flatSummary.ui_contribution_count, 1);
});