25 lines
886 B
JavaScript
25 lines
886 B
JavaScript
import { readFileSync } from "node:fs";
|
|
import assert from "node:assert/strict";
|
|
|
|
const html = readFileSync(new URL("./index.html", import.meta.url), "utf8");
|
|
const ids = [...html.matchAll(/\bid="([^"]+)"/g)].map((match) => match[1]);
|
|
assert.equal(new Set(ids).size, ids.length, "HTML IDs must be unique");
|
|
for (const match of html.matchAll(/href="#([^"]+)"/g)) {
|
|
assert.ok(ids.includes(match[1]), `Missing anchor ${match[1]}`);
|
|
}
|
|
for (const pattern of [
|
|
/\/Users\//,
|
|
/git\.n\.xiaomi/,
|
|
/100\.94\./,
|
|
/human-authorization/,
|
|
/Bearer\s+[A-Za-z0-9]/,
|
|
]) {
|
|
assert.ok(!pattern.test(html), `Private content matched ${pattern}`);
|
|
}
|
|
assert.ok(html.includes("说明性模型"));
|
|
assert.ok(html.includes("来源报告值"));
|
|
assert.ok(html.includes("2026 年 11 月 9 日"));
|
|
console.log(
|
|
`Validated ${ids.length} unique anchors, public-content boundaries and evidence labels.`,
|
|
);
|