Skip to content

Conversation

@Myestery
Copy link
Collaborator

@Myestery Myestery commented Dec 6, 2025

Summary

  • Adds a capture-phase pointerdown handler to NodeWidgets that calls bringNodeToFront whenever any widget is clicked
  • Improves UX by ensuring the interacted node is always visible on top, without requiring the node itself to be selected

fix #7131

Before

Screen.Recording.2025-12-06.at.04.39.39.mov

After

Screen.Recording.2025-12-06.at.04.40.05.mov

Test plan

  • Click on any widget (button, dropdown, input, etc.) within a Vue node
  • Verify the node moves to the front (highest z-index) when the widget is clicked
  • Verify existing widget functionality is unaffected

Adds a capture-phase pointerdown handler to NodeWidgets that calls
bringNodeToFront whenever any widget is clicked, improving UX by
ensuring the interacted node is always visible on top.
@Myestery Myestery requested a review from a team as a code owner December 6, 2025 03:37
@dosubot dosubot bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Dec 6, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 6, 2025

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (3)
  • browser_tests/tests/interaction.spec.ts-snapshots/prompt-dialog-closed-chromium-linux.png is excluded by !**/*.png
  • browser_tests/tests/interaction.spec.ts-snapshots/prompt-dialog-closed-text-chromium-linux.png is excluded by !**/*.png
  • browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png is excluded by !**/*.png

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

Adds capture-phase pointerdown in node widgets and calls a z-index composable from selection handlers so unpinned nodes are moved to the front on pointer interaction; includes end-to-end tests validating bring-to-front behavior.

Changes

Cohort / File(s) Summary
Node widget — pointerdown capture
src/renderer/extensions/vueNodes/components/NodeWidgets.vue
Imports useNodeZIndex, obtains bringNodeToFront, adds local handleBringToFront() and attaches it as @pointerdown.capture to call bringNodeToFront(String(nodeData.id)) when nodeData.id exists. Existing pointer handlers remain.
Selection handlers — bring to front after selection
src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts
After single/multi selection (handleNodeSelect) and pointer-up selection (toggleNodeSelectionAfterPointerUp), conditionally calls bringNodeToFront(nodeId) when the node is not pinned.
Z-index composable
src/renderer/extensions/vueNodes/composables/useNodeZIndex*
Adds/exports bringNodeToFront used by NodeWidgets and event handlers to update node stacking order.
Browser tests — bring-to-front scenarios
browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
New end-to-end tests verifying clicking node bodies and widgets brings overlapped nodes to the front; includes helpers to read inline z-index, compute node centers, drag nodes, and capture screenshots.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant NodeWidget as NodeWidgets.vue
  participant Handlers as useNodeEventHandlers.ts
  participant ZIndex as useNodeZIndex

  User->>NodeWidget: pointerdown (capture)
  NodeWidget->>ZIndex: bringNodeToFront(nodeId)
  ZIndex-->>NodeWidget: stacking updated

  Note over User,Handlers: pointerup / selection flow
  User->>NodeWidget: pointerup
  NodeWidget->>Handlers: handleNodeSelect / toggleNodeSelectionAfterPointerUp
  Handlers->>Handlers: check pinned?
  alt not pinned
    Handlers->>ZIndex: bringNodeToFront(nodeId)
    ZIndex-->>Handlers: stacking updated
  end
Loading

Pre-merge checks and finishing touches

✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The pull request implements the core objective from issue #7131 by adding pointerdown handlers to bring nodes to front when widgets are clicked.
Out of Scope Changes check ✅ Passed All changes align with the scope of fixing z-index issues with widget overlays and bringing nodes to front on widget interaction.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Dec 6, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 12/11/2025, 08:50:13 PM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Dec 6, 2025

🎭 Playwright Test Results

All tests passed!

⏰ Completed at: 12/11/2025, 08:55:40 PM UTC

📈 Summary

  • Total Tests: 9
  • Passed: 9 ✅
  • Failed: 0
  • Flaky: 0
  • Skipped: 0

📊 Test Reports by Browser

  • chromium: Deployment failed
  • chromium-2x: View Report • ✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • chromium-0.5x: View Report • ✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • mobile-chrome: View Report • ✅ 6 / ❌ 0 / ⚠️ 0 / ⏭️ 0

🎉 Click on the links above to view detailed test results for each browser configuration.

@github-actions
Copy link

github-actions bot commented Dec 6, 2025

Bundle Size Report

Summary

  • Raw size: 17.1 MB baseline 17.1 MB — 🔴 +498 B
  • Gzip: 3.39 MB baseline 3.39 MB — 🔴 +49 B
  • Brotli: 2.6 MB baseline 2.6 MB — 🟢 -4 B
  • Bundles: 97 current • 97 baseline • 39 added / 39 removed

Category Glance
App Entry Points 🔴 +747 B (3.24 MB) · Graph Workspace 🟢 -249 B (988 kB) · Vendor & Third-Party ⚪ 0 B (8.56 MB) · Other ⚪ 0 B (3.81 MB) · Panels & Settings ⚪ 0 B (298 kB) · UI Components ⚪ 0 B (178 kB) · + 3 more

Per-category breakdown
App Entry Points — 3.24 MB (baseline 3.23 MB) • 🔴 +747 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-DPj7t_46.js (new) 3.01 MB 🔴 +3.01 MB 🔴 +626 kB 🔴 +476 kB
assets/index-DhWBY8Aw.js (removed) 3.01 MB 🟢 -3.01 MB 🟢 -625 kB 🟢 -476 kB
assets/index-COp2tXya.js (new) 224 kB 🔴 +224 kB 🔴 +47.7 kB 🔴 +39.3 kB
assets/index-DHPlFi2E.js (removed) 224 kB 🟢 -224 kB 🟢 -47.7 kB 🟢 -39.4 kB
assets/index-5pe1Q0_Q.js (removed) 345 B 🟢 -345 B 🟢 -247 B 🟢 -236 B
assets/index-CKpd5QsY.js (new) 345 B 🔴 +345 B 🔴 +246 B 🔴 +200 B

Status: 3 added / 3 removed

Graph Workspace — 988 kB (baseline 988 kB) • 🟢 -249 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-C6cSUzS8.js (removed) 988 kB 🟢 -988 kB 🟢 -191 kB 🟢 -146 kB
assets/GraphView-C3iT9_jE.js (new) 988 kB 🔴 +988 kB 🔴 +191 kB 🔴 +146 kB

Status: 1 added / 1 removed

Views & Navigation — 6.54 kB (baseline 6.54 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/UserSelectView-CaWIN9CC.js (removed) 6.54 kB 🟢 -6.54 kB 🟢 -2.14 kB 🟢 -1.9 kB
assets/UserSelectView-Dtxv8zhP.js (new) 6.54 kB 🔴 +6.54 kB 🔴 +2.14 kB 🔴 +1.9 kB

Status: 1 added / 1 removed

Panels & Settings — 298 kB (baseline 298 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/LegacyCreditsPanel-C7qI14ua.js (removed) 21.4 kB 🟢 -21.4 kB 🟢 -5.15 kB 🟢 -4.5 kB
assets/LegacyCreditsPanel-DxjL2oWI.js (new) 21.4 kB 🔴 +21.4 kB 🔴 +5.16 kB 🔴 +4.5 kB
assets/KeybindingPanel-CXs_xJD3.js (new) 13.6 kB 🔴 +13.6 kB 🔴 +3.42 kB 🔴 +3.01 kB
assets/KeybindingPanel-LlWhiJp8.js (removed) 13.6 kB 🟢 -13.6 kB 🟢 -3.42 kB 🟢 -3.01 kB
assets/ExtensionPanel-CVb8CH8l.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.57 kB 🔴 +2.26 kB
assets/ExtensionPanel-HcQ1-ql3.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.58 kB 🟢 -2.26 kB
assets/AboutPanel-BMizAFtY.js (removed) 9.16 kB 🟢 -9.16 kB 🟢 -2.46 kB 🟢 -2.21 kB
assets/AboutPanel-zTWy-OPn.js (new) 9.16 kB 🔴 +9.16 kB 🔴 +2.46 kB 🔴 +2.21 kB
assets/ServerConfigPanel-BYDoE8XG.js (new) 6.56 kB 🔴 +6.56 kB 🔴 +1.83 kB 🔴 +1.63 kB
assets/ServerConfigPanel-CkHDcec5.js (removed) 6.56 kB 🟢 -6.56 kB 🟢 -1.83 kB 🟢 -1.63 kB
assets/UserPanel-BDNzOSVC.js (removed) 6.23 kB 🟢 -6.23 kB 🟢 -1.72 kB 🟢 -1.5 kB
assets/UserPanel-DUIliI68.js (new) 6.23 kB 🔴 +6.23 kB 🔴 +1.72 kB 🔴 +1.51 kB
assets/settings-BhbWhsRg.js 101 B 101 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BXTtSH4O.js 33.3 kB 33.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C9Pzn-NG.js 25.2 kB 25.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CCy2fA_h.js 27.3 kB 27.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CQpqEFfl.js 26.6 kB 26.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DHcnxypw.js 21.7 kB 21.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DhFTK9fY.js 25.1 kB 25.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DlT4t_ui.js 25.9 kB 25.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DRgSrIdD.js 24.2 kB 24.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-tjkeqiZq.js 21.1 kB 21.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 6 added / 6 removed

UI Components — 178 kB (baseline 178 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/Load3D.vue_vue_type_script_setup_true_lang-B2auCfQy.js (new) 53.7 kB 🔴 +53.7 kB 🔴 +8.48 kB 🔴 +7.29 kB
assets/Load3D.vue_vue_type_script_setup_true_lang-D8EqELwI.js (removed) 53.7 kB 🟢 -53.7 kB 🟢 -8.48 kB 🟢 -7.29 kB
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-K_ZBnRLw.js (new) 48.1 kB 🔴 +48.1 kB 🔴 +10.4 kB 🔴 +8.98 kB
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-oyDRyWjI.js (removed) 48.1 kB 🟢 -48.1 kB 🟢 -10.4 kB 🟢 -8.98 kB
assets/LazyImage.vue_vue_type_script_setup_true_lang-BjSjYch4.js (removed) 48 kB 🟢 -48 kB 🟢 -10.6 kB 🟢 -9.31 kB
assets/LazyImage.vue_vue_type_script_setup_true_lang-CIApSHeP.js (new) 48 kB 🔴 +48 kB 🔴 +10.6 kB 🔴 +9.32 kB
assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-BWQrxNsp.js (new) 12.9 kB 🔴 +12.9 kB 🔴 +3.37 kB 🔴 +2.98 kB
assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-DLzQGuF9.js (removed) 12.9 kB 🟢 -12.9 kB 🟢 -3.37 kB 🟢 -2.97 kB
assets/ComfyQueueButton-B1RkUfzy.js (removed) 8.44 kB 🟢 -8.44 kB 🟢 -2.48 kB 🟢 -2.21 kB
assets/ComfyQueueButton-RXUM7Vxr.js (new) 8.44 kB 🔴 +8.44 kB 🔴 +2.48 kB 🔴 +2.22 kB
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-DnMM_Fdi.js (new) 2.47 kB 🔴 +2.47 kB 🔴 +934 B 🔴 +805 B
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-DU0QvzUd.js (removed) 2.47 kB 🟢 -2.47 kB 🟢 -937 B 🟢 -811 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-C3OsHxUu.js (new) 897 B 🔴 +897 B 🔴 +502 B 🔴 +435 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-CzPvVEtp.js (removed) 897 B 🟢 -897 B 🟢 -504 B 🟢 -429 B
assets/UserAvatar.vue_vue_type_script_setup_true_lang-DROonty0.js 1.34 kB 1.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-CK5wnnsh.js 2.04 kB 2.04 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

Data & Services — 12.5 kB (baseline 12.5 kB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/keybindingService-7ukNsNeS.js (removed) 7.51 kB 🟢 -7.51 kB 🟢 -1.83 kB 🟢 -1.58 kB
assets/keybindingService-WAdVTK5D.js (new) 7.51 kB 🔴 +7.51 kB 🔴 +1.84 kB 🔴 +1.58 kB
assets/audioService-C66Qxpb0.js (removed) 2.2 kB 🟢 -2.2 kB 🟢 -963 B 🟢 -822 B
assets/audioService-DT4If8qB.js (new) 2.2 kB 🔴 +2.2 kB 🔴 +962 B 🔴 +822 B
assets/serverConfigStore-C8zDWJOU.js 2.83 kB 2.83 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 2 added / 2 removed

Utilities & Hooks — 3.18 kB (baseline 3.18 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/audioUtils-BU8C6uEV.js (new) 1.41 kB 🔴 +1.41 kB 🔴 +652 B 🔴 +542 B
assets/audioUtils-CKJ2_-kO.js (removed) 1.41 kB 🟢 -1.41 kB 🟢 -654 B 🟢 -548 B
assets/mathUtil-CD4DsosH.js 1.32 kB 1.32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeFilterUtil-CXKCRJ-m.js 460 B 460 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

Vendor & Third-Party — 8.56 MB (baseline 8.56 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-QtHvZroj.js 452 kB 452 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-Es5IU4iT.js 3.98 MB 3.98 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-DRta5A0j.js 1.96 MB 1.96 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-aR6ntw5X.js 1.37 MB 1.37 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-1u_V6HbC.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-30uFjOtU.js 160 kB 160 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BZLod3g9.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 3.81 MB (baseline 3.81 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WidgetRecordAudio-CWiDPJ5q.js (removed) 20.4 kB 🟢 -20.4 kB 🟢 -5.23 kB 🟢 -4.62 kB
assets/WidgetRecordAudio-Ds6WHzt1.js (new) 20.4 kB 🔴 +20.4 kB 🔴 +5.23 kB 🔴 +4.62 kB
assets/AudioPreviewPlayer-B2aKmOta.js (removed) 13.4 kB 🟢 -13.4 kB 🟢 -3.37 kB 🟢 -3.01 kB
assets/AudioPreviewPlayer-D56_RMHh.js (new) 13.4 kB 🔴 +13.4 kB 🔴 +3.37 kB 🔴 +3.01 kB
assets/WidgetGalleria-C1sdYY0U.js (removed) 4.1 kB 🟢 -4.1 kB 🟢 -1.44 kB 🟢 -1.3 kB
assets/WidgetGalleria-DsL37D_X.js (new) 4.1 kB 🔴 +4.1 kB 🔴 +1.44 kB 🔴 +1.3 kB
assets/WidgetColorPicker-7FBoXaUG.js (removed) 3.41 kB 🟢 -3.41 kB 🟢 -1.38 kB 🟢 -1.23 kB
assets/WidgetColorPicker-CiJ1YzGs.js (new) 3.41 kB 🔴 +3.41 kB 🔴 +1.38 kB 🔴 +1.23 kB
assets/WidgetTextarea-Dm4J-OZb.js (removed) 3.08 kB 🟢 -3.08 kB 🟢 -1.22 kB 🟢 -1.1 kB
assets/WidgetTextarea-qOhcGrEo.js (new) 3.08 kB 🔴 +3.08 kB 🔴 +1.22 kB 🔴 +1.07 kB
assets/WidgetMarkdown-D0rmarLo.js (new) 3.08 kB 🔴 +3.08 kB 🔴 +1.28 kB 🔴 +1.12 kB
assets/WidgetMarkdown-kYRqcNSp.js (removed) 3.08 kB 🟢 -3.08 kB 🟢 -1.28 kB 🟢 -1.13 kB
assets/WidgetAudioUI-CkTfvudd.js (removed) 2.85 kB 🟢 -2.85 kB 🟢 -1.16 kB 🟢 -1.05 kB
assets/WidgetAudioUI-CLPK2kJP.js (new) 2.85 kB 🔴 +2.85 kB 🔴 +1.16 kB 🔴 +1.05 kB
assets/WidgetInputText-St8f8UMZ.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +921 B 🔴 +852 B
assets/WidgetInputText-x753j3Mt.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -921 B 🟢 -850 B
assets/WidgetToggleSwitch-ByzKHZQL.js (removed) 1.76 kB 🟢 -1.76 kB 🟢 -837 B 🟢 -726 B
assets/WidgetToggleSwitch-DIZG5BMR.js (new) 1.76 kB 🔴 +1.76 kB 🔴 +833 B 🔴 +733 B
assets/MediaImageBottom-BjL3KyR8.js (removed) 1.55 kB 🟢 -1.55 kB 🟢 -732 B 🟢 -639 B
assets/MediaImageBottom-ynCw5cTx.js (new) 1.55 kB 🔴 +1.55 kB 🔴 +730 B 🔴 +639 B
assets/MediaAudioBottom-C1sPUIGD.js (removed) 1.51 kB 🟢 -1.51 kB 🟢 -733 B 🟢 -648 B
assets/MediaAudioBottom-DyfCW-PH.js (new) 1.51 kB 🔴 +1.51 kB 🔴 +733 B 🔴 +648 B
assets/Media3DBottom-CQHaWwAJ.js (removed) 1.5 kB 🟢 -1.5 kB 🟢 -732 B 🟢 -646 B
assets/Media3DBottom-DlL34yLT.js (new) 1.5 kB 🔴 +1.5 kB 🔴 +730 B 🔴 +647 B
assets/MediaVideoBottom-BB1cSkQC.js (removed) 1.5 kB 🟢 -1.5 kB 🟢 -729 B 🟢 -648 B
assets/MediaVideoBottom-BvUdYNST.js (new) 1.5 kB 🔴 +1.5 kB 🔴 +731 B 🔴 +648 B
assets/Media3DTop-BBN_msWs.js (new) 1.49 kB 🔴 +1.49 kB 🔴 +765 B 🔴 +652 B
assets/Media3DTop-ConUx2Ch.js (removed) 1.49 kB 🟢 -1.49 kB 🟢 -766 B 🟢 -652 B
assets/WidgetSelect-CV5cr9V_.js (removed) 655 B 🟢 -655 B 🟢 -343 B 🟢 -288 B
assets/WidgetSelect-EkmR0A_W.js (new) 655 B 🔴 +655 B 🔴 +344 B 🔴 +309 B
assets/WidgetInputNumber-BvjRHrI9.js (removed) 595 B 🟢 -595 B 🟢 -329 B 🟢 -276 B
assets/WidgetInputNumber-Dw_stod-.js (new) 595 B 🔴 +595 B 🔴 +327 B 🔴 +274 B
assets/Load3D-BpiXGblk.js (removed) 424 B 🟢 -424 B 🟢 -270 B 🟢 -223 B
assets/Load3D-BxmI_EpV.js (new) 424 B 🔴 +424 B 🔴 +267 B 🔴 +222 B
assets/WidgetLegacy-BNa0kX-z.js (removed) 364 B 🟢 -364 B 🟢 -239 B 🟢 -193 B
assets/WidgetLegacy-D04C072z.js (new) 364 B 🔴 +364 B 🔴 +238 B 🔴 +193 B
assets/commands-_s-RvhJR.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BuUILW6P.js 13 kB 13 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BV4R6fLx.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BWp4HdfU.js 101 B 101 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CLwPdnT6.js 14.2 kB 14.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CWMchBmd.js 15.9 kB 15.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DazTQhtc.js 12.9 kB 12.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DmWrOe93.js 13.7 kB 13.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DwiH7Kr6.js 13.8 kB 13.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-mS3LCNPn.js 14.5 kB 14.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BMi-Aksj.js 99 kB 99 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CqR8skJT.js 73.1 kB 73.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Cw9RZWRY.js 89 B 89 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DcRHAFEy.js 81.7 kB 81.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DdFdLxku.js 72.2 kB 72.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DJAtuVu5.js 84.3 kB 84.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DK8I9Rk3.js 114 kB 114 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-gP_ssnMb.js 83.4 kB 83.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-nxXY9vGp.js 94 kB 94 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Ycd3gqkA.js 86.5 kB 86.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-DPi7DMtd.js 1.46 kB 1.46 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-BixOCGRS.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-DM7ksxDd.js 2.65 kB 2.65 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BC3OlaIn.js 342 kB 342 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BsqN8-W1.js 285 kB 285 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bw_Jitw_.js 101 B 101 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CK2saYDx.js 307 kB 307 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Cm5kR4Hi.js 306 kB 306 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CMrh-uxB.js 310 kB 310 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DlUIOit1.js 369 kB 369 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DNu_xoP2.js 282 kB 282 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DpcvlpZe.js 303 kB 303 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-IyjOYIl-.js 317 kB 317 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-B6jx9bUF.js 2.48 kB 2.48 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-D6EQY_DK.js 2.21 kB 2.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-BIbGSUAt.js 1.28 kB 1.28 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 18 added / 18 removed

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 6, 2025

Note

Unit test generation is an Early Access feature. Expect some limitations and changes as we gather feedback and continue to improve it.


Generating unit tests... This may take up to 20 minutes.

@DrJKL
Copy link
Contributor

DrJKL commented Dec 6, 2025

@Myestery Want to add a small Playwright test for this?

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 6, 2025

UTG Post-Process Complete

No new issues were detected in the generated code and all check runs have completed. The unit test generation process has completed successfully.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 6, 2025

Creating a PR to put the unit tests in...

The changes have been created in this pull request: View PR

Myestery and others added 3 commits December 8, 2025 20:17
Selection now automatically brings the node to front (unless pinned),
ensuring selected nodes are always visible above other nodes.
Verifies overlapping nodes come to front when:
- Clicking on the node body
- Clicking on a widget
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:S This PR changes 10-29 lines, ignoring generated files. labels Dec 8, 2025
@Myestery Myestery added the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 8, 2025
@github-actions
Copy link

github-actions bot commented Dec 8, 2025

Updating Playwright Expectations

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 901c9f4 and 6eb8f1c.

⛔ Files ignored due to path filters (4)
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-overlapped-after-chromium-darwin.png is excluded by !**/*.png
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-overlapped-before-chromium-darwin.png is excluded by !**/*.png
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-widget-overlapped-after-chromium-darwin.png is excluded by !**/*.png
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-widget-overlapped-before-chromium-darwin.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (browser_tests/CLAUDE.md)

browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx}: Test user workflows in browser tests
Use Playwright fixtures for browser tests
Follow naming conventions for browser tests
Check assets/ directory for test data when writing tests
Prefer specific selectors in browser tests
Test across multiple viewports

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
**/*.ts

📄 CodeRabbit inference engine (AGENTS.md)

Use TypeScript exclusively; no new JavaScript code

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
**/*.{ts,vue}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,vue}: Use camelCase for variable and function names
Indent with 2 spaces (see .prettierrc)
Use single quotes for strings (see .prettierrc)
No trailing semicolons (see .prettierrc)
Maximum line width of 80 characters (see .prettierrc)
Sort and group imports by plugin (run pnpm format before committing)
Never use any type; use proper TypeScript types instead
Never use as any type assertions; fix the underlying type issue instead
Avoid code comments unless absolutely necessary; write expressive, self-documenting code instead
When writing new code, ask if there is a simpler way to introduce the same functionality; if yes, choose the simpler approach
Use refactoring to make complex code simpler
Use es-toolkit for utility functions
Use Vite for fast development and building
Implement proper error handling
Write tests for all changes, especially bug fixes to catch future regressions

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
browser_tests/**/*.spec.ts

📄 CodeRabbit inference engine (AGENTS.md)

Write E2E tests with Playwright; optional tags like @mobile and @2x are respected by config

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
🧠 Learnings (10)
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Write tests for new features

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.{ts,vue} : Write tests for all changes, especially bug fixes to catch future regressions

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{ts,tsx} : Use provided test helpers `createTestSubgraph` and `createTestSubgraphNode` from `./fixtures/subgraphHelpers` for consistent subgraph test setup

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Test user workflows in browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Test across multiple viewports

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Prefer specific selectors in browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Follow naming conventions for browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{js,ts,jsx,tsx} : When adding features, always write vitest unit tests using cursor rules in @.cursor

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Follow existing test patterns in the codebase

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.test.ts : Avoid writing tests dependent on non-behavioral features like utility classes or styles

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
🧬 Code graph analysis (1)
browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (2)
tests-ui/tests/litegraph/core/fixtures/testExtensions.ts (1)
  • test (35-67)
