From 8ccc8b9d8f53ea3a83603568a171eb53db5eab63 Mon Sep 17 00:00:00 2001 From: Alexander Brown <448862+DrJKL@users.noreply.github.com> Date: Sat, 31 Jan 2026 16:25:40 -0800 Subject: [PATCH] fix: browser test fixes and typecheck script - Fix widgetTextBox locator in ComfyPage - Add exact match for 'Add' button in search filter panel - Fix ClipboardHelper to properly handle undefined vs null locators - Use canvasOps.dragAndDrop in NodeOperationsHelper - Use nodeOps.waitForGraphNodes in link interaction tests - Add typecheck:browser script for browser tests Amp-Thread-ID: https://ampcode.com/threads/T-019c1696-c595-7724-8dca-64f73f19f478 Co-authored-by: Amp --- browser_tests/fixtures/ComfyPage.ts | 5 +---- browser_tests/fixtures/components/ComfyNodeSearchBox.ts | 2 +- browser_tests/fixtures/helpers/ClipboardHelper.ts | 4 ++-- browser_tests/fixtures/helpers/NodeOperationsHelper.ts | 4 ++-- .../vueNodes/interactions/links/linkInteraction.spec.ts | 4 ++-- package.json | 1 + 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/browser_tests/fixtures/ComfyPage.ts b/browser_tests/fixtures/ComfyPage.ts index f3942d415..326ee39bb 100644 --- a/browser_tests/fixtures/ComfyPage.ts +++ b/browser_tests/fixtures/ComfyPage.ts @@ -195,10 +195,7 @@ export class ComfyPage { this.url = process.env.PLAYWRIGHT_TEST_URL || 'http://localhost:8188' this.canvas = page.locator('#graph-canvas') this.selectionToolbox = page.locator('.selection-toolbox') - this.widgetTextBox = page - .locator('[data-node-id]') - .first() - .getByPlaceholder('text') + this.widgetTextBox = page.getByPlaceholder('text').nth(1) this.resetViewButton = page.getByRole('button', { name: 'Reset View' }) this.queueButton = page.getByRole('button', { name: 'Queue Prompt' }) this.runButton = page diff --git a/browser_tests/fixtures/components/ComfyNodeSearchBox.ts b/browser_tests/fixtures/components/ComfyNodeSearchBox.ts index 82f0945a6..f2a96fa8f 100644 --- a/browser_tests/fixtures/components/ComfyNodeSearchBox.ts +++ b/browser_tests/fixtures/components/ComfyNodeSearchBox.ts @@ -30,7 +30,7 @@ export class ComfyNodeSearchFilterSelectionPanel { async addFilter(filterValue: string, filterType: string) { await this.selectFilterType(filterType) await this.selectFilterValue(filterValue) - await this.page.getByRole('button', { name: 'Add' }).click() + await this.page.getByRole('button', { name: 'Add', exact: true }).click() } } diff --git a/browser_tests/fixtures/helpers/ClipboardHelper.ts b/browser_tests/fixtures/helpers/ClipboardHelper.ts index 89e4b4603..4c9f1a2b5 100644 --- a/browser_tests/fixtures/helpers/ClipboardHelper.ts +++ b/browser_tests/fixtures/helpers/ClipboardHelper.ts @@ -9,10 +9,10 @@ export class ClipboardHelper { ) {} async copy(locator?: Locator | null): Promise { - await this.keyboard.ctrlSend('KeyC', locator ?? this.canvas) + await this.keyboard.ctrlSend('KeyC', locator === undefined ? null : locator) } async paste(locator?: Locator | null): Promise { - await this.keyboard.ctrlSend('KeyV', locator ?? this.canvas) + await this.keyboard.ctrlSend('KeyV', locator === undefined ? null : locator) } } diff --git a/browser_tests/fixtures/helpers/NodeOperationsHelper.ts b/browser_tests/fixtures/helpers/NodeOperationsHelper.ts index de0c6ac66..0fadb418c 100644 --- a/browser_tests/fixtures/helpers/NodeOperationsHelper.ts +++ b/browser_tests/fixtures/helpers/NodeOperationsHelper.ts @@ -119,13 +119,13 @@ export class NodeOperationsHelper { y: nodePos.y + nodeSize.height * ratioY } // -1 to be inside the node. -2 because nodes currently get an arbitrary +1 to width. - await this.comfyPage.dragAndDrop( + await this.comfyPage.canvasOps.dragAndDrop( { x: bottomRight.x - 2, y: bottomRight.y - 1 }, target ) await this.comfyPage.nextFrame() if (revertAfter) { - await this.comfyPage.dragAndDrop( + await this.comfyPage.canvasOps.dragAndDrop( { x: target.x - 2, y: target.y - 1 }, bottomRight ) diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts index e6d8d0331..4bde300e5 100644 --- a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts +++ b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts @@ -1050,11 +1050,11 @@ test.describe('Vue Node Link Interaction', { tag: '@screenshot' }, () => { }) => { // Setup workflow with a KSampler node await comfyPage.command.executeCommand('Comfy.NewBlankWorkflow') - await comfyPage.waitForGraphNodes(0) + await comfyPage.nodeOps.waitForGraphNodes(0) await comfyPage.command.executeCommand('Workspace.SearchBox.Toggle') await comfyPage.nextFrame() await comfyPage.searchBox.fillAndSelectFirstNode('KSampler') - await comfyPage.waitForGraphNodes(1) + await comfyPage.nodeOps.waitForGraphNodes(1) // Convert the KSampler node to a subgraph let ksamplerNode = ( diff --git a/package.json b/package.json index 86db51eb8..ade16ba48 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "test:browser:local": "cross-env PLAYWRIGHT_LOCAL=1 pnpm test:browser", "test:unit": "nx run test", "typecheck": "vue-tsc --noEmit", + "typecheck:browser": "tsc --project browser_tests/tsconfig.json", "typecheck:desktop": "nx run @comfyorg/desktop-ui:typecheck", "zipdist": "node scripts/zipdist.js", "clean": "nx reset"