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 && }