/** * @fileoverview Vitest Global Setup * @description Provides global configuration and polyfills for test environment */ import { vi } from 'vitest'; // Provide IndexedDB globals (jsdom doesn't include them) import 'fake-indexeddb/auto'; // Mock chrome API (basic placeholder) if (typeof globalThis.chrome === 'undefined') { (globalThis as unknown as { chrome: object }).chrome = { runtime: { id: 'test-extension-id', sendMessage: vi.fn().mockResolvedValue(undefined), onMessage: { addListener: vi.fn(), removeListener: vi.fn(), }, connect: vi.fn().mockReturnValue({ onMessage: { addListener: vi.fn(), removeListener: vi.fn() }, onDisconnect: { addListener: vi.fn(), removeListener: vi.fn() }, postMessage: vi.fn(), disconnect: vi.fn(), }), }, storage: { local: { get: vi.fn().mockResolvedValue({}), set: vi.fn().mockResolvedValue(undefined), remove: vi.fn().mockResolvedValue(undefined), }, }, tabs: { query: vi.fn().mockResolvedValue([]), get: vi.fn().mockResolvedValue(null), create: vi.fn().mockResolvedValue({ id: 1 }), update: vi.fn().mockResolvedValue({}), remove: vi.fn().mockResolvedValue(undefined), captureVisibleTab: vi.fn().mockResolvedValue('data:image/png;base64,'), onRemoved: { addListener: vi.fn(), removeListener: vi.fn() }, onCreated: { addListener: vi.fn(), removeListener: vi.fn() }, onUpdated: { addListener: vi.fn(), removeListener: vi.fn() }, }, webRequest: { onBeforeRequest: { addListener: vi.fn(), removeListener: vi.fn() }, onCompleted: { addListener: vi.fn(), removeListener: vi.fn() }, onErrorOccurred: { addListener: vi.fn(), removeListener: vi.fn() }, }, webNavigation: { onCommitted: { addListener: vi.fn(), removeListener: vi.fn() }, onDOMContentLoaded: { addListener: vi.fn(), removeListener: vi.fn() }, onCompleted: { addListener: vi.fn(), removeListener: vi.fn() }, }, debugger: { onEvent: { addListener: vi.fn(), removeListener: vi.fn() }, onDetach: { addListener: vi.fn(), removeListener: vi.fn() }, attach: vi.fn().mockResolvedValue(undefined), detach: vi.fn().mockResolvedValue(undefined), sendCommand: vi.fn().mockResolvedValue({}), }, commands: { onCommand: { addListener: vi.fn(), removeListener: vi.fn() }, }, contextMenus: { create: vi.fn(), remove: vi.fn(), onClicked: { addListener: vi.fn(), removeListener: vi.fn() }, }, }; }