From 73bdbddf90af6db19ce1f6c6d8b14335f98e978a Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Mon, 11 Nov 2024 11:06:41 -0500 Subject: [PATCH] Fix rename open/bookmark workflow (#1507) * Fix rename open/bookmark workflow * nit * Fix save as * Add browser test --- .../fixtures/components/SidebarTab.ts | 29 +++++++-- browser_tests/menu.spec.ts | 28 ++++++++- .../sidebar/tabs/WorkflowsSidebarTab.vue | 63 ++++++++++++++++--- src/services/workflowService.ts | 15 ++--- src/stores/workflowStore.ts | 42 +++---------- .../tests/fast/store/workflowStore.test.ts | 3 +- 6 files changed, 121 insertions(+), 59 deletions(-) diff --git a/browser_tests/fixtures/components/SidebarTab.ts b/browser_tests/fixtures/components/SidebarTab.ts index 6e21e49e0..76b74c6dc 100644 --- a/browser_tests/fixtures/components/SidebarTab.ts +++ b/browser_tests/fixtures/components/SidebarTab.ts @@ -1,4 +1,4 @@ -import { Page } from '@playwright/test' +import { Locator, Page } from '@playwright/test' class SidebarTab { constructor( @@ -110,11 +110,30 @@ export class WorkflowsSidebarTab extends SidebarTab { } async switchToWorkflow(workflowName: string) { - const workflowLocator = this.page.locator( - '.comfyui-workflows-open .node-label', - { hasText: workflowName } - ) + const workflowLocator = this.getOpenedItem(workflowName) await workflowLocator.click() await this.page.waitForTimeout(300) } + + getOpenedItem(name: string) { + return this.page.locator('.comfyui-workflows-open .node-label', { + hasText: name + }) + } + + getPersistedItem(name: string) { + return this.page.locator('.comfyui-workflows-browse .node-label', { + hasText: name + }) + } + + async renameWorkflow(locator: Locator, newName: string) { + await locator.click({ button: 'right' }) + await this.page + .locator('.p-contextmenu-item-content', { hasText: 'Rename' }) + .click() + await this.page.keyboard.type(newName) + await this.page.keyboard.press('Enter') + await this.page.waitForTimeout(300) + } } diff --git a/browser_tests/menu.spec.ts b/browser_tests/menu.spec.ts index adf509238..083a4a4a5 100644 --- a/browser_tests/menu.spec.ts +++ b/browser_tests/menu.spec.ts @@ -401,7 +401,6 @@ test.describe('Menu', () => { 'workflow1.json': 'default.json', 'workflow2.json': 'default.json' }) - // Avoid reset view as the button is not visible in BetaMenu UI. await comfyPage.setup() const tab = comfyPage.menu.workflowsTab @@ -411,6 +410,33 @@ test.describe('Menu', () => { ) }) + test('Can rename nested workflow from opened workflow item', async ({ + comfyPage + }) => { + await comfyPage.setupWorkflowsDirectory({ + foo: { + 'bar.json': 'default.json' + } + }) + await comfyPage.setup() + + const tab = comfyPage.menu.workflowsTab + await tab.open() + // Switch to the parent folder + await tab.getPersistedItem('foo').click() + await comfyPage.page.waitForTimeout(300) + // Switch to the nested workflow + await tab.getPersistedItem('bar').click() + await comfyPage.page.waitForTimeout(300) + + const openedWorkflow = tab.getOpenedItem('foo/bar') + await tab.renameWorkflow(openedWorkflow, 'foo/baz') + expect(await tab.getOpenedWorkflowNames()).toEqual([ + '*Unsaved Workflow.json', + 'foo/baz.json' + ]) + }) + test('Can save workflow as', async ({ comfyPage }) => { await comfyPage.menu.workflowsTab.newBlankWorkflowButton.click() await comfyPage.menu.topbar.saveWorkflowAs('workflow3.json') diff --git a/src/components/sidebar/tabs/WorkflowsSidebarTab.vue b/src/components/sidebar/tabs/WorkflowsSidebarTab.vue index c9ab9088f..c2dea138c 100644 --- a/src/components/sidebar/tabs/WorkflowsSidebarTab.vue +++ b/src/components/sidebar/tabs/WorkflowsSidebarTab.vue @@ -42,7 +42,9 @@ >