// @ts-nocheck import test from 'node:test'; import assert from 'node:assert/strict'; import { SessionCommands } from '../src/commands/session'; import { JobManager } from '../src/classes/JobManager'; import { makeChromeMock } from './chrome-mock'; function makeSessionCommands() { return new SessionCommands({ jobs: new JobManager() }); } test('clients.list uses Firefox runtime.getBrowserInfo when available', async () => { const originalChrome = globalThis.chrome; const originalBrowser = globalThis.browser; const originalNavigator = globalThis.navigator; const chromeMock = makeChromeMock(); try { delete globalThis.chrome; globalThis.browser = { ...chromeMock, runtime: { getManifest: () => ({ version: '0.15.1' }), getBrowserInfo: async () => ({ name: 'Firefox', vendor: 'Mozilla', version: '149.0', buildID: 'test' }), }, }; Object.defineProperty(globalThis, 'navigator', { value: { platform: 'test-platform', userAgent: 'Mozilla/5.0 Firefox/149.0' }, configurable: true, }); const clients = await makeSessionCommands().commands['clients.list']({}); assert.equal(clients[0].name, 'Firefox'); assert.equal(clients[0].version, '149.0'); assert.equal(clients[0].extensionVersion, '0.15.1'); } finally { if (originalChrome === undefined) delete globalThis.chrome; else globalThis.chrome = originalChrome; if (originalBrowser === undefined) delete globalThis.browser; else globalThis.browser = originalBrowser; Object.defineProperty(globalThis, 'navigator', { value: originalNavigator, configurable: true, }); } }); test('clients.list falls back to Chromium user-agent when getBrowserInfo is missing', async () => { const originalChrome = globalThis.chrome; const originalBrowser = globalThis.browser; const originalNavigator = globalThis.navigator; const chromeMock = makeChromeMock(); try { delete globalThis.browser; globalThis.chrome = { ...chromeMock, runtime: { getManifest: () => ({ version: '0.15.1' }), }, }; Object.defineProperty(globalThis, 'navigator', { value: { platform: 'test-platform', userAgent: 'Mozilla/5.0 Chrome/149.0.0.0 Safari/537.36' }, configurable: true, }); const clients = await makeSessionCommands().commands['clients.list']({}); assert.equal(clients[0].name, 'Chrome'); assert.equal(clients[0].version, '149.0.0.0'); } finally { if (originalChrome === undefined) delete globalThis.chrome; else globalThis.chrome = originalChrome; if (originalBrowser === undefined) delete globalThis.browser; else globalThis.browser = originalBrowser; Object.defineProperty(globalThis, 'navigator', { value: originalNavigator, configurable: true, }); } });