import { initializeIcons } from "@fluentui/react"; import { configure } from "enzyme"; import Adapter from "enzyme-adapter-react-16"; import "jest-canvas-mock"; import enableHooks from "jest-react-hooks-shallow"; import { TextDecoder, TextEncoder } from "util"; configure({ adapter: new Adapter() }); initializeIcons(); if (typeof window.URL.createObjectURL === "undefined") { Object.defineProperty(window.URL, "createObjectURL", { value: () => {} }); } enableHooks(jest, { dontMockByDefault: true }); const localStorageMock = (function () { let store: { [key: string]: string } = {}; return { getItem: function (key: string) { return store[key] || null; }, setItem: function (key: string, value: string) { store[key] = value.toString(); }, removeItem: function (key: string) { delete store[key]; }, clear: function () { store = {}; }, }; })(); Object.defineProperty(window, "localStorage", { value: localStorageMock, }); // TODO Remove when jquery and documentdbclient SDK are removed (window).$ = (window).jQuery = require("jquery"); (global).$ = (global).$.jQuery = require("jquery"); require("jquery-ui-dist/jquery-ui"); (global).TextEncoder = TextEncoder; (global).TextDecoder = TextDecoder; (global).ResizeObserver = jest.fn().mockImplementation(() => ({ observe: jest.fn(), unobserve: jest.fn(), disconnect: jest.fn(), })); // The test environment Data Explorer uses does not have crypto.subtle implementation (global).crypto.subtle = {}; // Mock Performance API for scenario monitoring const performanceMock = { ...(typeof performance !== "undefined" ? performance : {}), mark: jest.fn(), measure: jest.fn(), clearMarks: jest.fn(), clearMeasures: jest.fn(), getEntriesByName: jest.fn().mockReturnValue([]), getEntriesByType: jest.fn().mockReturnValue([]), now: jest.fn(() => Date.now()), timeOrigin: Date.now(), }; // Assign to both global and window Object.defineProperty(global, "performance", { writable: true, configurable: true, value: performanceMock, }); Object.defineProperty(window, "performance", { writable: true, configurable: true, value: performanceMock, }); // Mock fetch API - minimal mock to prevent errors (global).fetch = jest.fn(() => Promise.resolve({ ok: true, status: 200, json: () => Promise.resolve({}), text: () => Promise.resolve(""), }), );