mirror of
https://github.com/coder/coder.git
synced 2025-03-14 10:09:57 +00:00
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
/**
|
|
* Necessary for MSW
|
|
*
|
|
* @note The block below contains polyfills for Node.js globals
|
|
* required for Jest to function when running JSDOM tests.
|
|
* These HAVE to be require's and HAVE to be in this exact
|
|
* order, since "undici" depends on the "TextEncoder" global API.
|
|
*
|
|
* Consider migrating to a more modern test runner if
|
|
* you don't want to deal with this.
|
|
*/
|
|
const { TextDecoder, TextEncoder } = require("node:util");
|
|
const { ReadableStream } = require("node:stream/web");
|
|
|
|
Object.defineProperties(globalThis, {
|
|
TextDecoder: { value: TextDecoder },
|
|
TextEncoder: { value: TextEncoder },
|
|
ReadableStream: { value: ReadableStream },
|
|
});
|
|
|
|
const { Blob, File } = require("node:buffer");
|
|
const { fetch, Headers, FormData, Request, Response } = require("undici");
|
|
|
|
Object.defineProperties(globalThis, {
|
|
fetch: { value: fetch, writable: true },
|
|
Blob: { value: Blob },
|
|
File: { value: File },
|
|
Headers: { value: Headers },
|
|
FormData: { value: FormData },
|
|
Request: { value: Request },
|
|
Response: { value: Response },
|
|
matchMedia: {
|
|
value: (query) => ({
|
|
matches: false,
|
|
media: query,
|
|
onchange: null,
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
addEventListener: jest.fn(),
|
|
removeEventListener: jest.fn(),
|
|
dispatchEvent: jest.fn(),
|
|
}),
|
|
},
|
|
});
|