diff --git a/browser_tests/fixtures/ComfyPage.ts b/browser_tests/fixtures/ComfyPage.ts index bb3b046ea..abdcc55f9 100644 --- a/browser_tests/fixtures/ComfyPage.ts +++ b/browser_tests/fixtures/ComfyPage.ts @@ -907,5 +907,19 @@ const makeMatcher = function ( export const comfyExpect = expect.extend({ toBePinned: makeMatcher((n) => n.isPinned(), 'pinned'), toBeBypassed: makeMatcher((n) => n.isBypassed(), 'bypassed'), - toBeCollapsed: makeMatcher((n) => n.isCollapsed(), 'collapsed') + toBeCollapsed: makeMatcher((n) => n.isCollapsed(), 'collapsed'), + async toHaveFocus(locator: Locator, options = { timeout: 256 }) { + const isFocused = await locator.evaluate( + (el) => el === document.activeElement + ) + + await expect(async () => { + expect(isFocused).toBe(!this.isNot) + }).toPass(options) + + return { + pass: isFocused, + message: () => `Expected element to ${isFocused ? 'not ' : ''}be focused.` + } + } }) diff --git a/browser_tests/nodeSearchBox.spec.ts b/browser_tests/nodeSearchBox.spec.ts index 426e770cc..fecbe6d09 100644 --- a/browser_tests/nodeSearchBox.spec.ts +++ b/browser_tests/nodeSearchBox.spec.ts @@ -1,5 +1,7 @@ -import { expect } from '@playwright/test' -import { comfyPageFixture as test } from './fixtures/ComfyPage' +import { + comfyPageFixture as test, + comfyExpect as expect +} from './fixtures/ComfyPage' test.describe('Node search box', () => { test.beforeEach(async ({ comfyPage }) => { @@ -127,6 +129,23 @@ test.describe('Node search box', () => { await expect(comfyPage.searchBox.filterChips).toHaveCount(1) }) }) + + test.describe('Input focus behavior', () => { + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.doubleClickCanvas() + }) + + test('focuses input after adding a filter', async ({ comfyPage }) => { + await comfyPage.searchBox.addFilter('MODEL', 'Input Type') + await expect(comfyPage.searchBox.input).toHaveFocus() + }) + + test('focuses input after removing a filter', async ({ comfyPage }) => { + await comfyPage.searchBox.addFilter('MODEL', 'Input Type') + await comfyPage.searchBox.removeFilter(0) + await expect(comfyPage.searchBox.input).toHaveFocus() + }) + }) }) test.describe('Release context menu', () => { diff --git a/src/components/searchbox/NodeSearchBox.vue b/src/components/searchbox/NodeSearchBox.vue index cd47d5880..8cd137ecd 100644 --- a/src/components/searchbox/NodeSearchBox.vue +++ b/src/components/searchbox/NodeSearchBox.vue @@ -65,7 +65,7 @@