browser_tests/helpers/fitToView.ts (1)
  • fitToViewInstant (15-104)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: setup
  • GitHub Check: test
  • GitHub Check: lint-and-format
  • GitHub Check: collect
  • GitHub Check: setup
🔇 Additional comments (1)
browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (1)

99-107: Remove the unused textWidget variable and use the widget's bounding box for the click instead of hard-coded coordinates

The second test has two issues that should be fixed:

  1. Unused variable: const textWidget = clipNode.locator('textarea').first() is declared but never used.

  2. Hard-coded widget coordinates: Clicking at clipBox.x + 170, clipBox.y + 80 assumes a fixed internal layout and doesn't guarantee the click targets the textarea element itself. This can break if node styles change.

The textWidget locator is already available; use its bounding box to calculate the click position:

-    const clipNode = comfyPage.vueNodes.getNodeByTitle('CLIP Text Encode')
-    const clipBox = await clipNode.boundingBox()
-    const textWidget = clipNode.locator('textarea').first()
-    if (!clipBox) throw new Error('CLIP node not found')
-    await comfyPage.page.mouse.click(clipBox.x + 170, clipBox.y + 80)
+    const clipNode = comfyPage.vueNodes.getNodeByTitle('CLIP Text Encode')
+    const textWidget = clipNode.locator('textarea').first()
+    const widgetBox = await textWidget.boundingBox()
+    if (!widgetBox) throw new Error('CLIP text widget not found')
+    await comfyPage.page.mouse.click(
+      widgetBox.x + widgetBox.width / 2,
+      widgetBox.y + widgetBox.height / 2
+    )

