import assert from "node:assert/strict"; import fs from "node:fs"; const page = fs.readFileSync("src/features/search/SearchPage.tsx", "utf8"); const overlay = fs.readFileSync("src/components/GlobalSearch.tsx", "utf8"); const admin = fs.readFileSync("src/features/search/SearchAdminPanel.tsx", "utf8"); const styles = fs.readFileSync("src/styles/search.css", "utf8"); const filters = fs.readFileSync("src/components/SearchFilters.tsx", "utf8"); const lifecycle = fs.readFileSync("src/components/useSearchResults.ts", "utf8"); for (const source of [page, overlay]) { assert.ok(source.includes("DocumentationHelpLink"), "Search surfaces expose configured-system help"); assert.ok(source.includes("DismissibleAlert"), "Search failures use the shared alert contract"); assert.ok(!source.includes("window.alert("), "Search must not use browser alerts"); assert.ok(!/<(div|span|li|tr)\b[^>]*\bonClick\s*=/.test(source), "Search uses semantic interactive elements"); assert.ok(source.includes("