diff --git a/browser_tests/tests/colorPalette.spec.ts b/browser_tests/tests/colorPalette.spec.ts index ce372ddfa..e0ec7bc85 100644 --- a/browser_tests/tests/colorPalette.spec.ts +++ b/browser_tests/tests/colorPalette.spec.ts @@ -232,11 +232,27 @@ test.describe('Node Color Adjustments', () => { }) => { await comfyPage.setSetting('Comfy.Node.Opacity', 0.5) await comfyPage.setSetting('Comfy.ColorPalette', 'light') - const saveWorkflowInterval = 1000 + 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') }) - for (const node of JSON.parse(workflow ?? '{}').nodes) { + const parsed = JSON.parse(workflow ?? '{}') + expect(parsed.nodes).toBeDefined() + expect(Array.isArray(parsed.nodes)).toBe(true) + for (const node of parsed.nodes) { if (node.bgcolor) expect(node.bgcolor).not.toMatch(/hsla/) if (node.color) expect(node.color).not.toMatch(/hsla/) } diff --git a/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts b/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts index 8f13efe2c..7f44290e0 100644 --- a/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts +++ b/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts @@ -1,4 +1,4 @@ -import { tryOnScopeDispose, useDebounceFn } from '@vueuse/core' +import { tryOnScopeDispose } from '@vueuse/core' import { computed, ref, watch } from 'vue' import { useRoute, useRouter } from 'vue-router' @@ -49,7 +49,7 @@ export function useWorkflowPersistence() { const lastSavedJsonByPath = ref>({}) - const persistCurrentWorkflow = useDebounceFn(() => { + const persistCurrentWorkflow = () => { if (!workflowPersistenceEnabled.value) return const activeWorkflow = workflowStore.activeWorkflow if (!activeWorkflow) return @@ -100,14 +100,13 @@ export function useWorkflowPersistence() { workflowDraftStore.removeDraft(activeWorkflow.path) return } - }, 1_000) + } const loadPreviousWorkflowFromStorage = async () => { const workflowName = getStorageValue('Comfy.PreviousWorkflow') const preferredPath = workflowName ? `${ComfyWorkflow.basePath}${workflowName}` : null - return await workflowDraftStore.loadPersistedWorkflow({ workflowName, preferredPath, @@ -213,7 +212,16 @@ export function useWorkflowPersistence() { if (workflowStore.getWorkflowByPath(path)) return const draft = workflowDraftStore.getDraft(path) if (!draft?.isTemporary) return - workflowStore.createTemporary(draft.name) + try { + const workflowData = JSON.parse(draft.data) + workflowStore.createTemporary(draft.name, workflowData) + } catch (err) { + console.warn( + 'Failed to parse workflow draft, creating with default', + err + ) + workflowStore.createTemporary(draft.name) + } }) workflowStore.openWorkflowsInBackground({