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(/]*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(/