diff --git a/src/components/TopMenuSection.vue b/src/components/TopMenuSection.vue
index 7ce1bb67e..6eafdc215 100644
--- a/src/components/TopMenuSection.vue
+++ b/src/components/TopMenuSection.vue
@@ -13,10 +13,8 @@
class="[&:not(:has(*>*:not(:empty)))]:hidden"
>
-
-
-
-
+
+
diff --git a/tests-ui/tests/components/TopMenuSection.test.ts b/tests-ui/tests/components/TopMenuSection.test.ts
new file mode 100644
index 000000000..5d92a0cc9
--- /dev/null
+++ b/tests-ui/tests/components/TopMenuSection.test.ts
@@ -0,0 +1,83 @@
+import { createTestingPinia } from '@pinia/testing'
+import { mount } from '@vue/test-utils'
+import { beforeEach, describe, expect, it, vi } from 'vitest'
+import { computed } from 'vue'
+
+import TopMenuSection from '@/components/TopMenuSection.vue'
+import CurrentUserButton from '@/components/topbar/CurrentUserButton.vue'
+import LoginButton from '@/components/topbar/LoginButton.vue'
+import { isElectron } from '@/utils/envUtil'
+
+const mockData = vi.hoisted(() => ({ isLoggedIn: false }))
+
+vi.mock('@/composables/auth/useCurrentUser', () => ({
+ useCurrentUser: () => {
+ return {
+ isLoggedIn: computed(() => mockData.isLoggedIn)
+ }
+ }
+}))
+
+vi.mock('@/utils/envUtil')
+vi.mock('@/stores/firebaseAuthStore', () => ({
+ useFirebaseAuthStore: vi.fn(() => ({
+ currentUser: null,
+ loading: false
+ }))
+}))
+
+function createWrapper() {
+ return mount(TopMenuSection, {
+ global: {
+ plugins: [createTestingPinia({ createSpy: vi.fn })],
+ stubs: {
+ SubgraphBreadcrumb: true,
+ CurrentUserButton: true,
+ LoginButton: true
+ }
+ }
+ })
+}
+
+describe('TopMenuSection', () => {
+ beforeEach(() => {
+ vi.resetAllMocks()
+ })
+
+ describe('authentication state', () => {
+ describe('when user is logged in', () => {
+ beforeEach(() => {
+ mockData.isLoggedIn = true
+ })
+
+ it('should display CurrentUserButton and not display LoginButton', () => {
+ const wrapper = createWrapper()
+ expect(wrapper.findComponent(CurrentUserButton).exists()).toBe(true)
+ expect(wrapper.findComponent(LoginButton).exists()).toBe(false)
+ })
+ })
+
+ describe('when user is not logged in', () => {
+ beforeEach(() => {
+ mockData.isLoggedIn = false
+ })
+
+ describe('on desktop platform', () => {
+ it('should display LoginButton and not display CurrentUserButton', () => {
+ vi.mocked(isElectron).mockReturnValue(true)
+ const wrapper = createWrapper()
+ expect(wrapper.findComponent(LoginButton).exists()).toBe(true)
+ expect(wrapper.findComponent(CurrentUserButton).exists()).toBe(false)
+ })
+ })
+
+ describe('on web platform', () => {
+ it('should not display CurrentUserButton and not display LoginButton', () => {
+ const wrapper = createWrapper()
+ expect(wrapper.findComponent(CurrentUserButton).exists()).toBe(false)
+ expect(wrapper.findComponent(LoginButton).exists()).toBe(false)
+ })
+ })
+ })
+ })
+})