Skip to content

Conversation

@Myestery
Copy link
Contributor

@Myestery Myestery commented Jan 16, 2026

Summary

  • Fixes issue where locale commits would cancel in-progress E2E tests on release PRs
  • E2E tests now run once after i18n workflow completes for version-bump PRs

Changes

  1. Modified ci-tests-e2e.yaml:

    • Added workflow_call trigger with ref and pr_number inputs
    • Added skip condition for version-bump PRs on pull_request trigger
    • Updated checkout steps to use inputs.ref when called via workflow_call
  2. Created ci-tests-e2e-release.yaml:

    • Triggers on workflow_run completion of i18n: Update Core
    • Only runs for version-bump PRs from main repo
    • Calls original E2E workflow via workflow_call (no job duplication)

How it works

Regular PRs: CI: Tests E2E runs normally via pull_request trigger

Version-bump PRs:

  1. CI: Tests E2E skips (setup job condition fails)
  2. i18n: Update Core runs and commits locale updates
  3. CI: Tests E2E (Release PRs) triggers after i18n completes
  4. Calls CI: Tests E2E via workflow_call
  5. E2E tests run to completion without cancellation

Test plan

  • Tested workflow_call chain on fork
  • Verify version-bump PR skips regular E2E workflow
  • Verify E2E runs after i18n completes on next release

Fixes the issue identified during v1.38.2 release where locale commits caused E2E tests to restart multiple times.

┆Issue is synchronized with this Notion page by Unito

- Add workflow_call trigger to ci-tests-e2e.yaml
- Add skip condition for version-bump PRs on pull_request trigger
- Create ci-tests-e2e-release.yaml that triggers after i18n completes
- Calls original E2E workflow via workflow_call to avoid job duplication

Fixes the issue where locale commits would cancel in-progress E2E tests.
@Myestery Myestery requested a review from a team as a code owner January 16, 2026 02:16
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jan 16, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 16, 2026

📝 Walkthrough

Walkthrough

The changes introduce a new GitHub Actions workflow for orchestrating E2E tests on release PRs and modify the existing E2E test workflow to support reusable invocation via workflow_call with configurable inputs for Git ref and PR number.

Changes

Cohort / File(s) Summary
E2E Release Testing Trigger
.github/workflows/ci-tests-e2e-release.yaml
New workflow triggered on i18n workflow completion for version-bump PRs. Implements eligibility checks, retrieves PR metadata, and invokes the E2E test workflow with head SHA and PR number as inputs.
E2E Test Workflow (Reusable)
.github/workflows/ci-tests-e2e.yaml
Added workflow_call trigger with required ref and optional pr_number inputs. Updated all checkout, deployment, and commenting steps to use provided inputs with fallbacks to event context, enabling reuse from other workflows while maintaining backward compatibility.

Sequence Diagram(s)

sequenceDiagram
    participant GitHub as GitHub Actions
    participant I18N as i18n Workflow
    participant Release as ci-tests-e2e-release
    participant E2E as ci-tests-e2e (Reusable)
    
    GitHub->>I18N: Trigger workflow
    I18N->>GitHub: Workflow completes
    GitHub->>Release: Trigger on workflow_run (version-bump branch)
    Release->>Release: eligibility: Check branch pattern & SHA match
    rect rgba(100, 150, 200, 0.5)
        Release->>GitHub: get-pr-number: Query PRs by head SHA
        GitHub-->>Release: Return matching PR number
    end
    Release->>E2E: run-e2e-tests: Call workflow with<br/>ref & pr_number inputs
    rect rgba(150, 100, 200, 0.5)
        E2E->>E2E: Checkout at provided ref
        E2E->>E2E: Run E2E tests
        E2E->>GitHub: Comment on PR (using pr_number)
    end
Loading

Possibly related PRs

Suggested reviewers

  • DrJKL
  • christian-byrne

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions
Copy link

