mirror of
https://github.com/stablyai/orca.git
synced 2026-10-12 08:02:37 +00:00
fix(browser): detect Comet in its Windows vendor directory (#25983)
Co-authored-by: Masaki Yamamoto <nnasakick@gmail.com>
This commit is contained in:
@@ -69,7 +69,7 @@ export const CHROMIUM_BROWSERS: ChromiumBrowserDef[] = [
|
||||
keychainService: 'Comet Safe Storage',
|
||||
keychainAccount: 'Comet',
|
||||
macRoot: 'Comet',
|
||||
winRoot: 'Comet/User Data'
|
||||
winRoot: 'Perplexity/Comet/User Data'
|
||||
// linuxRoot intentionally omitted — Comet does not ship a Linux build as of 2026-05-15
|
||||
},
|
||||
{
|
||||
|
||||
@@ -222,6 +222,66 @@ describe('detectInstalledBrowsers — Comet', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('detectInstalledBrowsers — Comet on Windows', () => {
|
||||
const originalPlatform = process.platform
|
||||
const originalLocalAppData = process.env.LOCALAPPDATA
|
||||
|
||||
const localAppData = 'C:\\Users\\test\\AppData\\Local'
|
||||
const cometRoot = `${slashPath(localAppData)}/Perplexity/Comet/User Data`
|
||||
|
||||
beforeEach(() => {
|
||||
vi.resetModules()
|
||||
Object.defineProperty(process, 'platform', { value: 'win32' })
|
||||
process.env.LOCALAPPDATA = localAppData
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
Object.defineProperty(process, 'platform', { value: originalPlatform })
|
||||
if (originalLocalAppData === undefined) {
|
||||
delete process.env.LOCALAPPDATA
|
||||
} else {
|
||||
process.env.LOCALAPPDATA = originalLocalAppData
|
||||
}
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
function mockCometInstallAt(rootPath: string): void {
|
||||
vi.doMock('node:fs', async () => {
|
||||
const actual = await vi.importActual<typeof fsModule>('node:fs')
|
||||
return {
|
||||
...actual,
|
||||
existsSync: (p: string) =>
|
||||
slashPath(p) === `${rootPath}/Local State` ||
|
||||
slashPath(p) === `${rootPath}/Default/Network/Cookies`,
|
||||
readFileSync: (p: string) => {
|
||||
if (typeof p === 'string' && slashPath(p) === `${rootPath}/Local State`) {
|
||||
return JSON.stringify({ profile: { info_cache: { Default: { name: 'Default' } } } })
|
||||
}
|
||||
throw new Error(`Unexpected fixture read: ${p}`)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
it('detects Comet under the Perplexity vendor directory', async () => {
|
||||
mockCometInstallAt(cometRoot)
|
||||
|
||||
const { detectInstalledBrowsers } = await import('./browser-cookie-import')
|
||||
const comet = detectInstalledBrowsers().find((b) => b.family === 'comet')
|
||||
|
||||
expect(comet).toBeDefined()
|
||||
expect(slashPath(comet?.cookiesPath ?? '')).toBe(`${cometRoot}/Default/Network/Cookies`)
|
||||
})
|
||||
|
||||
it('does not detect a Comet data directory sitting directly under LOCALAPPDATA', async () => {
|
||||
mockCometInstallAt(`${slashPath(localAppData)}/Comet/User Data`)
|
||||
|
||||
const { detectInstalledBrowsers } = await import('./browser-cookie-import')
|
||||
|
||||
expect(detectInstalledBrowsers().find((b) => b.family === 'comet')).toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
||||
describe('BROWSER_FAMILY_LABELS — Comet', () => {
|
||||
it('maps the comet family key to the user-facing label "Comet"', () => {
|
||||
expect(BROWSER_FAMILY_LABELS.comet).toBe('Comet')
|
||||
|
||||
Reference in New Issue
Block a user