Files
fusion/packages/dashboard/app/__tests__/lazy-loaded-views-docs.test.ts
Fusion a362f42230 feat(FN-4360): complete Step 6 — document reliability metrics surface
Fusion-Task-Id: FN-4360
Fusion-Task-Lineage: 50e17cef-29b0-4adc-aa1c-bffdebe4b43c
2026-05-13 22:27:03 -07:00

87 lines
2.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
const EXPECTED_DOCUMENTED_VIEWS = new Set([
"AgentsView",
"NodesView",
"ChatView",
"MemoryView",
"DevServerView",
"InsightsView",
"DocumentsView",
"SkillsView",
"ResearchView",
"ReliabilityView",
"EvalsView",
"TodoView",
"StashRecoveryView",
"SetupWizardModal",
"PluginManager",
"PiExtensionsManager",
"AgentDetailView",
]);
const EXPECTED_APP_LEVEL_VIEWS = new Set([
"AgentsView",
"DocumentsView",
"InsightsView",
"ResearchView",
"EvalsView",
"NodesView",
"ChatView",
"SkillsView",
"MemoryView",
"ReliabilityView",
"DevServerView",
"TodoView",
"StashRecoveryView",
]);
function extractLazyLoadedSection(agentsDoc: string): string {
const match = agentsDoc.match(/### Lazy-Loaded Heavy Views[\s\S]*?(?=\n### |\n---|$)/);
if (!match) {
throw new Error("Lazy-Loaded Heavy Views section not found in AGENTS.md");
}
return match[0];
}
function extractBacktickedNamesFromBullets(section: string): string[] {
return section
.split("\n")
.filter((line) => line.trim().startsWith("- "))
.flatMap((line) => [...line.matchAll(/`([^`]+)`/g)].map((m) => m[1]));
}
function extractAppLazyViews(appSource: string): Set<string> {
const matches = [...appSource.matchAll(/const\s+(\w+)\s*=\s*lazy\(/g)].map((m) => m[1]);
return new Set(matches.map((name) => (name === "_TodoView" ? "TodoView" : name)));
}
describe("AGENTS lazy-loaded views inventory", () => {
it("documents the App-level lazy views accurately and keeps the curated 17-view list in sync", () => {
const agentsDoc = readFileSync(resolve(__dirname, "../../../../AGENTS.md"), "utf-8");
const appSource = readFileSync(resolve(__dirname, "../App.tsx"), "utf-8");
const section = extractLazyLoadedSection(agentsDoc);
const countMatch = section.match(/These\s+(\d+)\s+views\s+are lazy-loaded/);
expect(countMatch).toBeTruthy();
expect(Number(countMatch?.[1])).toBe(17);
const documentedViews = extractBacktickedNamesFromBullets(section);
expect(new Set(documentedViews)).toEqual(EXPECTED_DOCUMENTED_VIEWS);
expect(documentedViews).toHaveLength(17);
expect(section).toContain("`ResearchView`");
expect(section).toContain("`TodoView`");
expect((section.match(/`AgentDetailView`/g) ?? []).length).toBe(1);
const appLevelViews = extractAppLazyViews(appSource);
expect(appLevelViews).toEqual(EXPECTED_APP_LEVEL_VIEWS);
for (const view of appLevelViews) {
expect(EXPECTED_DOCUMENTED_VIEWS.has(view)).toBe(true);
}
});
});