This removes dead code, ties the interaction to the actual widget bounds, and aligns with the pattern used in getNodeCenter elsewhere in the test.

Likely an incorrect or invalid review comment.

@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 8, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (1)

53-57: Reduce brittleness from hard-coded drag/click offsets; prefer locators where possible

Both tests rely on magic offsets for drag and click targets (+50/+10, +30/+10, +170/+80), which assumes a very particular node layout and widget positioning. That increases the chance of flakiness if styles, fonts, or viewports change.

Consider tightening this by:

  • Deriving drag/click coordinates from both nodes’ bounding boxes (e.g. choose a point guaranteed to be inside CLIP but outside the overlapping node), rather than fixed offsets; and/or
  • For the widget case, scoping to a specific widget locator inside the CLIP node (e.g. a text input/textarea within clipNode) and calling .click() on that element instead of raw page coordinates, aligning with the “prefer specific selectors” guidance.

This would better express intent and make the tests more resilient to layout tweaks. Based on learnings, prefer specific selectors in browser tests.

Also applies to: 76-78, 100-103, 116-121

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6eb8f1c and 61ba522.

⛔ Files ignored due to path filters (1)
  • browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (browser_tests/CLAUDE.md)

browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx}: Test user workflows in browser tests
Use Playwright fixtures for browser tests
Follow naming conventions for browser tests
Check assets/ directory for test data when writing tests
Prefer specific selectors in browser tests
Test across multiple viewports

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
**/*.ts

📄 CodeRabbit inference engine (AGENTS.md)

Use TypeScript exclusively; no new JavaScript code

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
**/*.{ts,vue}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,vue}: Use camelCase for variable and function names
Indent with 2 spaces (see .prettierrc)
Use single quotes for strings (see .prettierrc)
No trailing semicolons (see .prettierrc)
Maximum line width of 80 characters (see .prettierrc)
Sort and group imports by plugin (run pnpm format before committing)
Never use any type; use proper TypeScript types instead
Never use as any type assertions; fix the underlying type issue instead
Avoid code comments unless absolutely necessary; write expressive, self-documenting code instead
When writing new code, ask if there is a simpler way to introduce the same functionality; if yes, choose the simpler approach
Use refactoring to make complex code simpler
Use es-toolkit for utility functions
Use Vite for fast development and building
Implement proper error handling
Write tests for all changes, especially bug fixes to catch future regressions

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
browser_tests/**/*.spec.ts

