From 3e66969b2dd227248f1f26e27116d0673b5e555f Mon Sep 17 00:00:00 2001 From: Guilherme de Freitas Date: Wed, 5 Mar 2025 09:32:16 +0000 Subject: [PATCH 1/2] Fix flicker in SSR when using dark mode --- src/__test-utils__/helpers.tsx | 12 ++++ src/components/Footer.test.tsx | 34 +++++------ src/components/Footer.tsx | 4 +- .../ImageColorSchemeSwitch.test.tsx | 57 +++---------------- src/components/ImageColorSchemeSwitch.tsx | 46 +++++++-------- src/components/Navbar.test.tsx | 11 ++-- src/components/Navbar.tsx | 6 +- src/components/User.test.tsx | 25 ++++---- src/components/User.tsx | 2 +- src/themes/DiamondTheme.ts | 4 ++ 10 files changed, 85 insertions(+), 116 deletions(-) create mode 100644 src/__test-utils__/helpers.tsx diff --git a/src/__test-utils__/helpers.tsx b/src/__test-utils__/helpers.tsx new file mode 100644 index 0000000..6204809 --- /dev/null +++ b/src/__test-utils__/helpers.tsx @@ -0,0 +1,12 @@ +import { ThemeProvider } from "@mui/material/styles"; +import { DiamondTheme } from "../themes/DiamondTheme"; +import { render, RenderResult } from "@testing-library/react"; +import { ThemeProviderProps } from "@mui/material/styles/ThemeProvider"; + +export const renderWithProviders = (ui: React.ReactNode, themeOptions?: Omit): RenderResult => { + const Wrapper = ({ children }: { children: React.ReactNode }) => { + return {children}; + }; + + return render(ui, { wrapper: Wrapper }); +}; diff --git a/src/components/Footer.test.tsx b/src/components/Footer.test.tsx index ba3a16d..71d23e4 100644 --- a/src/components/Footer.test.tsx +++ b/src/components/Footer.test.tsx @@ -1,18 +1,18 @@ -import { render, screen, waitFor } from "@testing-library/react"; +import { screen, waitFor } from "@testing-library/react"; import "@testing-library/jest-dom"; import dlsLogo from "../public/generic/logo-short.svg"; import { Footer, FooterLink, FooterLinks } from "./Footer"; import { ImageColorSchemeSwitch } from "./ImageColorSchemeSwitch"; -import { ThemeProvider } from "../themes/ThemeProvider"; +import { renderWithProviders } from "../__test-utils__/helpers"; jest.mock("./ImageColorSchemeSwitch"); // @ts-expect-error: doesn't find mockImplementation outside of testing. -ImageColorSchemeSwitch.mockImplementation(() => alt); +ImageColorSchemeSwitch.mockImplementation(() => alt); describe("Footer", () => { test("Should render logo only", () => { - render(