mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-04 13:12:10 +00:00
## Summary
Replace two hardcoded blank-canvas click positions in
`copyPaste.spec.ts` with the existing
`comfyPage.canvasOps.clickEmptySpace()` helper.
## Changes
- **What**: Both `{ x: 50, y: 500 }` click literals in the `Copy paste
node, image paste onto LoadImage, image paste on empty canvas` test now
use `canvasOps.clickEmptySpace()` (which wraps
`DefaultGraphPositions.emptySpaceClick = { x: 35, y: 31 }`). Redundant
`await nextFrame()` calls dropped — the helper already awaits a frame
internally.
## Review Focus
Draft PR — need CI to confirm `(35, 31)` is a valid blank-canvas click
for the `load_image_with_ksampler` workflow used by this test. The
workflow places `LoadImage` at `[50, 50]` and `KSampler` at `[500, 50]`,
so `(35, 31)` should be clear of both. Locally the test was already
failing on `main` (pre-existing, unrelated), so CI is the source of
truth here. If CI fails, the fallback is to add a dedicated named
constant `emptyCanvasClick: { x: 50, y: 500 }` to
`DefaultGraphPositions` as originally proposed in the issue.
Fixes #10330
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-10991-refactor-test-use-canvasOps-clickEmptySpace-in-copyPaste-spec-33d6d73d3650817aa3ccea44cb48c0ae)
by [Unito](https://www.unito.io)
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import type { Position } from '@e2e/fixtures/constants/types'
|
|
|
|
/**
|
|
* Hardcoded positions for the default graph loaded in tests.
|
|
* These coordinates are specific to the default workflow viewport.
|
|
*/
|
|
export const DefaultGraphPositions = {
|
|
// Node click positions
|
|
textEncodeNode1: { x: 618, y: 191 },
|
|
textEncodeNode2: { x: 622, y: 400 },
|
|
textEncodeNodeToggler: { x: 430, y: 171 },
|
|
emptySpaceClick: { x: 35, y: 31 },
|
|
emptyCanvasClick: { x: 50, y: 500 },
|
|
|
|
// Slot positions
|
|
clipTextEncodeNode1InputSlot: { x: 427, y: 198 },
|
|
clipTextEncodeNode2InputSlot: { x: 422, y: 402 },
|
|
clipTextEncodeNode2InputLinkPath: { x: 395, y: 422 },
|
|
loadCheckpointNodeClipOutputSlot: { x: 332, y: 509 },
|
|
emptySpace: { x: 427, y: 98 },
|
|
|
|
// Widget positions
|
|
emptyLatentWidgetClick: { x: 724, y: 645 },
|
|
|
|
// Node positions and sizes for resize operations
|
|
ksampler: {
|
|
pos: { x: 863, y: 156 },
|
|
size: { width: 315, height: 292 }
|
|
},
|
|
loadCheckpoint: {
|
|
pos: { x: 26, y: 444 },
|
|
size: { width: 315, height: 127 }
|
|
},
|
|
emptyLatent: {
|
|
pos: { x: 473, y: 579 },
|
|
size: { width: 315, height: 136 }
|
|
}
|
|
} as const satisfies {
|
|
textEncodeNode1: Position
|
|
textEncodeNode2: Position
|
|
textEncodeNodeToggler: Position
|
|
emptySpaceClick: Position
|
|
emptyCanvasClick: Position
|
|
clipTextEncodeNode1InputSlot: Position
|
|
clipTextEncodeNode2InputSlot: Position
|
|
clipTextEncodeNode2InputLinkPath: Position
|
|
loadCheckpointNodeClipOutputSlot: Position
|
|
emptySpace: Position
|
|
emptyLatentWidgetClick: Position
|
|
ksampler: { pos: Position; size: { width: number; height: number } }
|
|
loadCheckpoint: { pos: Position; size: { width: number; height: number } }
|
|
emptyLatent: { pos: Position; size: { width: number; height: number } }
|
|
}
|