diff --git a/src/composables/node/useWatchWidget.test.ts b/src/composables/node/useWatchWidget.test.ts index 61363a3f1..d85e7d3e6 100644 --- a/src/composables/node/useWatchWidget.test.ts +++ b/src/composables/node/useWatchWidget.test.ts @@ -7,7 +7,7 @@ import type { LGraphNode } from '@/lib/litegraph/src/litegraph' // Mock useChainCallback vi.mock('@/composables/functional/useChainCallback', () => ({ useChainCallback: vi.fn((original, newCallback) => { - return function (this: any, ...args: any[]) { + return function (this: unknown, ...args: unknown[]) { original?.call(this, ...args) newCallback.call(this, ...args) } @@ -18,8 +18,8 @@ describe('useComputedWithWidgetWatch', () => { const createMockNode = ( widgets: Array<{ name: string - value: any - callback?: (...args: any[]) => void + value: unknown + callback?: (...args: unknown[]) => void }> = [] ) => { const mockNode = { diff --git a/src/lib/litegraph/src/LGraphNodeProperties.test.ts b/src/lib/litegraph/src/LGraphNodeProperties.test.ts index aca6fe391..bd78917c3 100644 --- a/src/lib/litegraph/src/LGraphNodeProperties.test.ts +++ b/src/lib/litegraph/src/LGraphNodeProperties.test.ts @@ -1,22 +1,23 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import { LGraphNodeProperties } from '@/lib/litegraph/src/LGraphNodeProperties' +import type { LGraph, LGraphNode } from '@/lib/litegraph/src/litegraph' describe('LGraphNodeProperties', () => { - let mockNode: any - let mockGraph: any + let mockNode: LGraphNode + let mockGraph: LGraph beforeEach(() => { mockGraph = { trigger: vi.fn() - } + } as unknown as LGraph mockNode = { id: 123, title: 'Test Node', flags: {}, graph: mockGraph - } + } as unknown as LGraphNode }) describe('property tracking', () => { diff --git a/src/platform/updates/common/versionCompatibilityStore.test.ts b/src/platform/updates/common/versionCompatibilityStore.test.ts index d6e9c15af..d88e15f1a 100644 --- a/src/platform/updates/common/versionCompatibilityStore.test.ts +++ b/src/platform/updates/common/versionCompatibilityStore.test.ts @@ -30,8 +30,8 @@ vi.mock('@vueuse/core', () => ({ describe('useVersionCompatibilityStore', () => { let store: ReturnType - let mockSystemStatsStore: any - let mockSettingStore: any + let mockSystemStatsStore: unknown + let mockSettingStore: unknown beforeEach(() => { setActivePinia(createPinia()) @@ -49,8 +49,12 @@ describe('useVersionCompatibilityStore', () => { get: vi.fn(() => false) // Default to warnings enabled } - vi.mocked(useSystemStatsStore).mockReturnValue(mockSystemStatsStore) - vi.mocked(useSettingStore).mockReturnValue(mockSettingStore) + vi.mocked(useSystemStatsStore).mockReturnValue( + mockSystemStatsStore as ReturnType + ) + vi.mocked(useSettingStore).mockReturnValue( + mockSettingStore as ReturnType + ) store = useVersionCompatibilityStore() }) @@ -61,13 +65,17 @@ describe('useVersionCompatibilityStore', () => { describe('version compatibility detection', () => { it('should detect frontend is outdated when required version is higher', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -79,13 +87,17 @@ describe('useVersionCompatibilityStore', () => { it('should not warn when frontend is newer than backend', async () => { // Frontend: 1.24.0, Backend: 1.23.0, Required: 1.23.0 // Frontend meets required version, no warning needed - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.23.0', required_frontend_version: '1.23.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -95,13 +107,17 @@ describe('useVersionCompatibilityStore', () => { }) it('should not detect mismatch when versions are compatible', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.24.0', required_frontend_version: '1.24.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -111,13 +127,17 @@ describe('useVersionCompatibilityStore', () => { }) it('should handle missing version information gracefully', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '', required_frontend_version: '' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -127,13 +147,17 @@ describe('useVersionCompatibilityStore', () => { }) it('should not detect mismatch when versions are not valid semver', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '080e6d4af809a46852d1c4b7ed85f06e8a3a72be', // git hash required_frontend_version: 'not-a-version' // invalid semver format } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -144,13 +168,17 @@ describe('useVersionCompatibilityStore', () => { it('should not warn when frontend exceeds required version', async () => { // Frontend: 1.24.0 (from mock config) - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.22.0', // Backend is older required_frontend_version: '1.23.0' // Required is 1.23.0, frontend 1.24.0 meets this } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -164,13 +192,17 @@ describe('useVersionCompatibilityStore', () => { it('should show warning when there is a version mismatch and not dismissed', async () => { // No dismissals in storage mockDismissalStorage.value = {} - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -184,13 +216,17 @@ describe('useVersionCompatibilityStore', () => { '1.24.0-1.25.0-1.25.0': futureTime } - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -198,13 +234,17 @@ describe('useVersionCompatibilityStore', () => { }) it('should not show warning when no version mismatch', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.24.0', required_frontend_version: '1.24.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -213,35 +253,45 @@ describe('useVersionCompatibilityStore', () => { it('should not show warning when disabled via setting', async () => { // Enable the disable setting - mockSettingStore.get.mockReturnValue(true) + ;( + mockSettingStore as { get: ReturnType } + ).get.mockReturnValue(true) // Set up version mismatch that would normally show warning - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() expect(store.shouldShowWarning).toBe(false) - expect(mockSettingStore.get).toHaveBeenCalledWith( - 'Comfy.VersionCompatibility.DisableWarnings' - ) + expect( + (mockSettingStore as { get: ReturnType }).get + ).toHaveBeenCalledWith('Comfy.VersionCompatibility.DisableWarnings') }) }) describe('warning messages', () => { it('should generate outdated message when frontend is outdated', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -253,13 +303,17 @@ describe('useVersionCompatibilityStore', () => { }) it('should return null when no mismatch', async () => { - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.24.0', required_frontend_version: '1.24.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() @@ -272,13 +326,17 @@ describe('useVersionCompatibilityStore', () => { const mockNow = 1000000 vi.spyOn(Date, 'now').mockReturnValue(mockNow) - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.checkVersionCompatibility() store.dismissWarning() @@ -295,13 +353,17 @@ describe('useVersionCompatibilityStore', () => { '1.24.0-1.25.0-1.25.0': futureTime } - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.initialize() @@ -314,13 +376,17 @@ describe('useVersionCompatibilityStore', () => { '1.24.0-1.25.0-1.25.0': pastTime } - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.25.0', required_frontend_version: '1.25.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.initialize() @@ -334,13 +400,17 @@ describe('useVersionCompatibilityStore', () => { '1.24.0-1.25.0-1.25.0': futureTime // Different version was dismissed } - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.26.0', required_frontend_version: '1.26.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.initialize() @@ -351,8 +421,12 @@ describe('useVersionCompatibilityStore', () => { describe('initialization', () => { it('should fetch system stats if not available', async () => { const { until } = await import('@vueuse/core') - mockSystemStatsStore.systemStats = null - mockSystemStatsStore.isInitialized = false + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = null + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = false await store.initialize() @@ -361,13 +435,17 @@ describe('useVersionCompatibilityStore', () => { it('should not fetch system stats if already available', async () => { const { until } = await import('@vueuse/core') - mockSystemStatsStore.systemStats = { + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).systemStats = { system: { comfyui_version: '1.24.0', required_frontend_version: '1.24.0' } } - mockSystemStatsStore.isInitialized = true + ;( + mockSystemStatsStore as { systemStats: unknown; isInitialized: boolean } + ).isInitialized = true await store.initialize() diff --git a/src/platform/workflow/management/stores/workflowStore.test.ts b/src/platform/workflow/management/stores/workflowStore.test.ts index 5b66b2777..7f65ee39f 100644 --- a/src/platform/workflow/management/stores/workflowStore.test.ts +++ b/src/platform/workflow/management/stores/workflowStore.test.ts @@ -364,10 +364,11 @@ describe('useWorkflowStore', () => { // Mock super.rename vi.spyOn(Object.getPrototypeOf(workflow), 'rename').mockImplementation( - async function (this: any, newPath: string) { - this.path = newPath - return this - } as any + async function (this: unknown, ...args: unknown[]) { + const newPath = args[0] as string + ;(this as typeof workflow).path = newPath + return this as typeof workflow + } ) // Perform rename @@ -387,10 +388,11 @@ describe('useWorkflowStore', () => { // Mock super.rename vi.spyOn(Object.getPrototypeOf(workflow), 'rename').mockImplementation( - async function (this: any, newPath: string) { - this.path = newPath - return this - } as any + async function (this: unknown, ...args: unknown[]) { + const newPath = args[0] as string + ;(this as typeof workflow).path = newPath + return this as typeof workflow + } ) // Perform rename diff --git a/src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.test.ts b/src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.test.ts index ef6d15359..2adea433e 100644 --- a/src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.test.ts +++ b/src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.test.ts @@ -498,7 +498,7 @@ describe('useRemoteWidget', () => { }) it('should handle rapid cache clearing during fetch', async () => { - let resolvePromise: (value: any) => void + let resolvePromise: (value: { data: unknown }) => void const delayedPromise = new Promise((resolve) => { resolvePromise = resolve }) @@ -519,7 +519,7 @@ describe('useRemoteWidget', () => { }) it('should handle widget destroyed during fetch', async () => { - let resolvePromise: (value: any) => void + let resolvePromise: (value: { data: unknown }) => void const delayedPromise = new Promise((resolve) => { resolvePromise = resolve }) diff --git a/src/services/gateway/registrySearchGateway.test.ts b/src/services/gateway/registrySearchGateway.test.ts index e51b164d1..511a5a978 100644 --- a/src/services/gateway/registrySearchGateway.test.ts +++ b/src/services/gateway/registrySearchGateway.test.ts @@ -9,8 +9,8 @@ vi.mock('@/services/providers/algoliaSearchProvider') vi.mock('@/services/providers/registrySearchProvider') describe('useRegistrySearchGateway', () => { - let consoleWarnSpy: any - let consoleInfoSpy: any + let consoleWarnSpy: ReturnType + let consoleInfoSpy: ReturnType beforeEach(() => { vi.clearAllMocks() diff --git a/src/utils/colorUtil.test.ts b/src/utils/colorUtil.test.ts index 0f21d5d15..36d845897 100644 --- a/src/utils/colorUtil.test.ts +++ b/src/utils/colorUtil.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it, vi } from 'vitest' +import type { ColorAdjustOptions } from '@/utils/colorUtil' import { adjustColor, hexToRgb, @@ -22,13 +23,16 @@ interface ColorTestCase { type ColorFormat = 'hex' | 'rgb' | 'rgba' | 'hsl' | 'hsla' vi.mock('es-toolkit/compat', () => ({ - memoize: (fn: any) => fn + memoize: unknown>(fn: T) => fn })) const targetOpacity = 0.5 const targetLightness = 0.5 -const assertColorVariationsMatch = (variations: string[], adjustment: any) => { +const assertColorVariationsMatch = ( + variations: string[], + adjustment: ColorAdjustOptions +) => { for (let i = 0; i < variations.length - 1; i++) { expect(adjustColor(variations[i], adjustment)).toBe( adjustColor(variations[i + 1], adjustment)