Spaces:
Configuration error
Configuration error
| import { app } from "scripts/app.js"; | |
| import { NodeTypesString } from "../constants.js"; | |
| import { wait } from "rgthree/common/shared_utils.js"; | |
| import type { LGraphNode } from "typings/litegraph.js"; | |
| type addNodeOptions = { | |
| placement?: string; | |
| }; | |
| /** | |
| * A testing environment to make setting up, clearing, and queuing more predictable in an | |
| * integration test environment. | |
| */ | |
| export class ComfyUITestEnvironment { | |
| private lastNode: LGraphNode | null = null; | |
| private maxY = 0; | |
| constructor() {} | |
| async addNode(nodeString: string, options: addNodeOptions = {}) { | |
| const [canvas, graph] = [app.canvas, app.graph]; | |
| const node = LiteGraph.createNode(nodeString); | |
| let x = 0; | |
| let y = 30; | |
| if (this.lastNode) { | |
| const placement = options.placement || "right"; | |
| if (placement === "under") { | |
| x = this.lastNode.pos[0]; | |
| y = this.lastNode.pos[1] + this.lastNode.size[1] + 30; | |
| } else if (placement === "right") { | |
| x = this.lastNode.pos[0] + this.lastNode.size[0] + 100; | |
| y = this.lastNode.pos[1]; | |
| } else if (placement === "start") { | |
| x = 0; | |
| y = this.maxY + 50; | |
| } | |
| } | |
| canvas.graph.add(node); | |
| node.pos = [x, y]; | |
| canvas.selectNode(node); | |
| app.graph.setDirtyCanvas(true, true); | |
| await wait(); | |
| this.lastNode = node; | |
| this.maxY = Math.max(this.maxY, y + this.lastNode.size[1]); | |
| return (this.lastNode = node); | |
| } | |
| async clear() { | |
| app.clean(); | |
| app.graph.clear(); | |
| const nodeConfig = await this.addNode(NodeTypesString.KSAMPLER_CONFIG); | |
| const displayAny = await this.addNode(NodeTypesString.DISPLAY_ANY); | |
| nodeConfig.widgets[0]!.value = Math.round(Math.random() * 100); | |
| nodeConfig.connect(0, displayAny, 0); | |
| await this.queuePrompt(); | |
| app.clean(); | |
| app.graph.clear(); | |
| this.lastNode = null; | |
| this.maxY = 0; | |
| await wait(); | |
| } | |
| async queuePrompt() { | |
| await app.queuePrompt(); | |
| await wait(150); | |
| } | |
| } | |