/ 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  });