📄 CodeRabbit inference engine (AGENTS.md)

Write E2E tests with Playwright; optional tags like @mobile and @2x are respected by config

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
🧠 Learnings (15)
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Write tests for new features

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{ts,tsx} : Use provided test helpers `createTestSubgraph` and `createTestSubgraphNode` from `./fixtures/subgraphHelpers` for consistent subgraph test setup

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.{ts,vue} : Write tests for all changes, especially bug fixes to catch future regressions

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Test across multiple viewports

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Test user workflows in browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{js,ts,jsx,tsx} : When adding features, always write vitest unit tests using cursor rules in @.cursor

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Follow existing test patterns in the codebase

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Prefer specific selectors in browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.test.ts : Avoid writing tests dependent on non-behavioral features like utility classes or styles

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Follow naming conventions for browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Use Playwright fixtures for browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Use existing test utilities rather than writing custom utilities

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Always prefer vitest mock functions over writing verbose manual mocks

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:09.318Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursor/rules/unit-test.mdc:0-0
Timestamp: 2025-11-24T19:48:09.318Z
Learning: Applies to test/**/*.{test,spec}.{js,ts,jsx,tsx} : Mocks should be cleanly written and easy to understand, with reusable mocks where possible

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.test.ts : Avoid writing redundant tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: setup
  • GitHub Check: collect
  • GitHub Check: test
  • GitHub Check: lint-and-format
