From 24514f7103f7ee1d2d8560d3d2a70b32183dc5d9 Mon Sep 17 00:00:00 2001 From: Yourz Date: Mon, 26 Jan 2026 12:45:10 +0800 Subject: [PATCH] fix: update for reviews --- browser_tests/tests/colorPalette.spec.ts | 32 +++++++++---------- .../{stores => base}/draftCache.test.ts | 26 ++++++++++----- .../useWorkflowPersistence.test.ts | 2 +- .../composables/useWorkflowPersistence.ts | 11 +++++-- .../persistence/stores/workflowDraftStore.ts | 2 ++ 5 files changed, 45 insertions(+), 28 deletions(-) rename src/platform/workflow/persistence/{stores => base}/draftCache.test.ts (82%) diff --git a/browser_tests/tests/colorPalette.spec.ts b/browser_tests/tests/colorPalette.spec.ts index e0ec7bc85..3bc1b9167 100644 --- a/browser_tests/tests/colorPalette.spec.ts +++ b/browser_tests/tests/colorPalette.spec.ts @@ -233,23 +233,21 @@ test.describe('Node Color Adjustments', () => { await comfyPage.setSetting('Comfy.Node.Opacity', 0.5) await comfyPage.setSetting('Comfy.ColorPalette', 'light') await comfyPage.nextFrame() - await comfyPage.page.waitForFunction( - () => { - const workflow = localStorage.getItem('workflow') - if (!workflow) return false - try { - const parsed = JSON.parse(workflow) - return parsed?.nodes && Array.isArray(parsed.nodes) - } catch { - return false - } - }, - { timeout: 3000 } - ) - const workflow = await comfyPage.page.evaluate(() => { - return localStorage.getItem('workflow') - }) - const parsed = JSON.parse(workflow ?? '{}') + const parsed = await ( + await comfyPage.page.waitForFunction( + () => { + const workflow = localStorage.getItem('workflow') + if (!workflow) return null + try { + const data = JSON.parse(workflow) + return Array.isArray(data?.nodes) ? data : null + } catch { + return null + } + }, + { timeout: 3000 } + ) + ).jsonValue() expect(parsed.nodes).toBeDefined() expect(Array.isArray(parsed.nodes)).toBe(true) for (const node of parsed.nodes) { diff --git a/src/platform/workflow/persistence/stores/draftCache.test.ts b/src/platform/workflow/persistence/base/draftCache.test.ts similarity index 82% rename from src/platform/workflow/persistence/stores/draftCache.test.ts rename to src/platform/workflow/persistence/base/draftCache.test.ts index d30ec350e..8c7dfff3e 100644 --- a/src/platform/workflow/persistence/stores/draftCache.test.ts +++ b/src/platform/workflow/persistence/base/draftCache.test.ts @@ -1,14 +1,24 @@ import { describe, expect, it } from 'vitest' -import { MAX_DRAFTS, createDraftCacheState, mostRecentDraftPath, moveDraft, removeDraft, touchEntry, upsertDraft } from '@/platform/workflow/persistence/base/draftCache'; -import type { WorkflowDraftSnapshot } from '@/platform/workflow/persistence/base/draftCache'; +import { + MAX_DRAFTS, + createDraftCacheState, + mostRecentDraftPath, + moveDraft, + removeDraft, + touchEntry, + upsertDraft +} from './draftCache' +import type { WorkflowDraftSnapshot } from './draftCache' -const createSnapshot = (name: string): WorkflowDraftSnapshot => ({ - data: JSON.stringify({ name }), - updatedAt: Date.now(), - name, - isTemporary: true -}) +function createSnapshot(name: string): WorkflowDraftSnapshot { + return { + data: JSON.stringify({ name }), + updatedAt: Date.now(), + name, + isTemporary: true + } +} describe('draftCache helpers', () => { it('touchEntry moves path to end', () => { diff --git a/src/platform/workflow/persistence/composables/useWorkflowPersistence.test.ts b/src/platform/workflow/persistence/composables/useWorkflowPersistence.test.ts index 46bec7b7b..76dac06c6 100644 --- a/src/platform/workflow/persistence/composables/useWorkflowPersistence.test.ts +++ b/src/platform/workflow/persistence/composables/useWorkflowPersistence.test.ts @@ -163,7 +163,7 @@ describe('useWorkflowPersistence', () => { const drafts = JSON.parse( localStorage.getItem('Comfy.Workflow.Drafts') ?? '{}' - ) as Record + ) as Record expect(Object.keys(drafts)).toEqual( expect.arrayContaining(['workflows/DraftA.json', 'workflows/DraftB.json']) diff --git a/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts b/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts index 6a533deed..06e7bff61 100644 --- a/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts +++ b/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts @@ -201,11 +201,18 @@ export function useWorkflowPersistence() { const parsedWorkflows = JSON.parse( getStorageValue('Comfy.OpenWorkflowsPaths') || '[]' ) - const storedWorkflows = Array.isArray(parsedWorkflows) ? parsedWorkflows : [] + const storedWorkflows = Array.isArray(parsedWorkflows) + ? parsedWorkflows.filter( + (entry): entry is string => typeof entry === 'string' + ) + : [] const parsedIndex = JSON.parse( getStorageValue('Comfy.ActiveWorkflowIndex') || '-1' ) - const storedActiveIndex = typeof parsedIndex === 'number' ? parsedIndex : -1 + const storedActiveIndex = + typeof parsedIndex === 'number' && Number.isFinite(parsedIndex) + ? parsedIndex + : -1 watch(restoreState, ({ paths, activeIndex }) => { if (workflowPersistenceEnabled.value) { setStorageValue('Comfy.OpenWorkflowsPaths', JSON.stringify(paths)) diff --git a/src/platform/workflow/persistence/stores/workflowDraftStore.ts b/src/platform/workflow/persistence/stores/workflowDraftStore.ts index 40cca16b5..30280e124 100644 --- a/src/platform/workflow/persistence/stores/workflowDraftStore.ts +++ b/src/platform/workflow/persistence/stores/workflowDraftStore.ts @@ -57,6 +57,8 @@ export const useWorkflowDraftStore = defineStore('workflowDraft', () => { const oldestPath = state.order[0] updateState(removeDraftEntry(state, oldestPath)) updateState(upsertDraft(currentState(), path, snapshot, MAX_DRAFTS)) + } else { + throw error } } else { throw error