github-actions bot commented Jan 16, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 503 passed, 0 failed, 2 flaky, 8 skipped (Total: 513)

❌ Failed Tests

📊 Browser Reports
  • chromium: View Report (✅ 493 / ❌ 0 / ⚠️ 1 / ⏭️ 8)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 7 / ❌ 0 / ⚠️ 1 / ⏭️ 0)

@github-actions
Copy link

github-actions bot commented Jan 16, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/16/2026, 02:18:13 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@socket-security
Copy link

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedfs-extra@​11.3.210010010089100

View full report

@Myestery Myestery assigned DrJKL and unassigned christian-byrne Jan 16, 2026
@github-actions
Copy link

Bundle Size Report

Summary

  • Raw size: 19.8 MB baseline 19.8 MB — ⚪ 0 B
  • Gzip: 4.04 MB baseline 4.04 MB — ⚪ 0 B
  • Brotli: 3.08 MB baseline 3.08 MB — ⚪ 0 B
  • Bundles: 99 current • 99 baseline

Category Glance
Vendor & Third-Party ⚪ 0 B (9.34 MB) · Other ⚪ 0 B (5.38 MB) · App Entry Points ⚪ 0 B (3.35 MB) · Graph Workspace ⚪ 0 B (1.15 MB) · Panels & Settings ⚪ 0 B (372 kB) · UI Components ⚪ 0 B (209 kB) · + 3 more

