Files
documentation/scripts/strategy-navigation.test.mjs
T
jarvis-at-skic e087adab1e
Build and publish Eldorado documentation / build (pull_request) Successful in 47s
fix: [verified] expose all documentation in reachable sidebars
2026-10-06 20:00:08 +00:00

50 lines
3.1 KiB
JavaScript

import {test} from 'node:test';
import assert from 'node:assert/strict';
import {readFileSync, existsSync} from 'node:fs';
import {runInNewContext} from 'node:vm';
import ts from 'typescript';
const read = p => readFileSync(p, 'utf8');
test('Strategy has Target, Roadmap, a linked Skills Adoption category and Autonomous Agent', () => {
const compiled = ts.transpileModule(read('sidebars/strategy.ts'), {compilerOptions:{module:ts.ModuleKind.CommonJS}}).outputText;
const sandbox = {exports:{}};
runInNewContext(compiled, sandbox);
const sidebar = JSON.parse(JSON.stringify(sandbox.exports.default.strategySidebar));
assert.deepEqual(sidebar, ['target-operating-model', 'roadmap', {
type:'category', label:'Stage - 01 - Skills Adoption',
link:{type:'doc', id:'stage-01-skills-adoption'}, collapsed:true,
items:[
{type:'doc', id:'skills-governance', label:'Governance'},
{type:'doc', id:'skills-quality', label:'Quality'},
{type:'doc', id:'skills-adoption', label:'Adoption'},
{type:'doc', id:'measurement', label:'Measurement'},
{type:'doc', id:'skills-maintenance', label:'Maintenance'},
{type:'category', label:'Reference', collapsed:true, items:[{type:'doc', id:'reference/measurement-contracts', label:'Measurement Contracts'}]},
],
}, 'stage-02-autonomous-agent']);
assert.match(read('docs/strategy/target-operating-model.mdx'), /^sidebar_label: Target$/m);
assert.match(read('docusaurus.config.ts'), /type: 'docSidebar', docsPluginId: 'strategy', sidebarId: 'strategySidebar', label: 'Strategy'/);
});
test('stage overviews explain the foundation and future without replacing topic content', () => {
const first = read('docs/strategy/stage-01-skills-adoption.mdx');
const second = read('docs/strategy/stage-02-autonomous-agent.mdx');
for (const [id, title, page] of [
['stage-01-skills-adoption', 'Stage - 01 - Skills Adoption', first],
['stage-02-autonomous-agent', 'Stage - 02 - Autonomous Agent', second],
]) {
assert(page.includes(`id: ${id}\ntitle: ${title}`));
for (const link of ['./roadmap.mdx', './target-operating-model.mdx']) assert(page.includes(link));
}
for (const id of ['skills-governance','skills-quality','skills-adoption','measurement','skills-maintenance']) assert(first.includes(`./${id}.mdx`));
for (const marker of ['human + AI Agent','Delivery first','order is not yet decided','KPIs','baseline','topology','feedback','new current situation']) assert(first.includes(marker), marker);
for (const marker of ['future','proven skills','measurements','working practices','direction and review','not deployed autonomy','approved KPI thresholds']) assert(second.includes(marker), marker);
assert.match(read('docs/strategy/measurement.mdx'), /^title: Skills Measurement\nsidebar_label: Measurement$/m);
});
test('old Strategy entry redirects to Target instead of maintaining a second document', () => {
assert(!existsSync('docs/strategy/index.mdx'));
assert.match(read('docusaurus.config.ts'), /'@docusaurus\/plugin-client-redirects'/);
assert.match(read('docusaurus.config.ts'), /from: '\/strategy\/', to: '\/strategy\/target-operating-model\/'/);
});