diff --git a/browser_tests/assets/single_connected_reroute_node.json b/browser_tests/assets/single_connected_reroute_node.json new file mode 100644 index 000000000..c81c1204c --- /dev/null +++ b/browser_tests/assets/single_connected_reroute_node.json @@ -0,0 +1,116 @@ +{ + "last_node_id": 16, + "last_link_id": 18, + "nodes": [ + { + "id": 12, + "type": "VAEDecode", + "pos": [620, 260], + "size": [210, 46], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": 18 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 13, + "type": "Reroute", + "pos": [510, 280], + "size": [75, 26], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 13 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [18], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 4, + "type": "CheckpointLoaderSimple", + "pos": [160, 240], + "size": [315, 98], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [13], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": ["v1-5-pruned-emaonly.safetensors"] + } + ], + "links": [ + [13, 4, 2, 13, 0, "*"], + [18, 13, 0, 12, 1, "VAE"] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": { + "0": 0, + "1": 0 + } + } + }, + "version": 0.4 +} diff --git a/browser_tests/rerouteNode.spec.ts b/browser_tests/rerouteNode.spec.ts new file mode 100644 index 000000000..3bcdb34ed --- /dev/null +++ b/browser_tests/rerouteNode.spec.ts @@ -0,0 +1,36 @@ +import { expect } from '@playwright/test' +import { comfyPageFixture as test } from './fixtures/ComfyPage' + +test.describe('Reroute Node', () => { + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.setSetting('Comfy.UseNewMenu', 'Top') + }) + + test.afterEach(async ({ comfyPage }) => { + await comfyPage.setupWorkflowsDirectory({}) + }) + + test('loads from inserted workflow', async ({ comfyPage }) => { + const workflowName = 'single_connected_reroute_node.json' + await comfyPage.setupWorkflowsDirectory({ + [workflowName]: workflowName + }) + await comfyPage.setup() + await comfyPage.menu.topbar.triggerTopbarCommand(['Workflow', 'New']) + + // Insert the workflow + const workflowsTab = comfyPage.menu.workflowsTab + await workflowsTab.open() + await workflowsTab.getPersistedItem(workflowName).click({ button: 'right' }) + const insertButton = comfyPage.page.locator('.p-contextmenu-item-link', { + hasText: 'Insert' + }) + await insertButton.click() + + // Close the sidebar tab + await workflowsTab.tabButton.click() + await workflowsTab.root.waitFor({ state: 'hidden' }) + + await expect(comfyPage.canvas).toHaveScreenshot('reroute_inserted.png') + }) +}) diff --git a/browser_tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-2x-linux.png b/browser_tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-2x-linux.png new file mode 100644 index 000000000..560cf3f92 Binary files /dev/null and b/browser_tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-2x-linux.png differ diff --git a/browser_tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png b/browser_tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png new file mode 100644 index 000000000..03a7e0de0 Binary files /dev/null and b/browser_tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png differ diff --git a/src/extensions/core/rerouteNode.ts b/src/extensions/core/rerouteNode.ts index 447ac3123..a92581200 100644 --- a/src/extensions/core/rerouteNode.ts +++ b/src/extensions/core/rerouteNode.ts @@ -35,6 +35,7 @@ app.registerExtension({ } this.onConnectionsChange = (type, index, connected, link_info) => { + if (app.configuringGraph) return this.applyOrientation() // Prevent multiple connections to different types when we have no input