Files
govoplan-portal/webui/scripts/test-interface-pattern.mjs
T
zemion 91f5a332a8
Module Package Release / publish-packages (push) Successful in 11s
docs: complete public documentation baseline
2026-08-22 07:23:30 +02:00

17 lines
1.1 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "node:fs";
const page = fs.readFileSync("src/features/portal/PortalPage.tsx", "utf8");
assert.ok(page.includes("DocumentationHelpLink"), "Portal exposes configured-system help");
assert.ok(page.includes("ActionBlockerHint"), "Unavailable launches expose the shared structured blocker");
assert.ok(page.includes("disabledReason={entry.state !== \"available\" ? blocker.summary : undefined}"), "The launch action remains keyboard-explainable");
assert.ok(page.includes("PageScrollViewport"), "Portal owns bounded directory scrolling");
assert.ok(page.includes('aria-live="polite"'), "Changing result counts are announced");
assert.ok(page.includes("useGuardedNavigate"), "Internal launch handoffs respect unsaved-work navigation");
assert.ok(!page.includes("window.alert("), "Portal must not use browser alerts");
assert.ok(!/<(div|span|li|tr)\b[^>]*\bonClick\s*=/.test(page), "Portal uses semantic interactive elements");
assert.ok(page.includes("<WorkspaceActionBar"), "Portal delegates responsive toolbar layout to the shared semantic action bar");
console.log("Portal interface pattern contract passed.");