phase 16: vitest + MSW frontend tests, CI integration
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { type ReactNode } from 'react';
|
||||
import { render, type RenderOptions } from '@testing-library/react';
|
||||
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
||||
import { RouterProvider, createMemoryHistory } from '@tanstack/react-router';
|
||||
import { router } from '../routes';
|
||||
|
||||
function createTestQueryClient() {
|
||||
return new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: { retry: false, gcTime: 0 },
|
||||
mutations: { retry: false },
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function renderWithProviders(
|
||||
ui: ReactNode,
|
||||
options?: RenderOptions,
|
||||
) {
|
||||
const queryClient = createTestQueryClient();
|
||||
function Wrapper({ children }: { children: ReactNode }) {
|
||||
return (
|
||||
<QueryClientProvider client={queryClient}>
|
||||
{children}
|
||||
</QueryClientProvider>
|
||||
);
|
||||
}
|
||||
return render(ui, { wrapper: Wrapper, ...options });
|
||||
}
|
||||
|
||||
export function renderRoute(path: string) {
|
||||
const queryClient = createTestQueryClient();
|
||||
const history = createMemoryHistory({ initialEntries: [path] });
|
||||
const testRouter = Object.assign(router, {});
|
||||
testRouter.update({ history });
|
||||
|
||||
return render(
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<RouterProvider router={testRouter} />
|
||||
</QueryClientProvider>,
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user