Files
documentation/scripts/measurement-pages.mjs
T
jarvis-at-skic 85852f0744
Build and publish Eldorado documentation / build (pull_request) Successful in 41s
docs: [verified] move metric contracts under Measurement
2026-10-06 23:25:30 +00:00

39 lines
2.2 KiB
JavaScript

import assert from 'node:assert/strict';
import {readFileSync, readdirSync} from 'node:fs';
import {runInNewContext} from 'node:vm';
const read = p => readFileSync(p, 'utf8');
export function verifyMeasurementPages() {
const manifest = JSON.parse(read('research/ai-adoption/measurement-migration.json'));
const {documents, exclusions} = JSON.parse(read('.cache/sidebar-coverage.json'));
const prefix = '/eldorado-v1/documentation';
const legacy = 'strategy/reference/measurement-contracts/index.html';
assert.equal(exclusions.filter(e => e.file === legacy).length, 1);
assert(!documents.some(d => d.id === 'reference/measurement-contracts'));
const search = readdirSync('build').filter(f => /^search-index.*\.json$/.test(f)).map(f => read(`build/${f}`)).join('\n');
assert(!search.includes('/strategy/reference/measurement-contracts/'));
const children = [...manifest.metrics.map(m => ({...m,slug:m.oldAnchor})),
{slug:'collection-and-safeguards',title:'Collection and safeguards'},
{slug:'synthetic-example',title:'Run the synthetic measurement example'},
];
for (const child of children) {
const route = `${prefix}/strategy/measurement/${child.slug}/`;
const doc = documents.filter(d => `${d.route}/` === route);
assert.equal(doc.length,1);
assert.equal(doc[0].id, `measurement/${child.slug}`);
const page = read(`build/strategy/measurement/${child.slug}/index.html`);
const canonical = [...page.matchAll(/<link\b[^>]*rel="canonical"[^>]*>/g)];
assert.equal(canonical.length,1);
assert(canonical[0][0].includes(`href="https://pages.apps.lego-cloud.eu${route}"`));
assert(search.includes(route), `Missing search route: ${route}`);
assert(!page.includes(`${prefix}/strategy/reference/measurement-contracts/`));
}
const script = read(`build/${legacy}`).match(/<script>([\s\S]*?)<\/script>/)[1];
for (const m of manifest.metrics) {
let destination;
runInNewContext(script,{window:{location:{hash:`#${m.oldAnchor}`,replace:url => {destination=url;}}}});
assert.equal(destination,`${prefix}${m.url}`);
}
console.log('PASS: 18 canonical Measurement children, exact IDs, search membership and 16 hash redirects; no legacy document/index duplication');
}