🔇 Additional comments (1)
browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (1)

20-41: Helper utilities for z-index and centers are clear and reusable

getNodeZIndex and getNodeCenter nicely encapsulate the DOM probing you need with proper ComfyPage typing and simple error handling, which keeps the test bodies focused on behavior rather than locator details. No changes needed here.

Myestery and others added 3 commits December 9, 2025 00:11
Makes assertions more robust by comparing both nodes' z-indices after
the click action rather than comparing to stale pre-action values.
@Myestery Myestery added the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 8, 2025
@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 9, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 61ba522 and 3b7065a.

⛔ Files ignored due to path filters (3)
  • browser_tests/tests/interaction.spec.ts-snapshots/prompt-dialog-closed-text-chromium-linux.png is excluded by !**/*.png
  • browser_tests/tests/nodeSearchBox.spec.ts-snapshots/added-node-no-connection-chromium-linux.png is excluded by !**/*.png
  • browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (browser_tests/CLAUDE.md)

browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx}: Test user workflows in browser tests
Use Playwright fixtures for browser tests
Follow naming conventions for browser tests
Check assets/ directory for test data when writing tests
Prefer specific selectors in browser tests
Test across multiple viewports

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
**/*.ts

📄 CodeRabbit inference engine (AGENTS.md)

Use TypeScript exclusively; no new JavaScript code

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
**/*.{ts,vue}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,vue}: Use camelCase for variable and function names
Indent with 2 spaces (see .prettierrc)
Use single quotes for strings (see .prettierrc)
No trailing semicolons (see .prettierrc)
Maximum line width of 80 characters (see .prettierrc)
Sort and group imports by plugin (run pnpm format before committing)
Never use any type; use proper TypeScript types instead
Never use as any type assertions; fix the underlying type issue instead
Avoid code comments unless absolutely necessary; write expressive, self-documenting code instead
When writing new code, ask if there is a simpler way to introduce the same functionality; if yes, choose the simpler approach
Use refactoring to make complex code simpler
Use es-toolkit for utility functions
Use Vite for fast development and building
Implement proper error handling
Write tests for all changes, especially bug fixes to catch future regressions

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
browser_tests/**/*.spec.ts

📄 CodeRabbit inference engine (AGENTS.md)

Write E2E tests with Playwright; optional tags like @mobile and @2x are respected by config

Files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
🧠 Learnings (17)
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Write tests for new features

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Test user workflows in browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.{ts,vue} : Write tests for all changes, especially bug fixes to catch future regressions

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Test across multiple viewports

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Follow naming conventions for browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Prefer specific selectors in browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{ts,tsx} : Use provided test helpers `createTestSubgraph` and `createTestSubgraphNode` from `./fixtures/subgraphHelpers` for consistent subgraph test setup

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{js,ts,jsx,tsx} : When adding features, always write vitest unit tests using cursor rules in @.cursor

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to browser_tests/**/*.spec.ts : Write E2E tests with Playwright; optional tags like `mobile` and `2x` are respected by config

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.test.ts : Avoid writing tests dependent on non-behavioral features like utility classes or styles

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:47:22.909Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.909Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Use Playwright fixtures for browser tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Use existing test utilities rather than writing custom utilities

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:09.318Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursor/rules/unit-test.mdc:0-0
Timestamp: 2025-11-24T19:48:09.318Z
Learning: Applies to test/**/*.{test,spec}.{js,ts,jsx,tsx} : Mocks should be cleanly written and easy to understand, with reusable mocks where possible

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Always prefer vitest mock functions over writing verbose manual mocks

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-12-06T00:52:35.750Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T00:52:35.750Z
Learning: Applies to **/*.test.ts : Avoid writing redundant tests

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Applies to tests-ui/**/*.test.{js,ts,jsx,tsx} : Follow existing test patterns in the codebase

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
📚 Learning: 2025-11-24T19:48:03.270Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: tests-ui/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:48:03.270Z
Learning: Check tests-ui/README.md for test guidelines

