Skip to content

Commit

Permalink
Merge branch 'group-reroute-fix' of https://github.com/pythongosssss/…
Browse files Browse the repository at this point in the history
  • Loading branch information
comfyanonymous committed Dec 9, 2023
2 parents da74e3b + 080ef75 commit eccc9e6
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
31 changes: 31 additions & 0 deletions tests-ui/tests/groupNode.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,37 @@ describe("group node", () => {
getOutput([nodes.pos.id, nodes.neg.id, nodes.empty.id, nodes.sampler.id])
);
});
test("groups can connect to each other via internal reroutes", async () => {
const { ez, graph, app } = await start();

const latent = ez.EmptyLatentImage();
const vae = ez.VAELoader();
const latentReroute = ez.Reroute();
const vaeReroute = ez.Reroute();

latent.outputs[0].connectTo(latentReroute.inputs[0]);
vae.outputs[0].connectTo(vaeReroute.inputs[0]);

const group1 = await convertToGroup(app, graph, "test", [latentReroute, vaeReroute]);
group1.menu.Clone.call();
expect(app.graph._nodes).toHaveLength(4);
const group2 = graph.find(app.graph._nodes[3]);
expect(group2.node.type).toEqual("workflow/test");
expect(group2.id).not.toEqual(group1.id);

group1.outputs.VAE.connectTo(group2.inputs.VAE);
group1.outputs.LATENT.connectTo(group2.inputs.LATENT);

const decode = ez.VAEDecode(group2.outputs.LATENT, group2.outputs.VAE);
const preview = ez.PreviewImage(decode.outputs[0]);

expect((await graph.toPrompt()).output).toEqual({
[latent.id]: { inputs: { width: 512, height: 512, batch_size: 1 }, class_type: "EmptyLatentImage" },
[vae.id]: { inputs: { vae_name: "vae1.safetensors" }, class_type: "VAELoader" },
[decode.id]: { inputs: { samples: [latent.id + "", 0], vae: [vae.id + "", 0] }, class_type: "VAEDecode" },
[preview.id]: { inputs: { images: [decode.id + "", 0] }, class_type: "PreviewImage" },
});
});
test("displays generated image on group node", async () => {
const { ez, graph, app } = await start();
const nodes = createDefaultWorkflow(ez, graph);
Expand Down
4 changes: 4 additions & 0 deletions web/extensions/core/groupNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,10 @@ export class GroupNodeHandler {
innerNode = innerNode.getInputNode(0);
}

if (l && GroupNodeHandler.isGroupNode(innerNode)) {
return innerNode.updateLink(l);
}

link.origin_id = innerNode.id;
link.origin_slot = l?.origin_slot ?? output.slot;
return link;
Expand Down

0 comments on commit eccc9e6

Please sign in to comment.