Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 4x 25x 25x 4x 25x | // src/test/test-utils.tsx
import { ReactElement, ReactNode } from 'react';
import { render, RenderOptions } from '@testing-library/react';
import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { getThemeByName } from '../src/theme'; // adjust path as needed
import { SnackbarProvider } from '../src/contexts/SnackbarContext';
const theme = getThemeByName('light');
interface WrapperProps {
children: ReactNode;
}
function AllTheProviders({ children }: WrapperProps) {
// Create a new QueryClient for each test to ensure isolation
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false, // Disable retries in tests
},
},
});
return (
<QueryClientProvider client={queryClient}>
<SnackbarProvider>
<StyledEngineProvider injectFirst>
<ThemeProvider theme={theme}>
<CssBaseline />
{children}
</ThemeProvider>
</StyledEngineProvider>
</SnackbarProvider>
</QueryClientProvider>
);
}
const customRender = (
ui: ReactElement,
options?: Omit<RenderOptions, 'wrapper'>
) => render(ui, { wrapper: AllTheProviders, ...options });
// Re-export everything
export * from '@testing-library/react';
// Override render method
export { customRender as render }; |