From 823ca6870fd46bc979ee073ee0731516a0607daa Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Mon, 26 Oct 2026 16:27:42 -0700 Subject: [PATCH] fix(settings): show cookie import as available before skill setup (#34097) --- ...r-cookie-import-google-disclosure.test.tsx | 1 - .../settings/BrowserUseCookieImportStep.tsx | 5 +- .../settings/BrowserUsePane.test.tsx | 61 +++++++++++++++++++ .../components/settings/BrowserUsePane.tsx | 2 - 4 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 src/renderer/src/components/settings/BrowserUsePane.test.tsx diff --git a/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx b/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx index fff5a3ed82b..428a3fd0564 100644 --- a/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx +++ b/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx @@ -86,7 +86,6 @@ describe('cookie-import Google disclosure footer', () => { ) diff --git a/src/renderer/src/components/settings/BrowserUseCookieImportStep.tsx b/src/renderer/src/components/settings/BrowserUseCookieImportStep.tsx index 50e40c0d658..d290c84749c 100644 --- a/src/renderer/src/components/settings/BrowserUseCookieImportStep.tsx +++ b/src/renderer/src/components/settings/BrowserUseCookieImportStep.tsx @@ -1,7 +1,6 @@ import { Import, Loader2 } from 'lucide-react' import { toast } from 'sonner' import { emitBrowserCookieImportToast } from '@/lib/browser-cookie-import-toast' -import { cn } from '@/lib/utils' import { Button } from '../ui/button' import { BrowserCookieImportDisclosure } from '../BrowserCookieImportDisclosure' import { BrowserCookieImportMachineNotice } from '../BrowserCookieImportMachineNotice' @@ -25,7 +24,6 @@ import { translate } from '@/i18n/i18n' type BrowserUseCookieImportStepProps = { cookiesImported: boolean isImportingDefault: boolean - disabled: boolean sourceLabel: string | null onConfigureMoreBrowsers?: () => void } @@ -33,7 +31,6 @@ type BrowserUseCookieImportStepProps = { export function BrowserUseCookieImportStep({ cookiesImported, isImportingDefault, - disabled, sourceLabel, onConfigureMoreBrowsers }: BrowserUseCookieImportStepProps): React.JSX.Element { @@ -96,7 +93,7 @@ export function BrowserUseCookieImportStep({ 'Import cookies from Chrome, Edge, or other browsers so agents can reuse your logins.' )} keywords={getBrowserUsePaneSearchEntries()[1].keywords} - className={cn('rounded-xl border border-border/60 bg-card/50 p-4', disabled && 'opacity-60')} + className="rounded-xl border border-border/60 bg-card/50 p-4" >
void + browserSessionImportState: { profileId: string; status: 'importing' } | null + detectedBrowsers: [] + fetchDetectedBrowsers: () => void + } => ({ + settingsSearchQuery: '', + browserSessionProfiles: [], + fetchBrowserSessionProfiles: vi.fn(), + browserSessionImportState: null, + detectedBrowsers: [], + fetchDetectedBrowsers: vi.fn() + }) +) + +vi.mock('../../store', () => ({ + useAppStore: (selector: (value: typeof state) => unknown) => selector(state) +})) +vi.mock('@/hooks/useActiveProjectSkillRuntime', () => ({ + useActiveProjectSkillRuntime: () => ({ installDisabledReason: null }) +})) +vi.mock('@/hooks/useInstalledAgentSkills', () => ({ + GLOBAL_AGENT_SKILL_SOURCE_KINDS: ['home'], + useInstalledAgentSkill: () => ({ + installed: false, + loading: false, + error: null, + refresh: vi.fn() + }) +})) +vi.mock('./BrowserUseSkillStep', () => ({ BrowserUseSkillStep: () => null })) +vi.mock('./BrowserUseExamples', () => ({ BrowserUseExamples: () => null })) + +afterEach(() => { + cleanup() + localStorage.removeItem(BROWSER_USE_ENABLED_STORAGE_KEY) + state.browserSessionImportState = null +}) + +it('shows cookie import as available before skill setup and disables it during import', () => { + localStorage.setItem(BROWSER_USE_ENABLED_STORAGE_KEY, '1') + const { rerender } = render() + const importButton = screen.getByRole('button', { name: 'Import' }) + + expect(importButton.hasAttribute('disabled')).toBe(false) + expect(importButton.closest('.opacity-60')).toBeNull() + + state.browserSessionImportState = { profileId: 'default', status: 'importing' } + rerender() + expect(screen.getByRole('button', { name: 'Import' }).hasAttribute('disabled')).toBe(true) +}) diff --git a/src/renderer/src/components/settings/BrowserUsePane.tsx b/src/renderer/src/components/settings/BrowserUsePane.tsx index a070e470862..b7a57a5e475 100644 --- a/src/renderer/src/components/settings/BrowserUsePane.tsx +++ b/src/renderer/src/components/settings/BrowserUsePane.tsx @@ -79,7 +79,6 @@ export function BrowserUseSetup({ const steps = [skillDetected, cookiesImported] const completedCount = steps.filter(Boolean).length const skillDisabled = Boolean(activeSkillRuntime.installDisabledReason) - const cookieImportDisabled = !cookiesImported && !skillDetected const sourceLabel = defaultProfile?.source ? `${BROWSER_FAMILY_LABELS[defaultProfile.source.browserFamily] ?? defaultProfile.source.browserFamily}${defaultProfile.source.profileName ? ` (${defaultProfile.source.profileName})` : ''}` @@ -175,7 +174,6 @@ export function BrowserUseSetup({