mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-07-28 15:42:35 +00:00
72 lines
3.2 KiB
JavaScript
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);
|
|
});
|