Skip to content

Commit 6bd42d9

Browse files
committed
test: harden linked widget regression coverage
1 parent 72a1491 commit 6bd42d9

5 files changed

Lines changed: 34 additions & 23 deletions

File tree

browser_tests/tests/vueNodes/widgets/int/integerWidget.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ test.describe('Vue Integer Widget', { tag: '@vue-nodes' }, () => {
5353
await expect(controls.input).toHaveValue(initialValue.toString())
5454
await expect
5555
.poll(async () => (await samplerNode.boundingBox())?.height)
56-
.toBe(nodeBounds.height)
56+
.toBeCloseTo(nodeBounds.height, 0)
5757
})
5858

5959
test('displays control widgets with default state', async ({ comfyPage }) => {

browser_tests/tests/vueNodes/widgets/linked/linkedStandardWidgets.spec.ts

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,16 @@ test.describe(
9898
).toBe(false)
9999
}
100100

101-
await expect(
102-
targetNode.getByText('STALE SELECT VALUE', { exact: true })
103-
).toBeHidden()
104-
await expect(
105-
targetNode.getByText('STALE ON', { exact: true })
106-
).toBeHidden()
107-
await expect(
108-
targetNode.getByText('STALE OFF', { exact: true })
109-
).toBeHidden()
110-
await expect(
111-
targetNode.getByText('#22c55d', { exact: true })
112-
).toBeHidden()
101+
for (const text of [
102+
'STALE SELECT VALUE',
103+
'STALE ON',
104+
'STALE OFF',
105+
'#22c55d'
106+
]) {
107+
const staleValue = targetNode.getByText(text, { exact: true })
108+
await expect(staleValue).toBeAttached()
109+
await expect(staleValue).toBeHidden()
110+
}
113111

114112
const widgetRefs = await Promise.all(
115113
WIDGET_NAMES.map((name) => targetNodeRef.getWidgetByName(name))
@@ -127,14 +125,7 @@ test.describe(
127125

128126
for (let index = 0; index < WIDGET_NAMES.length + 2; index++) {
129127
await comfyPage.page.keyboard.press('Tab')
130-
expect(
131-
await targetNode.evaluate(
132-
(node) =>
133-
node.querySelector(
134-
'[data-testid="linked-widget-content"]:focus-within'
135-
) !== null
136-
)
137-
).toBe(false)
128+
await expect(linkedContent.locator(':focus-within')).toHaveCount(0)
138129
}
139130

140131
await expect

browser_tests/tests/vueNodes/widgets/text/multilineStringWidget.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ test.describe('Vue Multiline String Widget', { tag: '@vue-nodes' }, () => {
9393
await expect(restoredTextarea).toHaveValue('restored local prompt')
9494
await expect
9595
.poll(async () => (await clipNode.boundingBox())?.height)
96-
.toBe(nodeBounds.height)
96+
.toBeCloseTo(nodeBounds.height, 0)
9797
})
9898

9999
test('should use native context menu when focused', async ({ comfyPage }) => {

src/components/rightSidePanel/parameters/WidgetItem.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ const i18n = createI18n({
101101
}
102102
})
103103

104-
function createMockNode(overrides: Record<string, unknown> = {}): LGraphNode {
104+
function createMockNode(
105+
overrides: Partial<Record<keyof LGraphNode, unknown>> = {}
106+
): LGraphNode {
105107
return fromAny<LGraphNode, unknown>({
106108
id: 1,
107109
type: 'TestNode',
@@ -160,6 +162,7 @@ describe('WidgetItem', () => {
160162
mockIsAssetAPIEnabled.mockReturnValue(false)
161163
mockShouldUseAssetBrowser.mockReturnValue(false)
162164
mockFromLGraphNode.mockReturnValue(null)
165+
mockGetInputSpecForWidget.mockReset()
163166
})
164167

165168
describe('widget state rendering', () => {

src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdown.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,23 @@ describe('FormDropdown', () => {
482482
expect(onUpdateIsOpen).toHaveBeenLastCalledWith(false)
483483
})
484484

485+
it('stays open when disabled without closeOnDisable', async () => {
486+
const onUpdateIsOpen = vi.fn()
487+
const items = [createItem('1', 'alpha')]
488+
const { rerender, user } = mountDropdown(items, { onUpdateIsOpen })
489+
await openDropdown(user)
490+
491+
expect(onUpdateIsOpen).toHaveBeenLastCalledWith(true)
492+
493+
await rerender({
494+
items,
495+
disabled: true,
496+
'onUpdate:isOpen': onUpdateIsOpen
497+
})
498+
499+
expect(onUpdateIsOpen).toHaveBeenLastCalledWith(true)
500+
})
501+
485502
it('stays open on a pointerdown inside the menu', async () => {
486503
const onUpdateIsOpen = vi.fn()
487504
const { user } = mountDropdown([createItem('1', 'alpha')], {

0 commit comments

Comments
 (0)