import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { render, screen } from "@testing-library/react"; import { createMemoryRouter, RouterProvider } from "react-router"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { setActiveSelection, setRegisteredBackends, } from "#/api/backend-registry/active-store"; import { __resetHealthStoreForTests, recordBackendFailure, } from "#/api/backend-registry/health-store"; import { MAX_CONSECUTIVE_FAILURES } from "#/api/backend-registry/health-storage"; import { CLOUD_BACKEND_API_KEY_OR_NETWORK_ERROR } from "#/hooks/query/use-backends-health"; import type { Backend } from "#/api/backend-registry/types"; import { ActiveBackendProvider } from "#/contexts/active-backend-context"; import { ONBOARDING_COMPLETED_STORAGE_KEY } from "#/components/features/onboarding/use-onboarding-completion"; import App from "#/root"; // The recovery screen lazy-loads the Manage Backends modal; stub it so the test // asserts the routing decision rather than the modal's internals. vi.mock("#/components/features/backends/manage-backends-modal", () => ({ ManageBackendsModal: () =>
, })); const cloudBackend: Backend = { id: "cloud-ohe", name: "Adorable Enterprise", host: "https://app.adorable.build.one", apiKey: "oh-cloud-key", kind: "cloud", }; function renderApp() { const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } }, }); const router = createMemoryRouter( [ { path: "/", Component: App, children: [ { index: true, element: }, ], }, ], { initialEntries: ["/"] }, ); return render(