Skip to content

Commit

Permalink
Fix shared ui tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mayank1513 committed Jun 13, 2024
1 parent a97d162 commit 70a2236
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/new-bugs-divide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"nextjs-darkmode": patch
---

Fix: FOUC
2 changes: 1 addition & 1 deletion packages/shared/vitest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default defineConfig({
test: {
environment: "jsdom",
globals: true,
setupFiles: [],
setupFiles: ["vitest.setup.ts"],
coverage: {
include: ["src/**"],
exclude: ["src/**/index.ts", "src/**/declaration.d.ts"],
Expand Down
37 changes: 37 additions & 0 deletions packages/shared/vitest.setup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { vi } from "vitest";

const mediaListeners: (() => void)[] = [];
// mock matchMedia
Object.defineProperty(window, "matchMedia", {
writable: true,
value: vi.fn().mockImplementation((query: string) => ({
matches: query.includes(window.media),
media: query,
onchange() {
this.matches = query.includes(window.media);
mediaListeners.forEach(listener => listener());
},
addEventListener: (_: string, listener: () => void) => mediaListeners.push(listener),
removeEventListener: (_: string, listener: () => void) =>
mediaListeners.splice(mediaListeners.indexOf(listener), 1),
dispatchEvent: vi.fn(),
})),
});

declare global {
interface Window {
media: "dark" | "light";
}
// skipcq: JS-0102
var cookies: Record<string, { value: string }>; // eslint-disable-line no-var -- let is not supported in defining global due to block scope
}
Object.defineProperty(window, "media", {
writable: true,
value: "dark",
});

globalThis.cookies = {};

vi.mock("next/headers", () => ({
cookies: () => ({ get: (cookieName: string) => globalThis.cookies[cookieName] }),
}));

0 comments on commit 70a2236

Please sign in to comment.