// Baseline Chrome extension API mock. Individual tests may rebuild // global.chrome to control specifics (e.g. runtime.id presence). global.chrome = { storage: { local: { get: vi.fn((keys, cb) => cb({})), set: vi.fn((data, cb) => cb && cb()), remove: vi.fn((keys, cb) => cb && cb()), }, session: { get: vi.fn((keys, cb) => cb({})), set: vi.fn((data, cb) => cb && cb()), }, sync: { get: vi.fn((keys, cb) => cb({})), set: vi.fn((data, cb) => cb && cb()), }, }, runtime: { id: 'test-extension-id', sendMessage: vi.fn(), onMessage: { addListener: vi.fn(), }, onInstalled: { addListener: vi.fn(), }, openOptionsPage: vi.fn(), }, contextMenus: { create: vi.fn(), removeAll: vi.fn((cb) => cb && cb()), onClicked: { addListener: vi.fn(), }, }, tabs: { sendMessage: vi.fn(), }, } as any;