63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import "dotenv/config";
|
|
import { Page, expect } from "@playwright/test";
|
|
|
|
const comfyUrl = process.env.PLAYWRIGHT_TEST_URL || "";
|
|
if (!comfyUrl) throw new Error("PLAYWRIGHT_TEST_URL is not set");
|
|
|
|
export async function openWorkflow(workflow: string, page: Page) {
|
|
await page.goto(comfyUrl);
|
|
|
|
// Expect a title "to contain" a substring.
|
|
await expect(page).toHaveTitle(/ComfyUI/);
|
|
|
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
|
|
await page
|
|
.locator("a")
|
|
.filter({ hasText: /^Workflow$/ })
|
|
.click();
|
|
await page.getByText("OpenCtrl + o").click();
|
|
|
|
const fileChooser = await fileChooserPromise;
|
|
await fileChooser.setFiles(workflow);
|
|
|
|
await page.locator("#graph-canvas").click({
|
|
position: {
|
|
x: 137,
|
|
y: 246,
|
|
},
|
|
});
|
|
|
|
await page.waitForTimeout(1000);
|
|
await page.locator("#graph-canvas").press(".");
|
|
await page.waitForTimeout(1000);
|
|
}
|
|
|
|
export async function createNewWorkflow(page: Page) {
|
|
await page.goto(comfyUrl);
|
|
|
|
// Expect a title "to contain" a substring.
|
|
await expect(page).toHaveTitle(/ComfyUI/);
|
|
|
|
await page.locator('a').filter({ hasText: /^Workflow$/ }).click();
|
|
await page.getByRole('menuitem', { name: 'New' }).locator('a').click();
|
|
|
|
await page.evaluate(() => {
|
|
if (!window.app?.canvas.ds) return
|
|
window.app.canvas.ds.offset = [50, 50]
|
|
window.app.canvas.ds.scale = 0.8
|
|
window.app.canvas.setDirty(true, true)
|
|
})
|
|
}
|
|
|
|
export async function centerOnPoint(page: Page, x: number, y: number, scale = 1) {
|
|
await page.evaluate(async ([x, y, scale]) => {
|
|
if (!window.app?.canvas.ds) return
|
|
window.app.canvas.ds.scale = 1
|
|
const [_x, _y, w, h] = window.app.canvas.visible_area
|
|
window.app.canvas.ds.offset = [x + w / 2, y + h / 2]
|
|
window.app.canvas.setDirty(true, true)
|
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
}, [x, y, scale])
|
|
}
|