mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-31 05:19:53 +00:00
* move subgraph test assets into subfolder * [refactor] Organize browser test assets into logical folders Reorganized test assets for better maintainability: - groupnodes/: GroupNode feature tests - groups/: Visual grouping tests - missing/: Missing nodes/models tests - links/: Link-related tests - inputs/: Input widget tests - widgets/: Widget-specific tests - nodes/: Node-related tests - workflowInMedia/: Workflow media files Updated all loadWorkflow references to use new folder structure. Fixed programmatic filename references to prevent test failures. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * [fix] Update mobile test to use new asset path * [fix] Update remaining loadWorkflow calls to use new folder structure * [fix] Fix remaining programmatic filename references * [fix] Run prettier formatting * [fix] Fix setupWorkflowsDirectory references to use correct folder paths * [refactor] Rename subgraph folder to subgraphs for consistency * [fix] Fix breadcrumb name in subgraph DOM widget test * Update test expectations [skip ci] --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions <github-actions@github.com>
89 lines
3.1 KiB
TypeScript
89 lines
3.1 KiB
TypeScript
import { expect } from '@playwright/test'
|
|
|
|
import { comfyPageFixture as test } from '../fixtures/ComfyPage'
|
|
|
|
test.describe('DOM Widget', () => {
|
|
test('Collapsed multiline textarea is not visible', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('widgets/collapsed_multiline')
|
|
const textareaWidget = comfyPage.page.locator('.comfy-multiline-input')
|
|
await expect(textareaWidget).not.toBeVisible()
|
|
})
|
|
|
|
test('Multiline textarea correctly collapses', async ({ comfyPage }) => {
|
|
const multilineTextAreas = comfyPage.page.locator('.comfy-multiline-input')
|
|
const firstMultiline = multilineTextAreas.first()
|
|
const lastMultiline = multilineTextAreas.last()
|
|
|
|
await expect(firstMultiline).toBeVisible()
|
|
await expect(lastMultiline).toBeVisible()
|
|
|
|
const nodes = await comfyPage.getNodeRefsByType('CLIPTextEncode')
|
|
for (const node of nodes) {
|
|
await node.click('collapse')
|
|
}
|
|
await expect(firstMultiline).not.toBeVisible()
|
|
await expect(lastMultiline).not.toBeVisible()
|
|
})
|
|
|
|
test('Position update when entering focus mode', async ({ comfyPage }) => {
|
|
await comfyPage.setSetting('Comfy.UseNewMenu', 'Top')
|
|
await comfyPage.executeCommand('Workspace.ToggleFocusMode')
|
|
await comfyPage.nextFrame()
|
|
await expect(comfyPage.canvas).toHaveScreenshot('focus-mode-on.png')
|
|
})
|
|
|
|
// No DOM widget should be created by creation of interim LGraphNode objects.
|
|
test('Copy node with DOM widget by dragging + alt', async ({ comfyPage }) => {
|
|
const initialCount = await comfyPage.getDOMWidgetCount()
|
|
|
|
// TextEncodeNode1
|
|
await comfyPage.page.mouse.move(618, 191)
|
|
await comfyPage.page.keyboard.down('Alt')
|
|
await comfyPage.page.mouse.down()
|
|
await comfyPage.page.mouse.move(100, 100)
|
|
await comfyPage.page.mouse.up()
|
|
await comfyPage.page.keyboard.up('Alt')
|
|
|
|
const finalCount = await comfyPage.getDOMWidgetCount()
|
|
expect(finalCount).toBe(initialCount + 1)
|
|
})
|
|
|
|
test('should reposition when layout changes', async ({ comfyPage }) => {
|
|
// --- setup ---
|
|
|
|
const textareaWidget = comfyPage.page
|
|
.locator('.comfy-multiline-input')
|
|
.first()
|
|
await expect(textareaWidget).toBeVisible()
|
|
|
|
await comfyPage.setSetting('Comfy.Sidebar.Size', 'small')
|
|
await comfyPage.setSetting('Comfy.Sidebar.Location', 'left')
|
|
await comfyPage.setSetting('Comfy.UseNewMenu', 'Top')
|
|
await comfyPage.nextFrame()
|
|
|
|
let oldPos: [number, number]
|
|
const checkBboxChange = async () => {
|
|
const boudningBox = (await textareaWidget.boundingBox())!
|
|
expect(boudningBox).not.toBeNull()
|
|
const position: [number, number] = [boudningBox.x, boudningBox.y]
|
|
expect(position).not.toEqual(oldPos)
|
|
oldPos = position
|
|
}
|
|
await checkBboxChange()
|
|
|
|
// --- test ---
|
|
|
|
await comfyPage.setSetting('Comfy.Sidebar.Size', 'normal')
|
|
await comfyPage.nextFrame()
|
|
await checkBboxChange()
|
|
|
|
await comfyPage.setSetting('Comfy.Sidebar.Location', 'right')
|
|
await comfyPage.nextFrame()
|
|
await checkBboxChange()
|
|
|
|
await comfyPage.setSetting('Comfy.UseNewMenu', 'Bottom')
|
|
await comfyPage.nextFrame()
|
|
await checkBboxChange()
|
|
})
|
|
})
|