Applied to files:

  • browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: test
  • GitHub Check: lint-and-format
  • GitHub Check: setup
  • GitHub Check: collect
🔇 Additional comments (3)
browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts (3)

1-6: LGTM - Clean type import addresses previous feedback.

Importing ComfyPage type directly from the fixture module (line 5) is cleaner than the previously suggested local alias and eliminates the verbose inline type annotations. This makes the helper signatures readable while maintaining type safety.


80-83: LGTM - Z-index assertion correctly compares post-action state.

Comparing both nodes' z-indices after the click action (lines 81-82) makes the test robust to z-index normalization or rebasing strategies. This addresses the previous review feedback and focuses the assertion on the actual behavior: "CLIP is above KSampler after clicking CLIP."


124-127: LGTM - Z-index assertion correctly compares post-action state.

Comparing both nodes' z-indices after the widget click (lines 125-126) properly validates that CLIP moves above VAE regardless of absolute z-index values. This mirrors the correct pattern from the first test and addresses previous review feedback.

@Myestery Myestery added the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 9, 2025
@Myestery Myestery added New Browser Test Expectations New browser test screenshot should be set by github action and removed New Browser Test Expectations New browser test screenshot should be set by github action labels Dec 9, 2025
@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 9, 2025
@christian-byrne christian-byrne requested a review from DrJKL December 9, 2025 02:45
@Myestery Myestery linked an issue Dec 9, 2025 that may be closed by this pull request
1 task
@Myestery Myestery added the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 10, 2025
@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 10, 2025
@Myestery Myestery added the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 11, 2025
@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Dec 11, 2025
@Myestery Myestery merged commit 7c830a2 into main Dec 11, 2025
3 checks passed
@Myestery Myestery deleted the feat/bring-node-to-front-on-widget-click branch December 11, 2025 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

node 2 design z-index problem on dropdown selectors

3 participants