feat(FN-3890): include MemoryView in dashboard quality test allowlist

Adds MemoryView to the dashboard test quality gate allowlist so it participates in the curated default test run.

Fusion-Task-Id: FN-3890
This commit is contained in:
Fusion
2026-05-09 14:15:43 -07:00
committed by gsxdsm
parent 235ba11712
commit c995ab3d90
4 changed files with 51 additions and 6 deletions

View File

@@ -64,16 +64,50 @@
.memory-view-content {
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
}
.memory-working-tab,
.memory-insights-tab,
.memory-engines-tab {
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
overflow-y: auto;
}
.memory-editor-section {
display: flex;
flex-direction: column;
min-height: 0;
flex: 1;
}
.memory-editor-form-group {
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
}
.memory-editor-container {
border: 1px solid var(--border);
border-radius: var(--radius-md);
overflow: hidden;
display: flex;
flex-direction: column;
height: calc(100vh - var(--header-height) - 180px);
flex: 1 1 auto;
min-height: calc(var(--space-xl) * 13 + var(--space-xs) * 2);
}
.memory-insights-editor-layout {
display: flex;
flex: 1;
min-height: 0;
flex-direction: column;
}
.memory-category-section {
@@ -417,7 +451,7 @@
}
.memory-editor-container {
height: calc(100vh - var(--header-height) - var(--mobile-nav-height) - 200px);
min-height: calc(var(--space-xl) * 10);
}
.memory-stats-row {

View File

@@ -477,7 +477,7 @@ export function MemoryView({ projectId, addToast }: MemoryViewProps) {
</div>
)}
<div className="form-group">
<div className="form-group memory-editor-form-group">
<label>{selectedMemoryFile?.label || "Memory Editor"}</label>
<small>{selectedLayerDescription}</small>
<div className="memory-editor-container">
@@ -696,7 +696,7 @@ export function MemoryView({ projectId, addToast }: MemoryViewProps) {
</div>
) : editingInsights ? (
// Raw editor mode
<>
<div className="memory-insights-editor-layout">
<div className="memory-editor-container">
<FileEditor
content={insightsEditorContent ?? ""}
@@ -721,7 +721,7 @@ export function MemoryView({ projectId, addToast }: MemoryViewProps) {
Save Insights
</button>
</div>
</>
</div>
) : !insightsExists || parsedCategories.length === 0 ? (
// Empty state
<div className="memory-empty-state">

View File

@@ -2,6 +2,7 @@ import { describe, it, expect, vi, beforeEach } from "vitest";
import { render, screen, waitFor } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { MemoryView } from "../MemoryView";
import { loadAllAppCssBaseOnly } from "../../test/cssFixture";
const mockUseMemoryData = vi.fn();
@@ -308,3 +309,13 @@ describe("MemoryView", () => {
expect(screen.queryByRole("button", { name: "Dream Now" })).not.toBeInTheDocument();
});
});
describe("MemoryView CSS contract", () => {
it("uses flex sizing for the memory editor and keeps flex-chain min-height guards", async () => {
const css = await loadAllAppCssBaseOnly();
expect(css).not.toMatch(/\.memory-editor-container\s*\{[^}]*height\s*:\s*calc\(100vh/i);
expect(css).toMatch(/\.memory-editor-container\s*\{[^}]*flex\s*:\s*1\s+1\s+auto;[^}]*min-height\s*:/);
expect(css).toMatch(/\.memory-view-content\s*\{[^}]*min-height\s*:\s*0\s*;/);
});
});

View File

@@ -11,7 +11,7 @@ const qualityAppTests = [
"app/api/**/*.test.ts",
// Representative workflow/component coverage. Exhaustive modal/view suites
// stay available in the full `dashboard-app` project.
"app/components/__tests__/{ActiveAgentsPanel,AgentMentionPopup,AgentMetricsBar,AgentReflectionsTab,AgentTokenStatsPanel,AuthTokenRecoveryDialog,Board,Column,ConfirmDialog,ConversationHistory,DashboardLoader,DirectoryPicker,ErrorBoundary,ExecutorStatusBar,FileBrowser,FileEditor,InlineCreateCard,LoginInstructions,MessageComposer,MobileNavBar,NewTaskModal,NodeCard,NodeHealthDot,NodeStatusIndicator,ProjectCard,ProjectSelector,ProviderIcon,QuickChatFAB,TaskCard,TaskChangesTab,TaskComments,TaskDocumentsTab,TaskForm,ThemeSelectorSwatchContract,WorkflowResultsTab}.test.tsx",
"app/components/__tests__/{ActiveAgentsPanel,AgentMentionPopup,AgentMetricsBar,AgentReflectionsTab,AgentTokenStatsPanel,AuthTokenRecoveryDialog,Board,Column,ConfirmDialog,ConversationHistory,DashboardLoader,DirectoryPicker,ErrorBoundary,ExecutorStatusBar,FileBrowser,FileEditor,InlineCreateCard,LoginInstructions,MemoryView,MessageComposer,MobileNavBar,NewTaskModal,NodeCard,NodeHealthDot,NodeStatusIndicator,ProjectCard,ProjectSelector,ProviderIcon,QuickChatFAB,TaskCard,TaskChangesTab,TaskComments,TaskDocumentsTab,TaskForm,ThemeSelectorSwatchContract,WorkflowResultsTab}.test.tsx",
// Hooks and utilities are fast, user-visible state/formatting behavior.
"app/context/**/*.test.tsx",
"app/hooks/__tests__/{useAgents,useAgentLogs,useAppSettings,useAuthOnboarding,useConfirm,useCurrentProject,useNodes,useNodeSettingsSync,useProjects,useQuickChat,useTasks,useTerminalSessions,useTheme,useToast,useUsageData,useViewState}.test.{ts,tsx}",