import '@testing-library/jest-dom/vitest' import { createRequire } from 'node:module' import { styleSheetSerializer } from 'jest-styled-components/serializer' import { expect, vi } from 'vitest' expect.addSnapshotSerializer(styleSheetSerializer) // Node.js >= 25 removed `buffer.SlowBuffer`, but some transitive deps still assume it exists. const require = createRequire(import.meta.url) const bufferModule = require('buffer') if (!bufferModule.SlowBuffer) { bufferModule.SlowBuffer = bufferModule.Buffer } // Mock LoggerService globally for renderer tests vi.mock('@logger', async () => { const { MockRendererLoggerService, mockRendererLoggerService } = await import('./__mocks__/RendererLoggerService') return { LoggerService: MockRendererLoggerService, loggerService: mockRendererLoggerService } }) // Mock uuid globally for renderer tests let uuidCounter = 0 vi.mock('uuid', () => ({ v4: () => 'test-uuid-' + ++uuidCounter })) vi.mock('axios', () => { const defaultAxiosMock = { get: vi.fn().mockResolvedValue({ data: {} }), // Mocking axios GET request post: vi.fn().mockResolvedValue({ data: {} }) // Mocking axios POST request // You can add other axios methods like put, delete etc. as needed } const isAxiosError = (error: unknown): error is { isAxiosError?: boolean } => Boolean((error as { isAxiosError?: boolean } | undefined)?.isAxiosError) return { default: defaultAxiosMock, isAxiosError } }) vi.stubGlobal('electron', { ipcRenderer: { on: vi.fn(), send: vi.fn() } }) vi.stubGlobal('api', { file: { read: vi.fn().mockResolvedValue('[]'), writeWithId: vi.fn().mockResolvedValue(undefined) } }) // Node.js >= 25 exposes a non-standard `localStorage`/`sessionStorage` global by default. // In jsdom tests we want the standard Web Storage API from the jsdom window. const createStorageMock = () => { const data = new Map() return { getItem: (key: string) => data.get(key) ?? null, setItem: (key: string, value: string) => { data.set(key, String(value)) }, removeItem: (key: string) => { data.delete(key) }, clear: () => { data.clear() }, key: (index: number) => Array.from(data.keys())[index] ?? null, get length() { return data.size } } } if (typeof globalThis.localStorage?.getItem !== 'function') { const storage = typeof window?.localStorage?.getItem === 'function' ? window.localStorage : createStorageMock() vi.stubGlobal('localStorage', storage) } if (typeof globalThis.sessionStorage?.getItem !== 'function') { const storage = typeof window?.sessionStorage?.getItem === 'function' ? window.sessionStorage : createStorageMock() vi.stubGlobal('sessionStorage', storage) }