From cb0ee9ed90716a074cc8d54e6548d99aae0ea356 Mon Sep 17 00:00:00 2001 From: Douwe Osinga Date: Mon, 26 Jan 2026 10:51:10 -0500 Subject: [PATCH] Merge and fix --- ui/desktop/src/test/setup.ts | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/ui/desktop/src/test/setup.ts b/ui/desktop/src/test/setup.ts index 4716c7ab2c..e2df9dd66f 100644 --- a/ui/desktop/src/test/setup.ts +++ b/ui/desktop/src/test/setup.ts @@ -2,6 +2,24 @@ import '@testing-library/jest-dom'; import { vi, afterEach } from 'vitest'; import { cleanup } from '@testing-library/react'; +// Mock Electron modules before any imports +vi.mock('electron', () => ({ + app: { + getPath: vi.fn((name: string) => { + if (name === 'userData') return '/tmp/test-user-data'; + if (name === 'temp') return '/tmp'; + if (name === 'home') return '/tmp/home'; + return '/tmp'; + }), + }, + ipcRenderer: { + invoke: vi.fn(), + send: vi.fn(), + on: vi.fn(), + off: vi.fn(), + }, +})); + // This is the standard setup to ensure that React Testing Library's // automatic cleanup runs after each test. afterEach(() => { @@ -23,3 +41,37 @@ Object.assign(navigator, { writeText: vi.fn(() => Promise.resolve()), }, }); + +// Mock window.electron for renderer process +Object.defineProperty(window, 'electron', { + writable: true, + value: { + platform: 'darwin', + getSettings: vi.fn(() => + Promise.resolve({ + envToggles: { + GOOSE_SERVER__MEMORY: false, + GOOSE_SERVER__COMPUTER_CONTROLLER: false, + }, + showMenuBarIcon: true, + showDockIcon: true, + enableWakelock: false, + spellcheckEnabled: true, + keyboardShortcuts: { + focusWindow: 'CommandOrControl+Alt+G', + quickLauncher: 'CommandOrControl+Alt+Shift+G', + newChat: 'CommandOrControl+T', + newChatWindow: 'CommandOrControl+N', + openDirectory: 'CommandOrControl+O', + settings: 'CommandOrControl+,', + find: 'CommandOrControl+F', + findNext: 'CommandOrControl+G', + findPrevious: 'CommandOrControl+Shift+G', + alwaysOnTop: 'CommandOrControl+Shift+T', + }, + }) + ), + saveSettings: vi.fn(() => Promise.resolve(true)), + showMessageBox: vi.fn(() => Promise.resolve({ response: 0 })), + }, +});