diff --git a/src/components/MetricsPage.test.tsx b/src/components/MetricsPage.test.tsx index b92cae8..f775303 100644 --- a/src/components/MetricsPage.test.tsx +++ b/src/components/MetricsPage.test.tsx @@ -106,11 +106,13 @@ describe('MetricsPage', () => { vi.clearAllMocks(); }); - it('shows loader when ctxLoading=true', () => { + it('shows loader when ctxLoading=true but heading is visible immediately', () => { vi.mocked(useIntelGpuContext).mockReturnValue(makeContext({ loading: true })); // fetchGpuMetrics should never be called in loading state vi.mocked(fetchGpuMetrics).mockResolvedValue(null); render(); + // Heading renders immediately, loader appears below it while waiting for context + expect(screen.getByText('Intel GPU — Metrics')).toBeInTheDocument(); expect(screen.getByTestId('loader')).toHaveTextContent('Loading Intel GPU data...'); }); diff --git a/src/components/MetricsPage.tsx b/src/components/MetricsPage.tsx index 1493590..607bd45 100644 --- a/src/components/MetricsPage.tsx +++ b/src/components/MetricsPage.tsx @@ -230,10 +230,6 @@ export default function MetricsPage() { }; }, [ctxLoading, fetchSeq]); - if (ctxLoading) { - return ; - } - return ( <>
+ {ctxLoading && } + {fetching && !metrics && }