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()}
>