import React, { PropsWithChildren, ReactElement } from 'react'; import { render } from '@testing-library/react'; import { Provider } from 'react-redux'; import setupStore from './store'; import type { AppStore, RootState } from './store'; import type { RenderOptions } from '@testing-library/react'; interface ExtendedRenderOptions extends Omit { preloadedState?: Partial; store?: AppStore; } export function renderWithProviders( ui: ReactElement, extendedRenderOptions: ExtendedRenderOptions = {} ) { const { preloadedState = {}, store = setupStore(preloadedState), ...renderOptions } = extendedRenderOptions; const Wrapper = ({ children }: PropsWithChildren) => ( {children} ); return { store, ...render(ui, { wrapper: Wrapper, ...renderOptions }) }; }