diff --git a/web/app/components/header/account-dropdown/index.spec.tsx b/web/app/components/header/account-dropdown/index.spec.tsx
index a954351267..65399af36d 100644
--- a/web/app/components/header/account-dropdown/index.spec.tsx
+++ b/web/app/components/header/account-dropdown/index.spec.tsx
@@ -65,6 +65,7 @@ vi.mock('@/context/i18n', () => ({
const { mockConfig, mockEnv } = vi.hoisted(() => ({
mockConfig: {
IS_CLOUD_EDITION: false,
+ ZENDESK_WIDGET_KEY: '',
},
mockEnv: {
env: {
@@ -74,6 +75,7 @@ const { mockConfig, mockEnv } = vi.hoisted(() => ({
}))
vi.mock('@/config', () => ({
get IS_CLOUD_EDITION() { return mockConfig.IS_CLOUD_EDITION },
+ get ZENDESK_WIDGET_KEY() { return mockConfig.ZENDESK_WIDGET_KEY },
IS_DEV: false,
IS_CE_EDITION: false,
}))
diff --git a/web/app/components/header/account-dropdown/support.spec.tsx b/web/app/components/header/account-dropdown/support.spec.tsx
index b30a290ea5..90bcb9f3ec 100644
--- a/web/app/components/header/account-dropdown/support.spec.tsx
+++ b/web/app/components/header/account-dropdown/support.spec.tsx
@@ -1,6 +1,7 @@
import type { AppContextValue } from '@/context/app-context'
import { fireEvent, render, screen } from '@testing-library/react'
+import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '@/app/components/base/ui/dropdown-menu'
import { Plan } from '@/app/components/billing/type'
import { useAppContext } from '@/context/app-context'
import { baseProviderContextValue, useProviderContext } from '@/context/provider-context'
@@ -93,10 +94,21 @@ describe('Support', () => {
})
})
+ const renderSupport = () => {
+ return render(
+ {}}>
+ open
+
+
+
+ ,
+ )
+ }
+
describe('Rendering', () => {
it('should render support menu trigger', () => {
// Act
- render()
+ renderSupport()
// Assert
expect(screen.getByText('common.userProfile.support')).toBeInTheDocument()
@@ -104,8 +116,8 @@ describe('Support', () => {
it('should show forum and community links when opened', () => {
// Act
- render()
- fireEvent.click(screen.getByRole('button'))
+ renderSupport()
+ fireEvent.click(screen.getByText('common.userProfile.support'))
// Assert
expect(screen.getByText('common.userProfile.forum')).toBeInTheDocument()
@@ -116,8 +128,8 @@ describe('Support', () => {
describe('Plan-based Channels', () => {
it('should show "Contact Us" when ZENDESK_WIDGET_KEY is present', () => {
// Act
- render()
- fireEvent.click(screen.getByRole('button'))
+ renderSupport()
+ fireEvent.click(screen.getByText('common.userProfile.support'))
// Assert
expect(screen.getByText('common.userProfile.contactUs')).toBeInTheDocument()
@@ -134,8 +146,8 @@ describe('Support', () => {
})
// Act
- render()
- fireEvent.click(screen.getByRole('button'))
+ renderSupport()
+ fireEvent.click(screen.getByText('common.userProfile.support'))
// Assert
expect(screen.queryByText('common.userProfile.contactUs')).not.toBeInTheDocument()
@@ -147,8 +159,8 @@ describe('Support', () => {
mockZendeskKey.value = ''
// Act
- render()
- fireEvent.click(screen.getByRole('button'))
+ renderSupport()
+ fireEvent.click(screen.getByText('common.userProfile.support'))
// Assert
expect(screen.getByText('common.userProfile.emailSupport')).toBeInTheDocument()
@@ -159,8 +171,8 @@ describe('Support', () => {
describe('Interactions and Links', () => {
it('should call toggleZendeskWindow and closeAccountDropdown when "Contact Us" is clicked', () => {
// Act
- render()
- fireEvent.click(screen.getByRole('button'))
+ renderSupport()
+ fireEvent.click(screen.getByText('common.userProfile.support'))
fireEvent.click(screen.getByText('common.userProfile.contactUs'))
// Assert
@@ -170,8 +182,8 @@ describe('Support', () => {
it('should have correct forum and community links', () => {
// Act
- render()
- fireEvent.click(screen.getByRole('button'))
+ renderSupport()
+ fireEvent.click(screen.getByText('common.userProfile.support'))
// Assert
const forumLink = screen.getByText('common.userProfile.forum').closest('a')
diff --git a/web/app/components/header/account-dropdown/support.tsx b/web/app/components/header/account-dropdown/support.tsx
index 9ee5d03862..e6519d7ff2 100644
--- a/web/app/components/header/account-dropdown/support.tsx
+++ b/web/app/components/header/account-dropdown/support.tsx
@@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'
import { DropdownMenuGroup, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger } from '@/app/components/base/ui/dropdown-menu'
import { toggleZendeskWindow } from '@/app/components/base/zendesk/utils'
import { Plan } from '@/app/components/billing/type'
-import * as config from '@/config'
+import { ZENDESK_WIDGET_KEY } from '@/config'
import { useAppContext } from '@/context/app-context'
import { useProviderContext } from '@/context/provider-context'
import { cn } from '@/utils/classnames'
@@ -48,8 +48,7 @@ export default function Support({ closeAccountDropdown }: SupportProps) {
const { plan } = useProviderContext()
const { userProfile, langGeniusVersionInfo } = useAppContext()
const hasDedicatedChannel = plan.type !== Plan.sandbox
- const zendeskWidgetKey = 'ZENDESK_WIDGET_KEY' in config ? config.ZENDESK_WIDGET_KEY : ''
- const hasZendeskWidget = !!zendeskWidgetKey?.trim()
+ const hasZendeskWidget = !!ZENDESK_WIDGET_KEY?.trim()
return (