test(repo): guard timeline live preview boundaries

This commit is contained in:
2026-04-01 09:43:14 +02:00
parent 5e8babd1e6
commit 167eec31de
2 changed files with 53 additions and 0 deletions
@@ -4,6 +4,7 @@ import {
collectArchitectureGuardrailViolations,
countLines,
evaluateRule,
rules,
} from "./check-architecture-guardrails.mjs";
describe("architecture guardrails", () => {
@@ -66,4 +67,22 @@ describe("architecture guardrails", () => {
"apps/web/src/example.ts: file grew to 4 lines and exceeds maxLines=2; split the ownership surface before expanding it further",
]);
});
it("guards the extracted timeline live preview ownership boundary", () => {
const dragRule = rules.find((rule) => rule.file === "apps/web/src/hooks/useTimelineDrag.ts");
const livePreviewRule = rules.find((rule) => rule.file === "apps/web/src/hooks/timelineLivePreview.ts");
assert.ok(dragRule);
assert.ok(livePreviewRule);
assert.deepEqual(evaluateRule(dragRule, "function clearLivePreview() {}\n"), [
"apps/web/src/hooks/useTimelineDrag.ts: missing guardrail anchor: timeline drag must keep live preview behavior delegated to the extracted helper module",
"apps/web/src/hooks/useTimelineDrag.ts: forbidden pattern matched: timeline drag must not re-inline live preview helper implementations",
]);
assert.deepEqual(evaluateRule(livePreviewRule, "export function scheduleLivePreview() {}\n"), [
"apps/web/src/hooks/timelineLivePreview.ts: missing guardrail anchor: timeline live preview helpers must keep preview reset logic centralized",
"apps/web/src/hooks/timelineLivePreview.ts: missing guardrail anchor: timeline live preview helpers must keep snapshot preservation centralized",
]);
});
});