/ setup-test.js
setup-test.js
1 import '@testing-library/jest-dom/vitest'; 2 import { vi } from 'vitest'; 3 4 Object.defineProperty(window, 'matchMedia', { 5 writable: true, 6 value: vi.fn().mockImplementation((query) => ({ 7 matches: false, 8 media: query, 9 onchange: null, 10 addListener: vi.fn(), // deprecated 11 removeListener: vi.fn(), // deprecated 12 addEventListener: vi.fn(), 13 removeEventListener: vi.fn(), 14 dispatchEvent: vi.fn(), 15 })), 16 }); 17 18 class ESBuildAndJSDOMCompatibleTextEncoder extends TextEncoder { 19 constructor() { 20 super(); 21 } 22 23 encode(input) { 24 if (typeof input !== 'string') { 25 throw new TypeError('`input` must be a string'); 26 } 27 28 const decodedURI = decodeURIComponent(encodeURIComponent(input)); 29 const arr = new Uint8Array(decodedURI.length); 30 const chars = decodedURI.split(''); 31 for (let i = 0; i < chars.length; i++) { 32 arr[i] = decodedURI[i].charCodeAt(0); 33 } 34 return arr; 35 } 36 } 37 38 Object.defineProperty(global, 'TextEncoder', { 39 value: ESBuildAndJSDOMCompatibleTextEncoder, 40 writable: true, 41 });