import { test } from "@playwright/test"; import type { Page } from "@playwright/test"; import { waitForComfyUI, loadWorkflow, triggerOrganize, expectGraphCanvasScreenshot, setBooleanSetting, } from "./helpers"; import { loadFixture } from "./fixtures"; import { SETTING_IDS } from "../../src/settings"; async function openFirstSubgraph(page: Page) { await page.evaluate(() => { const w = window as unknown as Record; const appObj = w.app as Record; const canvas = appObj.canvas as { graph?: { _nodes?: Array> }; openSubgraph: ( subgraph: Record, fromNode: Record, ) => void; }; const rootGraph = (canvas.graph ?? appObj.graph) as { _nodes?: Array> }; const subgraphNode = (rootGraph._nodes ?? []).find((node) => !!node.subgraph); if (!subgraphNode?.subgraph) { throw new Error("No subgraph node found in fixture"); } canvas.openSubgraph(subgraphNode.subgraph as Record, subgraphNode); }); } test.describe("Visual Regression", () => { test.beforeEach(async ({ page }) => { await page.goto("/"); await waitForComfyUI(page); await setBooleanSetting(page, SETTING_IDS.FIT_TO_VIEW, false); }); test("simple-dag graph canvas after organize", async ({ page }) => { await loadWorkflow(page, loadFixture("simple-dag")); await triggerOrganize(page); await expectGraphCanvasScreenshot(page, "simple-dag-organized.png"); }); test("nested-groups graph canvas after organize", async ({ page }) => { await loadWorkflow(page, loadFixture("nested-groups")); await triggerOrganize(page); await expectGraphCanvasScreenshot(page, "nested-groups-organized.png"); }); test("token-testing graph canvas after organize", async ({ page }) => { await loadWorkflow(page, loadFixture("token-testing")); await triggerOrganize(page); await expectGraphCanvasScreenshot(page, "token-testing-organized.png"); }); test("subgraph graph canvas after organize", async ({ page }) => { await loadWorkflow(page, loadFixture("subgraph-io")); await openFirstSubgraph(page); await triggerOrganize(page); await expectGraphCanvasScreenshot(page, "subgraph-io-organized.png"); }); });