test: use createTestingPinia instead of createPinia (#8376)

Replace \createPinia\ with \createTestingPinia({ stubActions: false })\
from \@pinia/testing\ across 45 test files for proper test isolation.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8376-test-use-createTestingPinia-instead-of-createPinia-2f66d73d36508137a9f0daffcddc86f7)
by [Unito](https://www.unito.io)

Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Alexander Brown
2026-01-28 22:21:38 -08:00
committed by GitHub
parent 3b5d124029
commit 6ce60a11a4
46 changed files with 139 additions and 99 deletions

View File

@@ -18,7 +18,8 @@ Basic setup for testing Pinia stores:
```typescript ```typescript
// Example from: tests-ui/tests/store/workflowStore.test.ts // Example from: tests-ui/tests/store/workflowStore.test.ts
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { useWorkflowStore } from '@/domains/workflow/ui/stores/workflowStore' import { useWorkflowStore } from '@/domains/workflow/ui/stores/workflowStore'
@@ -27,8 +28,8 @@ describe('useWorkflowStore', () => {
let store: ReturnType<typeof useWorkflowStore> let store: ReturnType<typeof useWorkflowStore>
beforeEach(() => { beforeEach(() => {
// Create a fresh pinia and activate it for each test // Create a fresh testing pinia and activate it for each test
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
// Initialize the store // Initialize the store
store = useWorkflowStore() store = useWorkflowStore()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type * as VueI18nModule from 'vue-i18n' import type * as VueI18nModule from 'vue-i18n'
@@ -79,7 +80,7 @@ describe('useSubscriptionCredits', () => {
let authStore: ReturnType<typeof useFirebaseAuthStore> let authStore: ReturnType<typeof useFirebaseAuthStore>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
authStore = useFirebaseAuthStore() authStore = useFirebaseAuthStore()
vi.clearAllMocks() vi.clearAllMocks()
}) })

View File

@@ -1,5 +1,6 @@
import { until } from '@vueuse/core' import { until } from '@vueuse/core'
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { ref } from 'vue' import { ref } from 'vue'
@@ -40,7 +41,7 @@ describe('useVersionCompatibilityStore', () => {
let mockSettingStore: { get: ReturnType<typeof vi.fn> } let mockSettingStore: { get: ReturnType<typeof vi.fn> }
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
// Clear the mock dismissal storage // Clear the mock dismissal storage
mockDismissalStorage.value = {} mockDismissalStorage.value = {}

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick } from 'vue' import { nextTick } from 'vue'
@@ -66,7 +67,7 @@ describe('useWorkflowStore', () => {
} }
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useWorkflowStore() store = useWorkflowStore()
bookmarkStore = useWorkflowBookmarkStore() bookmarkStore = useWorkflowBookmarkStore()
vi.clearAllMocks() vi.clearAllMocks()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type * as I18n from 'vue-i18n' import type * as I18n from 'vue-i18n'
@@ -108,7 +109,7 @@ describe('useWorkflowPersistence', () => {
beforeEach(() => { beforeEach(() => {
vi.useFakeTimers() vi.useFakeTimers()
vi.setSystemTime(new Date('2025-01-01T00:00:00Z')) vi.setSystemTime(new Date('2025-01-01T00:00:00Z'))
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
localStorage.clear() localStorage.clear()
sessionStorage.clear() sessionStorage.clear()
vi.clearAllMocks() vi.clearAllMocks()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { useTeamWorkspaceStore } from './teamWorkspaceStore' import { useTeamWorkspaceStore } from './teamWorkspaceStore'
@@ -111,7 +112,7 @@ const mockMemberWorkspace = {
describe('useTeamWorkspaceStore', () => { describe('useTeamWorkspaceStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
vi.stubGlobal('localStorage', mockLocalStorage) vi.stubGlobal('localStorage', mockLocalStorage)
sessionStorage.clear() sessionStorage.clear()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { useSettingStore } from '@/platform/settings/settingStore' import { useSettingStore } from '@/platform/settings/settingStore'
@@ -15,7 +16,7 @@ vi.mock('@/stores/workspace/colorPaletteStore', () => ({
describe('useMinimapSettings', () => { describe('useMinimapSettings', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
}) })

View File

@@ -1,5 +1,6 @@
import { createTestingPinia } from '@pinia/testing'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia, setActivePinia } from 'pinia' import { setActivePinia } from 'pinia'
import PrimeVue from 'primevue/config' import PrimeVue from 'primevue/config'
import InputText from 'primevue/inputtext' import InputText from 'primevue/inputtext'
import { describe, expect, it, vi } from 'vitest' import { describe, expect, it, vi } from 'vitest'
@@ -29,7 +30,7 @@ const makeNodeData = (overrides: Partial<VueNodeData> = {}): VueNodeData => ({
}) })
const setupMockStores = () => { const setupMockStores = () => {
const pinia = createPinia() const pinia = createTestingPinia({ stubActions: false })
setActivePinia(pinia) setActivePinia(pinia)
const settingStore = useSettingStore() const settingStore = useSettingStore()

View File

@@ -1,6 +1,6 @@
/* eslint-disable vue/one-component-per-file */ /* eslint-disable vue/one-component-per-file */
import { createTestingPinia } from '@pinia/testing'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia } from 'pinia'
import { describe, expect, it } from 'vitest' import { describe, expect, it } from 'vitest'
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import type { PropType } from 'vue' import type { PropType } from 'vue'
@@ -84,7 +84,7 @@ const mountSlots = (nodeData: VueNodeData, readonly = false) => {
}) })
return mount(NodeSlots, { return mount(NodeSlots, {
global: { global: {
plugins: [i18n, createPinia()], plugins: [i18n, createTestingPinia({ stubActions: false })],
stubs: { stubs: {
InputSlot: InputSlotStub, InputSlot: InputSlotStub,
OutputSlot: OutputSlotStub OutputSlot: OutputSlotStub

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { CORE_KEYBINDINGS } from '@/constants/coreKeybindings' import { CORE_KEYBINDINGS } from '@/constants/coreKeybindings'
@@ -30,7 +31,7 @@ describe('keybindingService - Escape key handling', () => {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
// Mock command store execute // Mock command store execute
const commandStore = useCommandStore() const commandStore = useCommandStore()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
@@ -68,7 +69,7 @@ describe('keybindingService - Event Forwarding', () => {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
// Mock command store execute // Mock command store execute
const commandStore = useCommandStore() const commandStore = useCommandStore()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { ref } from 'vue' import { ref } from 'vue'
@@ -83,7 +84,7 @@ describe('useComfyRegistryStore', () => {
} }
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
mockRegistryService = { mockRegistryService = {
isLoading: ref(false), isLoading: ref(false),

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
@@ -11,7 +12,7 @@ const MockComponent = defineComponent({
describe('dialogStore', () => { describe('dialogStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
}) })
describe('priority system', () => { describe('priority system', () => {

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import { useDomWidgetStore } from '@/stores/domWidgetStore' import { useDomWidgetStore } from '@/stores/domWidgetStore'
@@ -30,7 +31,7 @@ describe('domWidgetStore', () => {
let store: ReturnType<typeof useDomWidgetStore> let store: ReturnType<typeof useDomWidgetStore>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useDomWidgetStore() store = useDomWidgetStore()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
@@ -59,7 +60,7 @@ describe('useExecutionStore - NodeLocatorId conversions', () => {
mockNodeIdToNodeLocatorId.mockReset() mockNodeIdToNodeLocatorId.mockReset()
mockNodeLocatorIdToNodeExecutionId.mockReset() mockNodeLocatorIdToNodeExecutionId.mockReset()
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useExecutionStore() store = useExecutionStore()
}) })
@@ -137,7 +138,7 @@ describe('useExecutionStore - Node Error Lookups', () => {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useExecutionStore() store = useExecutionStore()
}) })

View File

@@ -1,6 +1,7 @@
import { FirebaseError } from 'firebase/app' import { FirebaseError } from 'firebase/app'
import * as firebaseAuth from 'firebase/auth' import * as firebaseAuth from 'firebase/auth'
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import * as vuefire from 'vuefire' import * as vuefire from 'vuefire'
@@ -153,7 +154,7 @@ describe('useFirebaseAuthStore', () => {
}) })
// Initialize Pinia // Initialize Pinia
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useFirebaseAuthStore() store = useFirebaseAuthStore()
// Reset and set up getIdToken mock // Reset and set up getIdToken mock
@@ -175,7 +176,7 @@ describe('useFirebaseAuthStore', () => {
vi.mocked(vuefire.useFirebaseAuth).mockReturnValue(mockAuth as any) vi.mocked(vuefire.useFirebaseAuth).mockReturnValue(mockAuth as any)
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useFirebaseAuthStore() store = useFirebaseAuthStore()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { LGraphNode } from '@/lib/litegraph/src/litegraph' import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
@@ -30,7 +31,7 @@ const createMockOutputs = (
describe('imagePreviewStore getPreviewParam', () => { describe('imagePreviewStore getPreviewParam', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
vi.mocked(litegraphUtil.isVideoNode).mockReturnValue(false) vi.mocked(litegraphUtil.isVideoNode).mockReturnValue(false)
}) })

View File

@@ -1,11 +1,12 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import { KeybindingImpl, useKeybindingStore } from '@/stores/keybindingStore' import { KeybindingImpl, useKeybindingStore } from '@/stores/keybindingStore'
describe('useKeybindingStore', () => { describe('useKeybindingStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
}) })
it('should add and retrieve default keybindings', () => { it('should add and retrieve default keybindings', () => {

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { assetService } from '@/platform/assets/services/assetService' import { assetService } from '@/platform/assets/services/assetService'
@@ -89,7 +90,7 @@ describe('useModelStore', () => {
let store: ReturnType<typeof useModelStore> let store: ReturnType<typeof useModelStore>
beforeEach(async () => { beforeEach(async () => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.resetAllMocks() vi.resetAllMocks()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { ComfyNodeDef as ComfyNodeDefV1 } from '@/schemas/nodeDefSchema' import type { ComfyNodeDef as ComfyNodeDefV1 } from '@/schemas/nodeDefSchema'
@@ -82,7 +83,7 @@ vi.mock('@/stores/nodeDefStore', async (importOriginal) => {
describe('useModelToNodeStore', () => { describe('useModelToNodeStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
}) })
@@ -330,7 +331,7 @@ describe('useModelToNodeStore', () => {
it('should not register when nodeDefStore is empty', () => { it('should not register when nodeDefStore is empty', () => {
// Create fresh Pinia for this test to avoid state persistence // Create fresh Pinia for this test to avoid state persistence
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.mocked(useNodeDefStore, { partial: true }).mockReturnValue({ vi.mocked(useNodeDefStore, { partial: true }).mockReturnValue({
nodeDefsByName: {} nodeDefsByName: {}
@@ -355,7 +356,7 @@ describe('useModelToNodeStore', () => {
it('should return empty Record when nodeDefStore is empty', () => { it('should return empty Record when nodeDefStore is empty', () => {
// Create fresh Pinia for this test to avoid state persistence // Create fresh Pinia for this test to avoid state persistence
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.mocked(useNodeDefStore, { partial: true }).mockReturnValue({ vi.mocked(useNodeDefStore, { partial: true }).mockReturnValue({
nodeDefsByName: {} nodeDefsByName: {}

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import type { ComfyNodeDef } from '@/schemas/nodeDefSchema' import type { ComfyNodeDef } from '@/schemas/nodeDefSchema'
@@ -9,7 +10,7 @@ describe('useNodeDefStore', () => {
let store: ReturnType<typeof useNodeDefStore> let store: ReturnType<typeof useNodeDefStore>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useNodeDefStore() store = useNodeDefStore()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { import type {
@@ -71,7 +72,7 @@ describe('TaskItemImpl.loadWorkflow - workflow fetching', () => {
let mockFetchApi: ReturnType<typeof vi.fn> let mockFetchApi: ReturnType<typeof vi.fn>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
mockFetchApi = vi.fn() mockFetchApi = vi.fn()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { JobListItem } from '@/platform/remote/comfyui/jobs/jobTypes' import type { JobListItem } from '@/platform/remote/comfyui/jobs/jobTypes'
@@ -240,7 +241,7 @@ describe('useQueueStore', () => {
let store: ReturnType<typeof useQueueStore> let store: ReturnType<typeof useQueueStore>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useQueueStore() store = useQueueStore()
vi.clearAllMocks() vi.clearAllMocks()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import type { ServerConfig } from '@/constants/serverConfig' import type { ServerConfig } from '@/constants/serverConfig'
@@ -14,7 +15,7 @@ describe('useServerConfigStore', () => {
let store: ReturnType<typeof useServerConfigStore> let store: ReturnType<typeof useServerConfigStore>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useServerConfigStore() store = useServerConfigStore()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick } from 'vue' import { nextTick } from 'vue'
@@ -47,7 +48,7 @@ vi.mock('@/utils/graphTraversalUtil', () => ({
describe('useSubgraphNavigationStore', () => { describe('useSubgraphNavigationStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
}) })
it('should not clear navigation stack when workflow internal state changes', async () => { it('should not clear navigation stack when workflow internal state changes', async () => {

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick } from 'vue' import { nextTick } from 'vue'
@@ -46,7 +47,7 @@ const mockCanvas = app.canvas as any
describe('useSubgraphNavigationStore - Viewport Persistence', () => { describe('useSubgraphNavigationStore - Viewport Persistence', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
// Reset canvas state // Reset canvas state
mockCanvas.ds.scale = 1 mockCanvas.ds.scale = 1
mockCanvas.ds.offset = [0, 0] mockCanvas.ds.offset = [0, 0]

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { ComfyNodeDef as ComfyNodeDefV1 } from '@/schemas/nodeDefSchema' import type { ComfyNodeDef as ComfyNodeDefV1 } from '@/schemas/nodeDefSchema'
@@ -78,7 +79,7 @@ describe('useSubgraphStore', () => {
} }
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useSubgraphStore() store = useSubgraphStore()
vi.clearAllMocks() vi.clearAllMocks()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
@@ -25,7 +26,7 @@ describe('useSystemStatsStore', () => {
beforeEach(() => { beforeEach(() => {
// Mock API to prevent automatic fetch on store creation // Mock API to prevent automatic fetch on store creation
vi.mocked(api.getSystemStats).mockResolvedValue(null as any) vi.mocked(api.getSystemStats).mockResolvedValue(null as any)
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useSystemStatsStore() store = useSystemStatsStore()
vi.clearAllMocks() vi.clearAllMocks()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { useTemplateRankingStore } from '@/stores/templateRankingStore' import { useTemplateRankingStore } from '@/stores/templateRankingStore'
@@ -12,7 +13,7 @@ vi.mock('axios', () => ({
describe('templateRankingStore', () => { describe('templateRankingStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
@@ -19,7 +20,7 @@ describe('useUserFileStore', () => {
let store: ReturnType<typeof useUserFileStore> let store: ReturnType<typeof useUserFileStore>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
store = useUserFileStore() store = useUserFileStore()
vi.resetAllMocks() vi.resetAllMocks()
}) })

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore' import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore'
@@ -53,7 +54,7 @@ vi.mock('@/utils/envUtil', () => ({
describe('useBottomPanelStore', () => { describe('useBottomPanelStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
}) })
it('should initialize with empty panels', () => { it('should initialize with empty panels', () => {

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import { useNodeHelpStore } from '@/stores/workspace/nodeHelpStore' import { useNodeHelpStore } from '@/stores/workspace/nodeHelpStore'
@@ -14,7 +15,7 @@ describe('nodeHelpStore', () => {
} }
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
}) })
it('should initialize with empty state', () => { it('should initialize with empty state', () => {

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import type NodeSearchBoxPopover from '@/components/searchbox/NodeSearchBoxPopover.vue' import type NodeSearchBoxPopover from '@/components/searchbox/NodeSearchBoxPopover.vue'
@@ -34,7 +35,7 @@ function createMockSettingStore(): ReturnType<typeof useSettingStore> {
describe('useSearchBoxStore', () => { describe('useSearchBoxStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.restoreAllMocks() vi.restoreAllMocks()
}) })

View File

@@ -1,5 +1,6 @@
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
@@ -44,11 +45,11 @@ vi.mock(
) )
describe('NodeConflictDialogContent', () => { describe('NodeConflictDialogContent', () => {
let pinia: ReturnType<typeof createPinia> let pinia: ReturnType<typeof createTestingPinia>
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
pinia = createPinia() pinia = createTestingPinia({ stubActions: false })
setActivePinia(pinia) setActivePinia(pinia)
// Reset mock data // Reset mock data
mockConflictData.value = [] mockConflictData.value = []

View File

@@ -1,6 +1,6 @@
import type { VueWrapper } from '@vue/test-utils' import type { VueWrapper } from '@vue/test-utils'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import PrimeVue from 'primevue/config' import PrimeVue from 'primevue/config'
import Tooltip from 'primevue/tooltip' import Tooltip from 'primevue/tooltip'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
@@ -89,7 +89,7 @@ describe('PackVersionBadge', () => {
...props ...props
}, },
global: { global: {
plugins: [PrimeVue, createPinia(), i18n], plugins: [PrimeVue, createTestingPinia({ stubActions: false }), i18n],
directives: { directives: {
tooltip: Tooltip tooltip: Tooltip
}, },

View File

@@ -1,6 +1,6 @@
import type { VueWrapper } from '@vue/test-utils' import type { VueWrapper } from '@vue/test-utils'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import PrimeVue from 'primevue/config' import PrimeVue from 'primevue/config'
import Listbox from 'primevue/listbox' import Listbox from 'primevue/listbox'
@@ -115,7 +115,7 @@ describe('PackVersionSelectorPopover', () => {
...props ...props
}, },
global: { global: {
plugins: [PrimeVue, createPinia(), i18n], plugins: [PrimeVue, createTestingPinia({ stubActions: false }), i18n],
components: { components: {
Listbox, Listbox,
VerifiedIcon, VerifiedIcon,

View File

@@ -1,6 +1,6 @@
import type { VueWrapper } from '@vue/test-utils' import type { VueWrapper } from '@vue/test-utils'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import PrimeVue from 'primevue/config' import PrimeVue from 'primevue/config'
import ToggleSwitch from 'primevue/toggleswitch' import ToggleSwitch from 'primevue/toggleswitch'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
@@ -81,7 +81,7 @@ describe('PackEnableToggle', () => {
...props ...props
}, },
global: { global: {
plugins: [PrimeVue, createPinia(), i18n] plugins: [PrimeVue, createTestingPinia({ stubActions: false }), i18n]
} }
}) })
} }

View File

@@ -1,6 +1,6 @@
import type { VueWrapper } from '@vue/test-utils' import type { VueWrapper } from '@vue/test-utils'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import PrimeVue from 'primevue/config' import PrimeVue from 'primevue/config'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { ref } from 'vue' import { ref } from 'vue'
@@ -73,7 +73,7 @@ describe('PackCardFooter', () => {
...props ...props
}, },
global: { global: {
plugins: [PrimeVue, createPinia(), i18n], plugins: [PrimeVue, createTestingPinia({ stubActions: false }), i18n],
provide: { provide: {
[IsInstallingKey]: ref(false) [IsInstallingKey]: ref(false)
} }

View File

@@ -1,6 +1,6 @@
import type { VueWrapper } from '@vue/test-utils' import type { VueWrapper } from '@vue/test-utils'
import { mount } from '@vue/test-utils' import { mount } from '@vue/test-utils'
import { createPinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import PrimeVue from 'primevue/config' import PrimeVue from 'primevue/config'
import { describe, expect, it } from 'vitest' import { describe, expect, it } from 'vitest'
import { nextTick } from 'vue' import { nextTick } from 'vue'
@@ -32,7 +32,7 @@ describe('GridSkeleton', () => {
...props ...props
}, },
global: { global: {
plugins: [PrimeVue, createPinia(), i18n], plugins: [PrimeVue, createTestingPinia({ stubActions: false }), i18n],
stubs: { stubs: {
PackCardSkeleton: true PackCardSkeleton: true
} }

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { ref } from 'vue' import { ref } from 'vue'
@@ -36,7 +37,7 @@ describe('usePacksSelection', () => {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
const pinia = createPinia() const pinia = createTestingPinia({ stubActions: false })
setActivePinia(pinia) setActivePinia(pinia)
managerStore = useComfyManagerStore() managerStore = useComfyManagerStore()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { ref } from 'vue' import { ref } from 'vue'
@@ -48,7 +49,7 @@ describe('usePacksStatus', () => {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
conflictDetectionStore = useConflictDetectionStore() conflictDetectionStore = useConflictDetectionStore()
}) })

View File

@@ -1,10 +1,11 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
describe('useConflictAcknowledgment', () => { describe('useConflictAcknowledgment', () => {
beforeEach(() => { beforeEach(() => {
// Set up Pinia for each test // Set up Pinia for each test
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
// Clear localStorage before each test // Clear localStorage before each test
localStorage.clear() localStorage.clear()
// Reset modules to ensure fresh state // Reset modules to ensure fresh state

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
@@ -114,7 +115,7 @@ vi.mock('@/workbench/extensions/manager/composables/useManagerState', () => ({
})) }))
describe('useConflictDetection', () => { describe('useConflictDetection', () => {
let pinia: ReturnType<typeof createPinia> let pinia: ReturnType<typeof createTestingPinia>
const mockComfyManagerService = { const mockComfyManagerService = {
getImportFailInfoBulk: vi.fn(), getImportFailInfoBulk: vi.fn(),
@@ -221,7 +222,7 @@ describe('useConflictDetection', () => {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
pinia = createPinia() pinia = createTestingPinia({ stubActions: false })
setActivePinia(pinia) setActivePinia(pinia)
// Setup mocks // Setup mocks

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
@@ -31,7 +32,7 @@ describe('useImportFailedDetection', () => {
let mockDialogService: ReturnType<typeof dialogService.useDialogService> let mockDialogService: ReturnType<typeof dialogService.useDialogService>
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
mockComfyManagerStore = { mockComfyManagerStore = {
isPackInstalled: vi.fn() isPackInstalled: vi.fn()

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick, ref } from 'vue' import { nextTick, ref } from 'vue'
@@ -72,7 +73,7 @@ describe('useComfyManagerStore', () => {
} }
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
vi.clearAllMocks() vi.clearAllMocks()
mockManagerService = { mockManagerService = {
isLoading: ref(false), isLoading: ref(false),

View File

@@ -1,4 +1,5 @@
import { createPinia, setActivePinia } from 'pinia' import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest' import { beforeEach, describe, expect, it } from 'vitest'
import { useConflictDetectionStore } from '@/workbench/extensions/manager/stores/conflictDetectionStore' import { useConflictDetectionStore } from '@/workbench/extensions/manager/stores/conflictDetectionStore'
@@ -6,7 +7,7 @@ import type { ConflictDetectionResult } from '@/workbench/extensions/manager/typ
describe('useConflictDetectionStore', () => { describe('useConflictDetectionStore', () => {
beforeEach(() => { beforeEach(() => {
setActivePinia(createPinia()) setActivePinia(createTestingPinia({ stubActions: false }))
}) })
const mockConflictedPackages: ConflictDetectionResult[] = [ const mockConflictedPackages: ConflictDetectionResult[] = [