test(web): wrap test harness in MetadataProvider to match production

main.tsx wraps the app in DemoProvider > MetadataProvider, but the
app.test.tsx render helpers only wrapped with DemoProvider. Since
e490d91 added useMetadata() to Sidebar, the routed app threw
"useMetadataContext must be used within MetadataProvider" in tests;
the error boundary swallowed the tree and the first-load assertion
failed. CI has been red on main since that commit.

Mirror the production provider nesting in both render sites.
This commit is contained in:
Offending Commit
2026-05-28 13:43:31 -05:00
parent e490d911fc
commit 1094904a03

View File

@@ -3,6 +3,7 @@ import { createMemoryHistory, createRouter, RouterProvider } from "@tanstack/rea
import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import { DemoProvider } from "@/context/DemoContext";
import { MetadataProvider } from "@/context/MetadataContext";
import { useDemo } from "@/hooks/useDemo";
import { routeTree } from "@/routeTree.gen";
@@ -15,8 +16,10 @@ function renderAt(initialPath: string) {
return render(
<QueryClientProvider client={qc}>
<DemoProvider>
{/* biome-ignore lint/suspicious/noExplicitAny: test router type */}
<RouterProvider router={router as any} />
<MetadataProvider>
{/* biome-ignore lint/suspicious/noExplicitAny: test router type */}
<RouterProvider router={router as any} />
</MetadataProvider>
</DemoProvider>
</QueryClientProvider>,
);
@@ -56,9 +59,11 @@ describe("Sidebar/useDemo availability across routes", () => {
render(
<QueryClientProvider client={qc}>
<DemoProvider>
{/* biome-ignore lint/suspicious/noExplicitAny: test router type */}
<RouterProvider router={router as any} />
<DemoConsumer />
<MetadataProvider>
{/* biome-ignore lint/suspicious/noExplicitAny: test router type */}
<RouterProvider router={router as any} />
<DemoConsumer />
</MetadataProvider>
</DemoProvider>
</QueryClientProvider>,
);