Per-category breakdown
App Entry Points — 3.35 MB (baseline 3.35 MB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-BX__zrKJ.js 200 kB 200 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/index-C0ev799I.js 345 B 345 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/index-DnBPpEl0.js 3.14 MB 3.14 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Graph Workspace — 1.15 MB (baseline 1.15 MB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CRVTzQvp.js 1.15 MB 1.15 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Views & Navigation — 6.66 kB (baseline 6.66 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/UserSelectView-CnrymMoD.js 6.66 kB 6.66 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Panels & Settings — 372 kB (baseline 372 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/AboutPanel-Dxl8g0tM.js 9.2 kB 9.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ExtensionPanel-Dxd1v-RD.js 11.1 kB 11.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/KeybindingPanel-CbD2wNbN.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LegacyCreditsPanel-CfYOAXk_.js 25.2 kB 25.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ServerConfigPanel-BalPO6oV.js 7.55 kB 7.55 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BGQfQzTx.js 25.6 kB 25.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BVE4KHTw.js 22.7 kB 22.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BVtpJmlU.js 30.9 kB 30.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C2aO00Dz.js 28.6 kB 28.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Cm3ieBXR.js 27.8 kB 27.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CzQKMdK3.js 26.2 kB 26.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CzYUIUnL.js 27.1 kB 27.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DwKpL7jw.js 26.3 kB 26.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DX8feV4n.js 25.3 kB 25.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-mWzYycGc.js 22 kB 22 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-U4AdZ8Rl.js 34.9 kB 34.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserPanel-BMSvGVUb.js 6.92 kB 6.92 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
UI Components — 209 kB (baseline 209 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-BxQE175T.js 8.87 kB 8.87 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage.vue_vue_type_script_setup_true_lang-C8a4nWN_.js 69.7 kB 69.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Load3D.vue_vue_type_script_setup_true_lang-D8cphHIW.js 56.4 kB 56.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar.vue_vue_type_script_setup_true_lang-IJTLOeU1.js 1.34 kB 1.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-DJhTpdUI.js 2.25 kB 2.25 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-COsetxC6.js 16.4 kB 16.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-Decf3uMr.js 2.14 kB 2.14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-Bt6Aj_R3.js 48.1 kB 48.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-CwDpl463.js 3.75 kB 3.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Data & Services — 12.5 kB (baseline 12.5 kB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/audioService-CT2iLwKa.js 2.2 kB 2.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/keybindingService-DAtEVcfE.js 7.51 kB 7.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/serverConfigStore-DyIvWaGz.js 2.83 kB 2.83 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Utilities & Hooks — 1.41 kB (baseline 1.41 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/audioUtils-CxsiKUfV.js 1.41 kB 1.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Vendor & Third-Party — 9.34 MB (baseline 9.34 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-DZdD68iT.js 452 kB 452 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-C9GFBFnP.js 3.93 MB 3.93 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-NX-4NPlN.js 1.95 MB 1.95 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-7Sidv1he.js 111 kB 111 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-Bz1zdJb0.js 2.08 MB 2.08 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-DFkXpum7.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-DMH2Ziq4.js 165 kB 165 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BF8peZ5_.js 420 kB 420 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 5.38 MB (baseline 5.38 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/AudioPreviewPlayer-FvDvLUXF.js 13.4 kB 13.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-B32ZbeYu.js 16.5 kB 16.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-B7wQT83I.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BK3JVjMG.js 15.7 kB 15.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C6twMpaZ.js 15.5 kB 15.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CDUWpEwM.js 18.3 kB 18.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CfZ6FPZ-.js 15.7 kB 15.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-COIPP_pv.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CoPn_77e.js 14.7 kB 14.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CuRNS4XD.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DBHjCSPA.js 16.2 kB 16.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DZJaRLKH.js 15.7 kB 15.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Load3D-C8jIN5Pd.js 463 B 463 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-8BNo1weg.js 110 kB 110 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BPRfdNvb.js 127 kB 127 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CezbcLlR.js 98.1 kB 98.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-COBPG1am.js 134 kB 134 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-COodTO5z.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D2h56mz4.js 97.4 kB 97.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DkeDO8xU.js 110 kB 110 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DNecFfxQ.js 138 kB 138 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DPtAQ-XV.js 114 kB 114 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-R06XJOVT.js 116 kB 116 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-yFuDcHL9.js 154 kB 154 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-NIIcdXGh.js 1.53 kB 1.53 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-DUiRGHAk.js 1.46 kB 1.46 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-bDoNEAep.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-BrNs2ijx.js 2.65 kB 2.65 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-2h3z0SXa.js 324 kB 324 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-4bBZvQjV.js 298 kB 298 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-B1OXtv5-.js 295 kB 295 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-C_xG1nNM.js 324 kB 324 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CAgbt7pL.js 365 kB 365 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Cghy43iq.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DHrs5gc0.js 328 kB 328 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DPFlfVHx.js 321 kB 321 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DsMfXcAJ.js 366 kB 366 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DWdQhd19.js 337 kB 337 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-mAfdiTdx.js 317 kB 317 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SubscriptionRequiredDialogContent-V_eb0mzr.js 29.3 kB 29.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ValueControlPopover-ChJCEp1i.js 5.53 kB 5.53 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetAudioUI-B5QoWa9x.js 2.93 kB 2.93 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-CTa5K4p_.js 2.48 kB 2.48 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-mYf18f7h.js 3.44 kB 3.44 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-Cb4IJEzC.js 4.14 kB 4.14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-BAyqYPiH.js 3.21 kB 3.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputNumber-C1opkgg3.js 712 B 712 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-Du-WhLa2.js 2.03 kB 2.03 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLegacy-BdVnfGlP.js 403 B 403 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-MVK7c39f.js 3.12 kB 3.12 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-BIbGSUAt.js 1.28 kB 1.28 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetRecordAudio-C-PNwPxI.js 20.5 kB 20.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetSelect-2In1ELjO.js 772 B 772 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-CJMKDkbA.js 3.12 kB 3.12 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-JJP68tnd.js 2.7 kB 2.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.github/workflows/ci-tests-e2e.yaml (2)

220-229: Script injection vulnerability with github.head_ref.

github.head_ref (the branch name) is user-controlled and used directly in the inline script, which could allow command injection via maliciously crafted branch names. Pass it through an environment variable instead.

🔒 Suggested fix
      - name: Post starting comment
        env:
          GITHUB_TOKEN: ${{ github.token }}
+         HEAD_REF: ${{ github.head_ref || inputs.ref }}
        run: |
          chmod +x scripts/cicd/pr-playwright-deploy-and-comment.sh
          ./scripts/cicd/pr-playwright-deploy-and-comment.sh \
            "${{ inputs.pr_number || github.event.pull_request.number }}" \
-           "${{ github.head_ref || inputs.ref }}" \
+           "$HEAD_REF" \
            "starting" \
            "${{ steps.start-time.outputs.time }}"

255-265: Same script injection vulnerability with github.head_ref.

Apply the same fix here by passing github.head_ref || inputs.ref through an environment variable.

🔒 Suggested fix
      - name: Deploy reports and comment on PR
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          GITHUB_TOKEN: ${{ github.token }}
          GITHUB_SHA: ${{ inputs.ref || github.event.pull_request.head.sha }}
+         HEAD_REF: ${{ github.head_ref || inputs.ref }}
        run: |
          bash ./scripts/cicd/pr-playwright-deploy-and-comment.sh \
            "${{ inputs.pr_number || github.event.pull_request.number }}" \
-           "${{ github.head_ref || inputs.ref }}" \
+           "$HEAD_REF" \
            "completed"
🤖 Fix all issues with AI agents
In @.github/workflows/ci-tests-e2e-release.yaml:
- Around line 42-53: The pulls.list call may miss the target PR due to default
pagination; update the code that calls github.rest.pulls.list (and the
subsequent pr lookup using pr.head.sha and
context.payload.workflow_run.head_sha) to fetch all open PRs by either adding a
larger per_page (e.g., per_page: 100) or switching to pagination (e.g., use
github.paginate or octokit.paginate over github.rest.pulls.list) so the prs
array contains every open PR before running prs.find; ensure the ref remains the
same (pr variable and head.sha comparison) after changing the fetch logic.
📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0892956 and 9f3b21a.

📒 Files selected for processing (2)
  • .github/workflows/ci-tests-e2e-release.yaml
  • .github/workflows/ci-tests-e2e.yaml
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: Myestery
Repo: Comfy-Org/ComfyUI_frontend PR: 7422
File: .github/workflows/pr-update-playwright-expectations.yaml:131-135
Timestamp: 2025-12-12T23:02:37.473Z
Learning: In the `.github/workflows/pr-update-playwright-expectations.yaml` workflow in the Comfy-Org/ComfyUI_frontend repository, the snapshot update process is intentionally scoped to only add and update snapshot images. Deletions of snapshot files are handled explicitly outside this workflow and should not be suggested as part of this automation.
📚 Learning: 2025-12-12T23:02:37.473Z
Learnt from: Myestery
Repo: Comfy-Org/ComfyUI_frontend PR: 7422
File: .github/workflows/pr-update-playwright-expectations.yaml:131-135
Timestamp: 2025-12-12T23:02:37.473Z
Learning: In the `.github/workflows/pr-update-playwright-expectations.yaml` workflow in the Comfy-Org/ComfyUI_frontend repository, the snapshot update process is intentionally scoped to only add and update snapshot images. Deletions of snapshot files are handled explicitly outside this workflow and should not be suggested as part of this automation.

Applied to files:

  • .github/workflows/ci-tests-e2e-release.yaml
  • .github/workflows/ci-tests-e2e.yaml
📚 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:

  • .github/workflows/ci-tests-e2e-release.yaml
📚 Learning: 2026-01-10T00:24:17.695Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-10T00:24:17.695Z
Learning: Run quality gates before PR: `pnpm lint`, `pnpm typecheck`, `pnpm knip`, and ensure relevant tests pass

Applied to files:

  • .github/workflows/ci-tests-e2e-release.yaml
🪛 actionlint (1.7.10)
.github/workflows/ci-tests-e2e.yaml

261-261: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks for more details

(expression)

⏰ 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: deploy-and-comment
  • GitHub Check: test
  • GitHub Check: setup
  • GitHub Check: lint-and-format
  • GitHub Check: collect
🔇 Additional comments (4)
.github/workflows/ci-tests-e2e-release.yaml (1)

58-65: LGTM!

The job dependency chain and conditional execution are well-structured. The string comparison != 'null' is correct since GitHub Actions outputs are stringified, and the workflow_call properly passes the required inputs.

.github/workflows/ci-tests-e2e.yaml (3)

10-19: LGTM!

The workflow_call inputs are well-defined, with ref as required and pr_number as optional. This allows the workflow to be reused by the release workflow while maintaining backward compatibility with direct pull_request triggers.


28-33: LGTM!

The conditional logic correctly implements the skip behavior for version-bump PRs while ensuring the workflow runs for push events, workflow_call invocations, and non-version-bump PRs.


37-38: LGTM!

The checkout steps consistently use inputs.ref || '' pattern, which correctly falls back to the default ref when not invoked via workflow_call.

Also applies to: 73-74, 122-123, 168-169

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines +42 to +53
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
});

const pr = prs.find(p => p.head.sha === context.payload.workflow_run.head_sha);

if (!pr) {
console.log('No PR found for SHA:', context.payload.workflow_run.head_sha);
return null;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Potential pagination issue with pulls.list API.

The pulls.list call uses default pagination (30 PRs per page). If there are more than 30 open PRs, the version-bump PR might not be found, causing E2E tests to silently skip.

Consider increasing per_page or using pagination:

🔧 Suggested fix
 const { data: prs } = await github.rest.pulls.list({
   owner: context.repo.owner,
   repo: context.repo.repo,
   state: 'open',
+  per_page: 100,
 });
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
});
const pr = prs.find(p => p.head.sha === context.payload.workflow_run.head_sha);
if (!pr) {
console.log('No PR found for SHA:', context.payload.workflow_run.head_sha);
return null;
}
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
per_page: 100,
});
const pr = prs.find(p => p.head.sha === context.payload.workflow_run.head_sha);
if (!pr) {
console.log('No PR found for SHA:', context.payload.workflow_run.head_sha);
return null;
}
🤖 Prompt for AI Agents
In @.github/workflows/ci-tests-e2e-release.yaml around lines 42 - 53, The
pulls.list call may miss the target PR due to default pagination; update the
code that calls github.rest.pulls.list (and the subsequent pr lookup using
pr.head.sha and context.payload.workflow_run.head_sha) to fetch all open PRs by
either adding a larger per_page (e.g., per_page: 100) or switching to pagination
(e.g., use github.paginate or octokit.paginate over github.rest.pulls.list) so
the prs array contains every open PR before running prs.find; ensure the ref
remains the same (pr variable and head.sha comparison) after changing the fetch
logic.

Copy link
Member

@snomiao snomiao left a comment

Choose a reason for hiding this comment

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

Nice job! the code changes prevents i18n commits cancel e2e tests, SGTM.

and also workflow_run: seems will only works after merge to main.

so I think we can merge it to see if it works, (and revert+fix if it fails).

cc @christian-byrne @DrJKL

Comment on lines +5 to +7
workflow_run:
workflows: ['i18n: Update Core']
types: [completed]
Copy link
Contributor

Choose a reason for hiding this comment

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

Could this be added as a trigger to the existing e2e workflow?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

no not really, that workflow already has enough triggers

@Myestery Myestery enabled auto-merge (squash) January 16, 2026 16:40
@Myestery Myestery disabled auto-merge January 16, 2026 16:40
@Myestery Myestery merged commit b979ba8 into main Jan 16, 2026
38 checks passed
@Myestery Myestery deleted the fix/e2e-release-workflow branch January 16, 2026 16:40
DrJKL added a commit that referenced this pull request Jan 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:CI/CD size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants