mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-04 15:10:06 +00:00
## Summary Merges latest changes from `main` as of 10-06-2025. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5965-Merge-main-as-of-10-06-2025-into-rh-test-2856d73d3650812cb95fd8917278a770) by [Unito](https://www.unito.io) --------- Signed-off-by: Marcel Petrick <mail@marcelpetrick.it> Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com> Co-authored-by: Christian Byrne <cbyrne@comfy.org> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Alexander Brown <drjkl@comfy.org> Co-authored-by: Benjamin Lu <benceruleanlu@proton.me> Co-authored-by: Terry Jia <terryjia88@gmail.com> Co-authored-by: snomiao <snomiao@gmail.com> Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com> Co-authored-by: Jake Schroeder <jake.schroeder@isophex.com> Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com> Co-authored-by: AustinMroz <4284322+AustinMroz@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com> Co-authored-by: Marcel Petrick <mail@marcelpetrick.it> Co-authored-by: Alexander Brown <DrJKL0424@gmail.com> Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com> Co-authored-by: Alexander Piskun <13381981+bigcat88@users.noreply.github.com> Co-authored-by: Rizumu Ayaka <rizumu@ayaka.moe> Co-authored-by: JakeSchroeder <jake@axiom.co> Co-authored-by: AustinMroz <austin@comfy.org> Co-authored-by: DrJKL <DrJKL@users.noreply.github.com> Co-authored-by: ComfyUI Wiki <contact@comfyui-wiki.com>
97 lines
3.3 KiB
TypeScript
97 lines
3.3 KiB
TypeScript
import { expect } from '@playwright/test'
|
|
|
|
import { comfyPageFixture as test } from '../fixtures/ComfyPage'
|
|
|
|
test.beforeEach(async ({ comfyPage }) => {
|
|
await comfyPage.setSetting('Comfy.UseNewMenu', 'Disabled')
|
|
})
|
|
|
|
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 }) => {
|
|
test.skip(
|
|
true,
|
|
'Only recalculates when the Canvas size changes, need to recheck the logic'
|
|
)
|
|
// --- 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()
|
|
})
|
|
})
|