File tree Expand file tree Collapse file tree 3 files changed +43
-1
lines changed
Expand file tree Collapse file tree 3 files changed +43
-1
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ " nextjs-darkmode " : patch
3+ ---
4+
5+ Fix: FOUC
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ export default defineConfig({
88 test : {
99 environment : "jsdom" ,
1010 globals : true ,
11- setupFiles : [ ] ,
11+ setupFiles : [ "vitest.setup.ts" ] ,
1212 coverage : {
1313 include : [ "src/**" ] ,
1414 exclude : [ "src/**/index.ts" , "src/**/declaration.d.ts" ] ,
Original file line number Diff line number Diff line change 1+ import { vi } from "vitest" ;
2+
3+ const mediaListeners : ( ( ) => void ) [ ] = [ ] ;
4+ // mock matchMedia
5+ Object . defineProperty ( window , "matchMedia" , {
6+ writable : true ,
7+ value : vi . fn ( ) . mockImplementation ( ( query : string ) => ( {
8+ matches : query . includes ( window . media ) ,
9+ media : query ,
10+ onchange ( ) {
11+ this . matches = query . includes ( window . media ) ;
12+ mediaListeners . forEach ( listener => listener ( ) ) ;
13+ } ,
14+ addEventListener : ( _ : string , listener : ( ) => void ) => mediaListeners . push ( listener ) ,
15+ removeEventListener : ( _ : string , listener : ( ) => void ) =>
16+ mediaListeners . splice ( mediaListeners . indexOf ( listener ) , 1 ) ,
17+ dispatchEvent : vi . fn ( ) ,
18+ } ) ) ,
19+ } ) ;
20+
21+ declare global {
22+ interface Window {
23+ media : "dark" | "light" ;
24+ }
25+ // skipcq: JS-0102
26+ var cookies : Record < string , { value : string } > ; // eslint-disable-line no-var -- let is not supported in defining global due to block scope
27+ }
28+ Object . defineProperty ( window , "media" , {
29+ writable : true ,
30+ value : "dark" ,
31+ } ) ;
32+
33+ globalThis . cookies = { } ;
34+
35+ vi . mock ( "next/headers" , ( ) => ( {
36+ cookies : ( ) => ( { get : ( cookieName : string ) => globalThis . cookies [ cookieName ] } ) ,
37+ } ) ) ;
You can’t perform that action at this time.
0 commit comments