diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-06-03 11:58:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-03 11:58:21 +0200 |
| commit | 6d0a9504406524957b351aee748d9f5c8a84c299 (patch) | |
| tree | 1b859015ef5e52b2c7c4e7521f428fb2215df21d /tests/utils/index.tsx | |
| parent | a8af53c118478e6ed68975c32cc1202b7c7b798e (diff) | |
| parent | fc7a6e98268d34f313d79c817e38c09ad6cde960 (diff) | |
test: add end to end tests (#19)
In addition to Jest tests, I configure Cypress to test some pages and features.
I also fix some Jest errors due to images import.
Diffstat (limited to 'tests/utils/index.tsx')
| -rw-r--r-- | tests/utils/index.tsx | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/utils/index.tsx b/tests/utils/index.tsx new file mode 100644 index 0000000..1bcea8e --- /dev/null +++ b/tests/utils/index.tsx @@ -0,0 +1,43 @@ +import { render, RenderOptions } from '@testing-library/react'; +import { ThemeProvider } from 'next-themes'; +import { FC, ReactElement, ReactNode } from 'react'; +import { IntlProvider } from 'react-intl'; + +type ProvidersConfig = { + children: ReactNode; + locale?: 'en' | 'fr'; +}; + +type CustomRenderOptions = { + providers?: ProvidersConfig; + testingLibrary?: Omit<RenderOptions, 'wrapper'>; +}; + +/** + * Return a component wrapped with Intl and Theme Provider. + * + * @returns A component wrapped Intl and Theme providers. + */ +const AllTheProviders: FC<ProvidersConfig> = ({ children, locale = 'en' }) => { + return ( + <IntlProvider locale={locale}> + <ThemeProvider>{children}</ThemeProvider> + </IntlProvider> + ); +}; + +/** + * Render a component with all the providers. + * + * @param {ReactElement} ui - A React component. + * @param {CustomRenderOptions} [options] - An object of render options and providers options. + * @returns A React component wrapped with all the providers. + */ +const customRender = (ui: ReactElement, options?: CustomRenderOptions) => + render(ui, { + wrapper: (props) => <AllTheProviders {...props} {...options?.providers} />, + ...options?.testingLibrary, + }); + +export * from '@testing-library/react'; +export { customRender as render }; |
