({
),
}))
vi.mock('@/app/components/explore/create-app-modal', () => ({
- __esModule: true,
default: () =>
,
}))
vi.mock('@/app/components/base/toast', () => ({
diff --git a/web/app/components/app/create-app-modal/index.spec.tsx b/web/app/components/app/create-app-modal/index.spec.tsx
index 02c00ed3fd..cb8f4db67f 100644
--- a/web/app/components/app/create-app-modal/index.spec.tsx
+++ b/web/app/components/app/create-app-modal/index.spec.tsx
@@ -44,7 +44,6 @@ vi.mock('@/context/i18n', () => ({
useDocLink: () => () => '/guides',
}))
vi.mock('@/hooks/use-theme', () => ({
- __esModule: true,
default: () => ({ theme: 'light' }),
}))
diff --git a/web/app/components/app/duplicate-modal/index.spec.tsx b/web/app/components/app/duplicate-modal/index.spec.tsx
index f214f8e343..ef12646571 100644
--- a/web/app/components/app/duplicate-modal/index.spec.tsx
+++ b/web/app/components/app/duplicate-modal/index.spec.tsx
@@ -9,7 +9,6 @@ import DuplicateAppModal from './index'
const appsFullRenderSpy = vi.fn()
vi.mock('@/app/components/billing/apps-full-in-dialog', () => ({
- __esModule: true,
default: ({ loc }: { loc: string }) => {
appsFullRenderSpy(loc)
return
AppsFull
diff --git a/web/app/components/app/log-annotation/index.spec.tsx b/web/app/components/app/log-annotation/index.spec.tsx
index 064092f20e..c7c654e870 100644
--- a/web/app/components/app/log-annotation/index.spec.tsx
+++ b/web/app/components/app/log-annotation/index.spec.tsx
@@ -14,21 +14,18 @@ vi.mock('next/navigation', () => ({
}))
vi.mock('@/app/components/app/annotation', () => ({
- __esModule: true,
default: ({ appDetail }: { appDetail: App }) => (
),
}))
vi.mock('@/app/components/app/log', () => ({
- __esModule: true,
default: ({ appDetail }: { appDetail: App }) => (
),
}))
vi.mock('@/app/components/app/workflow-log', () => ({
- __esModule: true,
default: ({ appDetail }: { appDetail: App }) => (
),
diff --git a/web/app/components/app/overview/embedded/index.spec.tsx b/web/app/components/app/overview/embedded/index.spec.tsx
index 36f2e980c4..9dca304bf4 100644
--- a/web/app/components/app/overview/embedded/index.spec.tsx
+++ b/web/app/components/app/overview/embedded/index.spec.tsx
@@ -8,7 +8,6 @@ import { afterAll, afterEach, describe, expect, it, vi } from 'vitest'
import Embedded from './index'
vi.mock('./style.module.css', () => ({
- __esModule: true,
default: {
option: 'option',
active: 'active',
@@ -37,7 +36,6 @@ const mockUseAppContext = vi.fn(() => ({
}))
vi.mock('copy-to-clipboard', () => ({
- __esModule: true,
default: vi.fn(),
}))
vi.mock('@/app/components/base/chat/embedded-chatbot/theme/theme-context', () => ({
diff --git a/web/app/components/app/switch-app-modal/index.spec.tsx b/web/app/components/app/switch-app-modal/index.spec.tsx
index abb8dcca2a..9ff6801243 100644
--- a/web/app/components/app/switch-app-modal/index.spec.tsx
+++ b/web/app/components/app/switch-app-modal/index.spec.tsx
@@ -72,7 +72,6 @@ vi.mock('@/context/provider-context', () => ({
}))
vi.mock('@/app/components/billing/apps-full-in-dialog', () => ({
- __esModule: true,
default: ({ loc }: { loc: string }) => (
AppsFull
diff --git a/web/app/components/app/text-generate/saved-items/index.spec.tsx b/web/app/components/app/text-generate/saved-items/index.spec.tsx
index b83c812c19..f04a37bded 100644
--- a/web/app/components/app/text-generate/saved-items/index.spec.tsx
+++ b/web/app/components/app/text-generate/saved-items/index.spec.tsx
@@ -8,7 +8,6 @@ import Toast from '@/app/components/base/toast'
import SavedItems from './index'
vi.mock('copy-to-clipboard', () => ({
- __esModule: true,
default: vi.fn(),
}))
vi.mock('next/navigation', () => ({
diff --git a/web/app/components/app/workflow-log/detail.spec.tsx b/web/app/components/app/workflow-log/detail.spec.tsx
index 69d4dc5da4..1ed7193d42 100644
--- a/web/app/components/app/workflow-log/detail.spec.tsx
+++ b/web/app/components/app/workflow-log/detail.spec.tsx
@@ -27,7 +27,6 @@ vi.mock('next/navigation', () => ({
// Mock the Run component as it has complex dependencies
vi.mock('@/app/components/workflow/run', () => ({
- __esModule: true,
default: ({ runDetailUrl, tracingListUrl }: { runDetailUrl: string, tracingListUrl: string }) => (
{runDetailUrl}
diff --git a/web/app/components/app/workflow-log/index.spec.tsx b/web/app/components/app/workflow-log/index.spec.tsx
index d689758b30..f8e3f16e25 100644
--- a/web/app/components/app/workflow-log/index.spec.tsx
+++ b/web/app/components/app/workflow-log/index.spec.tsx
@@ -54,13 +54,11 @@ vi.mock('next/navigation', () => ({
}))
vi.mock('next/link', () => ({
- __esModule: true,
default: ({ children, href }: { children: React.ReactNode, href: string }) =>
{children},
}))
// Mock the Run component to avoid complex dependencies
vi.mock('@/app/components/workflow/run', () => ({
- __esModule: true,
default: ({ runDetailUrl, tracingListUrl }: { runDetailUrl: string, tracingListUrl: string }) => (
{runDetailUrl}
@@ -75,7 +73,6 @@ vi.mock('@/app/components/base/amplitude/utils', () => ({
}))
vi.mock('@/hooks/use-theme', () => ({
- __esModule: true,
default: () => {
return { theme: 'light' }
},
diff --git a/web/app/components/app/workflow-log/list.spec.tsx b/web/app/components/app/workflow-log/list.spec.tsx
index c2753fbd53..760d222692 100644
--- a/web/app/components/app/workflow-log/list.spec.tsx
+++ b/web/app/components/app/workflow-log/list.spec.tsx
@@ -31,7 +31,6 @@ vi.mock('next/navigation', () => ({
// Mock useTimestamp hook
vi.mock('@/hooks/use-timestamp', () => ({
- __esModule: true,
default: () => ({
formatTime: (timestamp: number, _format: string) => `formatted-${timestamp}`,
}),
@@ -39,7 +38,6 @@ vi.mock('@/hooks/use-timestamp', () => ({
// Mock useBreakpoints hook
vi.mock('@/hooks/use-breakpoints', () => ({
- __esModule: true,
default: () => 'pc', // Return desktop by default
MediaType: {
mobile: 'mobile',
@@ -49,7 +47,6 @@ vi.mock('@/hooks/use-breakpoints', () => ({
// Mock the Run component
vi.mock('@/app/components/workflow/run', () => ({
- __esModule: true,
default: ({ runDetailUrl, tracingListUrl }: { runDetailUrl: string, tracingListUrl: string }) => (
{runDetailUrl}
@@ -67,13 +64,11 @@ vi.mock('@/app/components/workflow/context', () => ({
// Mock BlockIcon
vi.mock('@/app/components/workflow/block-icon', () => ({
- __esModule: true,
default: () =>
BlockIcon
,
}))
// Mock useTheme
vi.mock('@/hooks/use-theme', () => ({
- __esModule: true,
default: () => {
return { theme: 'light' }
},
diff --git a/web/app/components/app/workflow-log/trigger-by-display.spec.tsx b/web/app/components/app/workflow-log/trigger-by-display.spec.tsx
index d57a581dbd..69665064f5 100644
--- a/web/app/components/app/workflow-log/trigger-by-display.spec.tsx
+++ b/web/app/components/app/workflow-log/trigger-by-display.spec.tsx
@@ -17,13 +17,11 @@ import TriggerByDisplay from './trigger-by-display'
let mockTheme = Theme.light
vi.mock('@/hooks/use-theme', () => ({
- __esModule: true,
default: () => ({ theme: mockTheme }),
}))
// Mock BlockIcon as it has complex dependencies
vi.mock('@/app/components/workflow/block-icon', () => ({
- __esModule: true,
default: ({ type, toolIcon }: { type: string, toolIcon?: string }) => (
BlockIcon
diff --git a/web/app/components/apps/app-card.spec.tsx b/web/app/components/apps/app-card.spec.tsx
index b2afbabcb0..a9012dbbe8 100644
--- a/web/app/components/apps/app-card.spec.tsx
+++ b/web/app/components/apps/app-card.spec.tsx
@@ -188,13 +188,11 @@ vi.mock('@/app/components/base/popover', () => {
// Tooltip uses portals - minimal mock preserving popup content as title attribute
vi.mock('@/app/components/base/tooltip', () => ({
- __esModule: true,
default: ({ children, popupContent }: any) => React.createElement('div', { title: popupContent }, children),
}))
// TagSelector has API dependency (service/tag) - mock for isolated testing
vi.mock('@/app/components/base/tag-management/selector', () => ({
- __esModule: true,
default: ({ tags }: any) => {
return React.createElement('div', { 'aria-label': 'tag-selector' }, tags?.map((tag: any) => React.createElement('span', { key: tag.id }, tag.name)))
},
diff --git a/web/app/components/apps/index.spec.tsx b/web/app/components/apps/index.spec.tsx
index f518c5e039..c3dc39955d 100644
--- a/web/app/components/apps/index.spec.tsx
+++ b/web/app/components/apps/index.spec.tsx
@@ -10,7 +10,6 @@ let educationInitCalls: number = 0
// Mock useDocumentTitle hook
vi.mock('@/hooks/use-document-title', () => ({
- __esModule: true,
default: (title: string) => {
documentTitleCalls.push(title)
},
@@ -25,7 +24,6 @@ vi.mock('@/app/education-apply/hooks', () => ({
// Mock List component
vi.mock('./list', () => ({
- __esModule: true,
default: () => {
return React.createElement('div', { 'data-testid': 'apps-list' }, 'Apps List')
},
diff --git a/web/app/components/apps/list.spec.tsx b/web/app/components/apps/list.spec.tsx
index cde601d61f..e5854f68b4 100644
--- a/web/app/components/apps/list.spec.tsx
+++ b/web/app/components/apps/list.spec.tsx
@@ -39,7 +39,6 @@ const mockQueryState = {
isCreatedByMe: false,
}
vi.mock('./hooks/use-apps-query-state', () => ({
- __esModule: true,
default: () => ({
query: mockQueryState,
setQuery: mockSetQuery,
@@ -144,7 +143,6 @@ vi.mock('@/service/tag', () => ({
// Store TagFilter onChange callback for testing
let mockTagFilterOnChange: ((value: string[]) => void) | null = null
vi.mock('@/app/components/base/tag-management/filter', () => ({
- __esModule: true,
default: ({ onChange }: { onChange: (value: string[]) => void }) => {
mockTagFilterOnChange = onChange
return React.createElement('div', { 'data-testid': 'tag-filter' }, 'common.tag.placeholder')
@@ -200,7 +198,6 @@ vi.mock('next/dynamic', () => ({
* Each child component (AppCard, NewAppCard, Empty, Footer) has its own dedicated tests.
*/
vi.mock('./app-card', () => ({
- __esModule: true,
default: ({ app }: any) => {
return React.createElement('div', { 'data-testid': `app-card-${app.id}`, 'role': 'article' }, app.name)
},
@@ -213,14 +210,12 @@ vi.mock('./new-app-card', () => ({
}))
vi.mock('./empty', () => ({
- __esModule: true,
default: () => {
return React.createElement('div', { 'data-testid': 'empty-state', 'role': 'status' }, 'No apps found')
},
}))
vi.mock('./footer', () => ({
- __esModule: true,
default: () => {
return React.createElement('footer', { 'data-testid': 'footer', 'role': 'contentinfo' }, 'Footer')
},
diff --git a/web/app/components/base/chat/chat/answer/basic-content.tsx b/web/app/components/base/chat/chat/answer/basic-content.tsx
index ed8f83d6a9..cda2dd6ffb 100644
--- a/web/app/components/base/chat/chat/answer/basic-content.tsx
+++ b/web/app/components/base/chat/chat/answer/basic-content.tsx
@@ -18,12 +18,19 @@ const BasicContent: FC
= ({
if (annotation?.logAnnotation)
return
+ // Preserve Windows UNC paths and similar backslash-heavy strings by
+ // wrapping them in inline code so Markdown renders backslashes verbatim.
+ let displayContent = content
+ if (typeof content === 'string' && /^\\\\\S.*/.test(content) && !/^`.*`$/.test(content)) {
+ displayContent = `\`${content}\``
+ }
+
return (
)
}
diff --git a/web/app/components/base/chat/chat/answer/index.tsx b/web/app/components/base/chat/chat/answer/index.tsx
index 04b884388e..7420b84ede 100644
--- a/web/app/components/base/chat/chat/answer/index.tsx
+++ b/web/app/components/base/chat/chat/answer/index.tsx
@@ -111,7 +111,7 @@ const Answer: FC = ({
}
}, [switchSibling, item.prevSibling, item.nextSibling])
- const contentIsEmpty = content.trim() === ''
+ const contentIsEmpty = typeof content === 'string' && content.trim() === ''
return (
diff --git a/web/app/components/base/file-uploader/utils.spec.ts b/web/app/components/base/file-uploader/utils.spec.ts
index 606f1b7ce7..de167a8c25 100644
--- a/web/app/components/base/file-uploader/utils.spec.ts
+++ b/web/app/components/base/file-uploader/utils.spec.ts
@@ -21,7 +21,6 @@ import {
} from './utils'
vi.mock('mime', () => ({
- __esModule: true,
default: {
getAllExtensions: vi.fn(),
},
diff --git a/web/app/components/billing/annotation-full/index.spec.tsx b/web/app/components/billing/annotation-full/index.spec.tsx
index 3201eacc49..2090605692 100644
--- a/web/app/components/billing/annotation-full/index.spec.tsx
+++ b/web/app/components/billing/annotation-full/index.spec.tsx
@@ -2,7 +2,6 @@ import { render, screen } from '@testing-library/react'
import AnnotationFull from './index'
vi.mock('./usage', () => ({
- __esModule: true,
default: (props: { className?: string }) => {
return (
@@ -13,7 +12,6 @@ vi.mock('./usage', () => ({
}))
vi.mock('../upgrade-btn', () => ({
- __esModule: true,
default: (props: { loc?: string }) => {
return (