diff --git a/browser_tests/fixtures/utils/litegraphUtils.ts b/browser_tests/fixtures/utils/litegraphUtils.ts index 5901117213..8106fb5101 100644 --- a/browser_tests/fixtures/utils/litegraphUtils.ts +++ b/browser_tests/fixtures/utils/litegraphUtils.ts @@ -312,6 +312,11 @@ export class NodeReference { async getFlags(): Promise<{ collapsed?: boolean; pinned?: boolean }> { return await this.getProperty('flags') } + async getTitlePosition(): Promise { + const nodePos = await this.getPosition() + const nodeSize = await this.getSize() + return { x: nodePos.x + nodeSize.width / 2, y: nodePos.y - 15 } + } async isPinned() { return !!(await this.getFlags()).pinned } diff --git a/browser_tests/tests/nodeSearchBox.spec.ts b/browser_tests/tests/nodeSearchBox.spec.ts index a26e0d27d9..811fd69491 100644 --- a/browser_tests/tests/nodeSearchBox.spec.ts +++ b/browser_tests/tests/nodeSearchBox.spec.ts @@ -68,16 +68,16 @@ test.describe('Node search box', { tag: '@node' }, () => { async ({ comfyPage }) => { await comfyPage.loadWorkflow('links/batch_move_links') - const outputSlot1Pos = { - x: 304, - y: 127 - } - const emptySpacePos = { - x: 5, - y: 5 - } + // Get the CLIP output slot (index 1) from the first CheckpointLoaderSimple node (id: 4) + const checkpointNode = await comfyPage.nodeOps.getNodeRefById(4) + const clipOutputSlot = await checkpointNode.getOutput(1) + const outputSlotPos = await clipOutputSlot.getPosition() + + // Use a position in the empty canvas area (top-left corner) + const emptySpacePos = { x: 5, y: 5 } + await comfyPage.page.keyboard.down('Shift') - await comfyPage.canvasOps.dragAndDrop(outputSlot1Pos, emptySpacePos) + await comfyPage.canvasOps.dragAndDrop(outputSlotPos, emptySpacePos) await comfyPage.page.keyboard.up('Shift') // Select the second item as the first item is always reroute diff --git a/browser_tests/tests/rightClickMenu.spec.ts b/browser_tests/tests/rightClickMenu.spec.ts index a31e892582..704afdf7d4 100644 --- a/browser_tests/tests/rightClickMenu.spec.ts +++ b/browser_tests/tests/rightClickMenu.spec.ts @@ -103,7 +103,11 @@ test.describe('Node Right Click Menu', { tag: ['@screenshot', '@ui'] }, () => { await expect(comfyPage.canvas).toHaveScreenshot('right-click-node.png') await comfyPage.page.click('.litemenu-entry:has-text("Pin")') await comfyPage.nextFrame() - await comfyPage.canvasOps.dragAndDrop({ x: 621, y: 617 }, { x: 16, y: 16 }) + + // Get EmptyLatentImage node title position dynamically (for dragging) + const emptyLatentNode = await comfyPage.nodeOps.getNodeRefById(5) + const titlePos = await emptyLatentNode.getTitlePosition() + await comfyPage.canvasOps.dragAndDrop(titlePos, { x: 16, y: 16 }) await expect(comfyPage.canvas).toHaveScreenshot('node-pinned.png') await comfyPage.rightClickEmptyLatentNode() await expect(comfyPage.canvas).toHaveScreenshot( @@ -124,10 +128,11 @@ test.describe('Node Right Click Menu', { tag: ['@screenshot', '@ui'] }, () => { await comfyPage.rightClickEmptyLatentNode() await comfyPage.page.click('.litemenu-entry:has-text("Unpin")') await comfyPage.nextFrame() - await comfyPage.canvasOps.dragAndDrop( - { x: 496, y: 618 }, - { x: 200, y: 590 } - ) + + // Get EmptyLatentImage node title position dynamically (for dragging) + const emptyLatentNode = await comfyPage.nodeOps.getNodeRefById(5) + const titlePos = await emptyLatentNode.getTitlePosition() + await comfyPage.canvasOps.dragAndDrop(titlePos, { x: 200, y: 590 }) await expect(comfyPage.canvas).toHaveScreenshot( 'right-click-unpinned-node-moved.png' )