mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-28 10:12:11 +00:00
[1.24.x] Cherry-pick post-1.24.2 fixes including subgraph improvements (#4672)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com> Co-authored-by: Terry Jia <terryjia88@gmail.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Jin Yi <jin12cc@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com>
This commit is contained in:
82
tests-ui/tests/widgets/domWidget.test.ts
Normal file
82
tests-ui/tests/widgets/domWidget.test.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
import { LGraphNode } from '@comfyorg/litegraph'
|
||||
import { describe, expect, test, vi } from 'vitest'
|
||||
|
||||
import { ComponentWidgetImpl, DOMWidgetImpl } from '@/scripts/domWidget'
|
||||
|
||||
// Mock dependencies
|
||||
vi.mock('@/stores/domWidgetStore', () => ({
|
||||
useDomWidgetStore: () => ({
|
||||
unregisterWidget: vi.fn()
|
||||
})
|
||||
}))
|
||||
|
||||
vi.mock('@/utils/formatUtil', () => ({
|
||||
generateUUID: () => 'test-uuid'
|
||||
}))
|
||||
|
||||
describe('DOMWidget Y Position Preservation', () => {
|
||||
test('BaseDOMWidgetImpl createCopyForNode preserves Y position', () => {
|
||||
const mockNode = new LGraphNode('test-node')
|
||||
const originalWidget = new ComponentWidgetImpl({
|
||||
node: mockNode,
|
||||
name: 'test-widget',
|
||||
component: { template: '<div></div>' },
|
||||
inputSpec: { name: 'test', type: 'string' },
|
||||
options: {}
|
||||
})
|
||||
|
||||
// Set a specific Y position
|
||||
originalWidget.y = 66
|
||||
|
||||
const newNode = new LGraphNode('new-node')
|
||||
const clonedWidget = originalWidget.createCopyForNode(newNode)
|
||||
|
||||
// Verify Y position is preserved
|
||||
expect(clonedWidget.y).toBe(66)
|
||||
expect(clonedWidget.node).toBe(newNode)
|
||||
expect(clonedWidget.name).toBe('test-widget')
|
||||
})
|
||||
|
||||
test('DOMWidgetImpl createCopyForNode preserves Y position', () => {
|
||||
const mockNode = new LGraphNode('test-node')
|
||||
const mockElement = document.createElement('div')
|
||||
|
||||
const originalWidget = new DOMWidgetImpl({
|
||||
node: mockNode,
|
||||
name: 'test-dom-widget',
|
||||
type: 'test',
|
||||
element: mockElement,
|
||||
options: {}
|
||||
})
|
||||
|
||||
// Set a specific Y position
|
||||
originalWidget.y = 42
|
||||
|
||||
const newNode = new LGraphNode('new-node')
|
||||
const clonedWidget = originalWidget.createCopyForNode(newNode)
|
||||
|
||||
// Verify Y position is preserved
|
||||
expect(clonedWidget.y).toBe(42)
|
||||
expect(clonedWidget.node).toBe(newNode)
|
||||
expect(clonedWidget.element).toBe(mockElement)
|
||||
expect(clonedWidget.name).toBe('test-dom-widget')
|
||||
})
|
||||
|
||||
test('Y position defaults to 0 when not set', () => {
|
||||
const mockNode = new LGraphNode('test-node')
|
||||
const originalWidget = new ComponentWidgetImpl({
|
||||
node: mockNode,
|
||||
name: 'test-widget',
|
||||
component: { template: '<div></div>' },
|
||||
inputSpec: { name: 'test', type: 'string' },
|
||||
options: {}
|
||||
})
|
||||
|
||||
// Don't explicitly set Y (should be 0 by default)
|
||||
const newNode = new LGraphNode('new-node')
|
||||
const clonedWidget = originalWidget.createCopyForNode(newNode)
|
||||
|
||||
// Verify Y position is preserved (should be 0)
|
||||
expect(clonedWidget.y).toBe(0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user