mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 14:30:41 +00:00
- Merge latest main to resolve conflicts
- Fix asset browser filtering: pass target input name (e.g.,
'ckpt_name') instead of PrimitiveNode's widget name ('value')
**Changes:**
- Add `inputNameForBrowser` param to `createAssetWidget`
- Pass `targetInputName` from `PrimitiveNode._createAssetWidget`
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8596-fix-merge-main-and-pass-target-input-name-to-asset-browser-2fd6d73d36508112bb17cf5d3fe54687)
by [Unito](https://www.unito.io)
---------
Co-authored-by: Subagent 5 <subagent@example.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: guill <jacob.e.segal@gmail.com>
Co-authored-by: Jin Yi <jin12cc@gmail.com>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
Co-authored-by: AustinMroz <austin@comfy.org>
Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com>
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com>
Co-authored-by: Rizumu Ayaka <rizumu@ayaka.moe>
Co-authored-by: Kelly Yang <124ykl@gmail.com>
Co-authored-by: sno <snomiao@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com>
Co-authored-by: Terry Jia <terryjia88@gmail.com>
Co-authored-by: Luke Mino-Altherr <luke@comfy.org>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
101 lines
3.5 KiB
TypeScript
101 lines
3.5 KiB
TypeScript
import { expect } from '@playwright/test'
|
|
|
|
import { comfyPageFixture as test } from '../fixtures/ComfyPage'
|
|
|
|
test.beforeEach(async ({ comfyPage }) => {
|
|
await comfyPage.settings.setSetting('Comfy.UseNewMenu', 'Disabled')
|
|
})
|
|
|
|
test.describe('DOM Widget', { tag: '@widget' }, () => {
|
|
test('Collapsed multiline textarea is not visible', async ({ comfyPage }) => {
|
|
await comfyPage.workflow.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.nodeOps.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',
|
|
{ tag: '@screenshot' },
|
|
async ({ comfyPage }) => {
|
|
await comfyPage.settings.setSetting('Comfy.UseNewMenu', 'Top')
|
|
await comfyPage.command.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.settings.setSetting('Comfy.Sidebar.Size', 'small')
|
|
await comfyPage.settings.setSetting('Comfy.Sidebar.Location', 'left')
|
|
await comfyPage.settings.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.settings.setSetting('Comfy.Sidebar.Size', 'normal')
|
|
await comfyPage.nextFrame()
|
|
await checkBboxChange()
|
|
|
|
await comfyPage.settings.setSetting('Comfy.Sidebar.Location', 'right')
|
|
await comfyPage.nextFrame()
|
|
await checkBboxChange()
|
|
|
|
await comfyPage.settings.setSetting('Comfy.UseNewMenu', 'Bottom')
|
|
await comfyPage.nextFrame()
|
|
await checkBboxChange()
|
|
})
|
|
})
|