diff --git a/web/app/components/base/theme-switcher.tsx b/web/app/components/base/theme-switcher.tsx index 86e24a443c..58da8f4664 100644 --- a/web/app/components/base/theme-switcher.tsx +++ b/web/app/components/base/theme-switcher.tsx @@ -13,44 +13,50 @@ export default function ThemeSwitcher() { return (
-
handleThemeChange('system')} + aria-label="System theme" data-testid="system-theme-container" >
-
+
-
handleThemeChange('light')} + aria-label="Light theme" data-testid="light-theme-container" >
-
+
-
handleThemeChange('dark')} + aria-label="Dark theme" data-testid="dark-theme-container" >
-
+
) } diff --git a/web/app/components/header/account-dropdown/index.spec.tsx b/web/app/components/header/account-dropdown/index.spec.tsx index 60e00868c1..a92f8503ee 100644 --- a/web/app/components/header/account-dropdown/index.spec.tsx +++ b/web/app/components/header/account-dropdown/index.spec.tsx @@ -29,6 +29,10 @@ vi.mock('@/app/components/header/github-star', () => ({ default: () =>
GithubStar
, })) +vi.mock('@/app/components/base/theme-switcher', () => ({ + default: () => , +})) + vi.mock('@/context/app-context', () => ({ useAppContext: vi.fn(), })) @@ -276,6 +280,16 @@ describe('AccountDropdown', () => { // Assert expect(screen.queryByTestId('account-about')).not.toBeInTheDocument() }) + + it('should keep account dropdown open when clicking the theme switcher', () => { + // Act + renderWithRouter() + fireEvent.click(screen.getByRole('button', { name: 'common.account.account' })) + fireEvent.click(screen.getByTestId('theme-switcher-button')) + + // Assert + expect(screen.getByText('common.userProfile.logout')).toBeInTheDocument() + }) }) describe('Branding and Environment', () => { diff --git a/web/app/components/header/account-dropdown/index.tsx b/web/app/components/header/account-dropdown/index.tsx index 4cf1f4efda..c4f1c5699f 100644 --- a/web/app/components/header/account-dropdown/index.tsx +++ b/web/app/components/header/account-dropdown/index.tsx @@ -228,8 +228,8 @@ export default function AppSelector() { )} e.preventDefault()} >