Skip to content

Conversation

@Myestery
Copy link
Collaborator

@Myestery Myestery commented Dec 18, 2025

Summary

Use a pre-built container image with all dependencies for Playwright E2E tests, eliminating ~130s setup time per shard.

Changes

  • Use ghcr.io/myestery/comfyui-test-action:latest container for test jobs
  • Container includes: Playwright browsers, Node.js, pnpm, Python, ComfyUI backend (v0.5.1), all Python deps
  • Simplified setup: just copy devtools and start server (no cloning, no pip install, no browser setup)
  • Add version-bump* to branches-ignore to skip E2E tests for version bump PRs
  • Replace cache with artifacts (cache doesn't work inside containers)

Benefits

  • ~130s faster per shard (no ComfyUI clone, no pip install, no browser download)
  • Consistent environment across all test jobs
  • Simpler workflow configuration

Container Image

Repository: https://github.com/Myestery/comfyui-test-action
Image: ghcr.io/myestery/comfyui-test-action:latest

Test plan

  • Verify CI workflow runs with container
  • Verify Playwright tests pass
  • Verify snapshot updates work correctly

@Myestery Myestery requested a review from a team as a code owner December 18, 2025 23:29
@dosubot dosubot bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Dec 18, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 18, 2025

📝 Walkthrough

Walkthrough

Two GitHub Actions workflows were modified to replace cache-based artifact management with explicit artifact uploads and downloads. Containerized test execution environments were introduced for both E2E testing and Playwright expectation update jobs, with frontend dependencies installed and browsers pre-configured within containers.

Changes

Cohort / File(s) Summary
Workflow configuration and artifact management
​.github/workflows/ci-tests-e2e.yaml, ​.github/workflows/pr-update-playwright-expectations.yaml
Removed cache-key outputs and cache-based setup; replaced with frontend-dist artifact uploads in setup and artifact downloads in test/update jobs. Introduced containerized test execution environments. Added explicit frontend dependency installation steps prior to test execution. Enhanced error handling to gracefully manage missing snapshot artifacts and validate target directories before merge operations. Extended branch filtering in E2E tests to include version-bump\*.

Possibly related PRs

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ci/playwright-docker-containers

📜 Recent review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8525806 and 087317e.

📒 Files selected for processing (2)
  • .github/workflows/ci-tests-e2e.yaml (6 hunks)
  • .github/workflows/pr-update-playwright-expectations.yaml (4 hunks)
🧰 Additional context used
🧠 Learnings (10)
📓 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.
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
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
📚 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/pr-update-playwright-expectations.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/pr-update-playwright-expectations.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.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to tests-ui/**/*.test.ts : Write tests for all changes, especially bug fixes to catch future regressions

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Quality gates must pass: `pnpm lint`, `pnpm typecheck`, `pnpm knip`, and relevant tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 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: Be sure to typecheck when you're done making a series of code changes using `pnpm typecheck`

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-16T17:41:58.464Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T17:41:58.464Z
Learning: Prerequisites for repository setup: Node.js >= 24, Git repository, available ports for dev server and storybook

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
⏰ 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). (6)
  • GitHub Check: comment-on-pr-start
  • GitHub Check: storybook-build
  • GitHub Check: collect
  • GitHub Check: test
  • GitHub Check: lint-and-format
  • GitHub Check: yaml-lint
🔇 Additional comments (6)
.github/workflows/ci-tests-e2e.yaml (3)

9-9: Branch filter updated appropriately.

Adding version-bump* to branches-ignore prevents unnecessary E2E test runs for automated version bump PRs, which is a reasonable optimization.


30-36: Artifact-based distribution works correctly with containers.

Uploading only dist/ as an artifact is the right approach since GitHub Actions cache doesn't work inside containers. The 1-day retention and targeted path selection are appropriate.


141-152: Good decision to remove container from merge-reports job.

The merge-reports job correctly runs outside a container since it only needs the Playwright CLI for merge-reports command, not browsers or the full test environment. This improves startup time and resource usage.

.github/workflows/pr-update-playwright-expectations.yaml (3)

67-73: Artifact-based distribution approach is correct.

Replacing cache with artifacts for containerized workflows is the right solution. The scope (only dist/) and retention period (1 day) are appropriate.


116-140: Excellent debugging and container compatibility improvements.

The additions here are well-designed:

  1. Git safe.directory configuration (line 124) - Essential for git operations inside containers where the repository ownership differs from the container user
  2. Comprehensive debugging output - Shows directory structure, snapshot locations, and git status before operations, making failures much easier to diagnose
  3. Defensive file checks - Validates that snapshot directories and files exist before attempting operations

These changes demonstrate good defensive programming practices for containerized CI environments.


225-252: Good defensive handling for absent artifacts.

The added checks properly handle the case where no snapshot changes occurred across any shard:

  • Lines 225-233: Safely lists files only if the directory exists
  • Lines 244-252: Gracefully exits with success when no artifacts were downloaded, outputting "Shards merged: 0"

This prevents spurious failures when legitimate test runs produce no snapshot changes, and provides clear feedback about the workflow state.


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 Dec 18, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 12/20/2025, 06:13:46 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Dec 18, 2025

🎭 Playwright Test Results

Some tests failed

⏰ Completed at: 12/20/2025, 06:27:26 AM UTC

📈 Summary

  • Total Tests: 415
  • Passed: 312 ✅
  • Failed: 92 ❌
  • Flaky: 3 ⚠️
  • Skipped: 8 ⏭️

📊 Test Reports by Browser


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

@github-actions
Copy link

github-actions bot commented Dec 18, 2025

Bundle Size Report

Summary

  • Raw size: 16.6 MB baseline 16.6 MB — ⚪ 0 B
  • Gzip: 3.37 MB baseline 3.37 MB — ⚪ 0 B
  • Brotli: 2.59 MB baseline 2.59 MB — ⚪ 0 B
  • Bundles: 98 current • 98 baseline

Category Glance
Vendor & Third-Party ⚪ 0 B (8.46 MB) · Other ⚪ 0 B (3.44 MB) · App Entry Points ⚪ 0 B (3.21 MB) · Graph Workspace ⚪ 0 B (993 kB) · Panels & Settings ⚪ 0 B (297 kB) · UI Components ⚪ 0 B (185 kB) · + 3 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-CkrBk5Nz.js 2.98 MB 2.98 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/index-CokVhjgM.js 345 B 345 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/index-wJ4XPLGO.js 227 kB 227 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Graph Workspace — 993 kB (baseline 993 kB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-Bt5UyvMn.js 993 kB 993 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
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-B477QlBQ.js 6.54 kB 6.54 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Panels & Settings — 297 kB (baseline 297 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/AboutPanel-BKJuA3R_.js 9.16 kB 9.16 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ExtensionPanel-CYQinV-k.js 10.8 kB 10.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/KeybindingPanel-BouDGMid.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LegacyCreditsPanel-Ctd8DOti.js 21.4 kB 21.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ServerConfigPanel-DenrXFH9.js 7.07 kB 7.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BhbWhsRg.js 101 B 101 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BvFz-TmQ.js 33.1 kB 33.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BxYnTA2y.js 21.5 kB 21.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C6bMjAne.js 27.1 kB 27.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C7Yhp7H7.js 24 kB 24 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CsnOn8G0.js 25.7 kB 25.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-D5BGNZ7M.js 24.8 kB 24.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-D7k3huHm.js 25 kB 25 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DamkILzl.js 26.4 kB 26.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-s1k0gw1Y.js 20.9 kB 20.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserPanel-DvQdKVSK.js 6.23 kB 6.23 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
UI Components — 185 kB (baseline 185 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-BN22pRW0.js 8.45 kB 8.45 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage.vue_vue_type_script_setup_true_lang-BUX5GCl-.js 50 kB 50 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Load3D.vue_vue_type_script_setup_true_lang-CstA2wQE.js 53.5 kB 53.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-C9Rmxz-u.js 897 B 897 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar.vue_vue_type_script_setup_true_lang-DymEwRe0.js 1.34 kB 1.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-U5ly29Pt.js 2.04 kB 2.04 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-B9uyaUE8.js 14.3 kB 14.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-BZFmgyCD.js 2.14 kB 2.14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-D7FcgoNN.js 48.8 kB 48.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-D6Lf_72S.js 3.68 kB 3.68 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-BGjYKxJG.js 2.2 kB 2.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/keybindingService-_ITE3HQP.js 7.51 kB 7.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/serverConfigStore-7JI8VFS2.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-DU_P5eEm.js 1.41 kB 1.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Vendor & Third-Party — 8.46 MB (baseline 8.46 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-DaR9dw3X.js 452 kB 452 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-Cf7iqkoX.js 3.86 MB 3.86 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-BIgr9yoj.js 1.96 MB 1.96 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-C1LfRdh4.js 1.37 MB 1.37 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-C1NB2Q_L.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-DSfeuQOV.js 160 kB 160 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BF8peZ5_.js 420 kB 420 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 3.44 MB (baseline 3.44 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/AudioPreviewPlayer-CQtIzPMe.js 13.3 kB 13.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BWp4HdfU.js 101 B 101 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CcfGaui5.js 14.4 kB 14.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CisfgZf5.js 13.7 kB 13.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CkU12Foh.js 13 kB 13 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CoH2DJa6.js 14.2 kB 14.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-COSt-Bjx.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DalfIW5f.js 15.9 kB 15.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DfTl0eCm.js 13.5 kB 13.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DwSJL865.js 13.7 kB 13.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Zxyx15Vd.js 12.8 kB 12.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Load3D-BD2fhXLe.js 424 B 424 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BDhxs-bB.js 79.9 kB 79.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BtXVDFw6.js 84.7 kB 84.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Buv6RhU4.js 82.4 kB 82.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CgJ6zvJL.js 97.2 kB 97.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CI9qb0E5.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Cu4LqtW0.js 81.6 kB 81.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Cw9RZWRY.js 89 B 89 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Dm19QY4N.js 92.2 kB 92.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Tihe0h_r.js 71.3 kB 71.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-wPWMutMw.js 70.4 kB 70.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DBottom-np8bVwlH.js 1.5 kB 1.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-HwgPbkc8.js 1.49 kB 1.49 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioBottom-DkdG32s-.js 1.51 kB 1.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-Dr0afgCA.js 1.46 kB 1.46 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageBottom-yvuJ88_v.js 1.55 kB 1.55 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-BXa-oKEc.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoBottom-b3omN2bE.js 1.5 kB 1.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-BVdg2b8C.js 2.65 kB 2.65 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-1Vh3MCrN.js 240 kB 240 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-aW9En70v.js 260 kB 260 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BIckSVgU.js 273 kB 273 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BiYpVi7D.js 263 kB 263 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bw_Jitw_.js 101 B 101 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CCEXtYfM.js 243 kB 243 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CvmVDWYd.js 323 kB 323 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D_wreoPJ.js 267 kB 267 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Dz-0ZIBN.js 297 kB 297 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-VZsNmhG7.js 264 kB 264 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SubscriptionRequiredDialogContent-BDhtDez4.js 28 kB 28 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ValueControlPopover-Bm9ljVgS.js 5.49 kB 5.49 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetAudioUI-CnL7pLB5.js 2.89 kB 2.89 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-BU__hen8.js 2.48 kB 2.48 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-CLyBCkzm.js 3.41 kB 3.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-C27D1Wnv.js 4.1 kB 4.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-0zJeINY-.js 2.21 kB 2.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputNumber-DG2ggPPk.js 673 B 673 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-D1iy-2SB.js 1.99 kB 1.99 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLegacy-Vvyz_eQX.js 364 B 364 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-BDC4f7Fh.js 3.08 kB 3.08 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-0XtT0GjG.js 20.4 kB 20.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetSelect-COBBOSaQ.js 733 B 733 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-B1p4jFhC.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-n-Lv97Lo.js 1.76 kB 1.76 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 (1)
.github/workflows/ci-tests-e2e.yaml (1)

47-66: Update container image to use Playwright v1.57.0 to match project dependency.

The project uses Playwright v1.57.0, but the container image mcr.microsoft.com/playwright:v1.52.0-noble runs v1.52.0. If the Playwright version in the Docker image does not match the version in the project/tests, Playwright will be unable to locate browser executables. Change the container image tag from v1.52.0-noble to v1.57.0-noble.

Additionally, cache files are created by the runner (UID 1001 on ubuntu-latest) and mounted into the container, but the Playwright container's user 1001 may not have the necessary permissions if that user doesn't exist in the container. Consider using --user root or ensure the container image has a user with UID 1001 configured.

♻️ Duplicate comments (1)
.github/workflows/ci-tests-e2e.yaml (1)

96-98: Same permission and version concerns apply here.

This job has the same container configuration and cache restoration pattern as playwright-tests-chromium-sharded, so the permission mismatch and version compatibility concerns from lines 47-66 apply here as well.

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6244cf1 and 952e5cd.

📒 Files selected for processing (1)
  • .github/workflows/ci-tests-e2e.yaml (7 hunks)
🧰 Additional context used
🧠 Learnings (6)
📓 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.
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
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config
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
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright
📚 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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .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.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

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

9-9: LGTM: Reasonable optimization to skip E2E tests for version bump PRs.

This addition prevents running expensive E2E tests on automated version bump PRs, which is a sensible optimization.

@Myestery Myestery force-pushed the ci/playwright-docker-containers branch from 952e5cd to ef5a55d Compare December 18, 2025 23:42
@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:S This PR changes 10-29 lines, ignoring generated files. labels Dec 18, 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)
.github/workflows/ci-tests-e2e.yaml (1)

147-149: Note: merge-reports container usage already flagged.

This has already been reviewed in a previous comment. The full Playwright container (with browsers) is not necessary for the merge-reports job, but using it ensures CLI version consistency. A lighter Node.js container would be more efficient if startup time is a concern.

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 952e5cd and ef5a55d.

📒 Files selected for processing (1)
  • .github/workflows/ci-tests-e2e.yaml (5 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 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.
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
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
📚 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.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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

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

9-9: LGTM: Skip E2E tests on version bump PRs.

Adding version-bump* to the ignore list is appropriate for automated version bumps that don't require E2E validation.


55-61: LGTM: Correct pattern for container-based jobs with composite actions.

The checkout-then-download pattern is necessary because:

  1. Checkout provides access to .github/actions (local composite actions)
  2. Workspace download provides built artifacts from the setup job

This is the correct approach for container-based workflows using artifacts.


63-70: LGTM: Efficient test environment setup.

The setup correctly:

  • Launches the ComfyUI server for testing
  • Reuses the built frontend from the workspace artifact
  • Avoids redundant installation/build steps
  • Relies on container-provided browsers

72-84: LGTM: Proper sharded test execution and report handling.

The implementation correctly:

  • Uses blob reporter for efficient report merging across shards
  • Uploads reports even on test failure (!cancelled() condition)
  • Uses appropriate 1-day retention for intermediate blob reports
  • Properly names artifacts with shard indices

Copy link
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

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

For future PRs:

Unused files needing removal:

  • .github/actions/setup-playwright/action.yml

Docs needing updates after this PR:

  • browser_tests/README.md - Remove pnpm exec playwright install chromium --with-deps keep this as it's docs for running locally
  • CONTRIBUTING.md - Update Playwright test section to mention Docker approach

@Myestery
Copy link
Collaborator Author

We still have more issues to fix
Looks like the container cannot access the python in setup-server

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 (4)
.github/workflows/ci-tests-e2e.yaml (4)

29-38: Consider optimizing workspace artifact size to reduce CI overhead.

Using artifacts instead of cache works correctly with containers, but uploading the entire workspace (except .git) may create large artifacts if it includes node_modules and build outputs. This can slow upload/download times and consume storage quota unnecessarily.

If the artifact size exceeds 500MB, consider either:

  • Excluding node_modules and running pnpm install in downstream jobs (with cache if possible)
  • Using a targeted artifact containing only dist/ and files essential for test jobs

Note that file permissions are not preserved during artifact uploads.


44-46: Update Playwright container image to match project version.

The container image (v1.52.0) lags behind the project's Playwright dependency (v1.57.0). Update the container image from mcr.microsoft.com/playwright:v1.52.0-noble to mcr.microsoft.com/playwright:v1.57.0-noble to ensure consistency between CI and development environments.

🔎 Proposed fix
     container:
-      image: mcr.microsoft.com/playwright:v1.52.0-noble
+      image: mcr.microsoft.com/playwright:v1.57.0-noble
       options: --user 1001

92-94: Update Playwright container image to match project version.

Same version mismatch as in the chromium-sharded job. Update to v1.57.0.

🔎 Proposed fix
     container:
-      image: mcr.microsoft.com/playwright:v1.52.0-noble
+      image: mcr.microsoft.com/playwright:v1.57.0-noble
       options: --user 1001

149-151: Consider lighter container for merge-reports job.

The merge-reports job only runs playwright merge-reports CLI commands and doesn't execute tests or require browsers. Using the full Playwright container (which includes browser binaries, ~1.3GB) may be excessive.

However, using the same container ensures:

  • Consistent Playwright CLI version across all jobs
  • Simplified maintenance (single container version to update)

If you prioritize faster job startup and lower resource usage, consider using a lighter Node.js container with just @playwright/test installed. Otherwise, the current approach is acceptable for consistency.

💡 Alternative: Use lightweight Node container
   merge-reports:
     needs: [playwright-tests-chromium-sharded]
     runs-on: ubuntu-latest
-    container:
-      image: mcr.microsoft.com/playwright:v1.52.0-noble
-      options: --user 1001
     if: ${{ !cancelled() }}
     steps:
       - name: Checkout repository
         uses: actions/checkout@v5
 
-      # Setup pnpm/node to run playwright merge-reports (browsers pre-installed in container)
+      # Setup pnpm/node to run playwright merge-reports
       - name: Setup frontend
         uses: ./.github/actions/setup-frontend

This would use the default ubuntu-latest runner, which should work since no browsers are needed.

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ef5a55d and c13db76.

📒 Files selected for processing (2)
  • .github/actions/setup-comfyui-server/action.yml (3 hunks)
  • .github/workflows/ci-tests-e2e.yaml (5 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 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.
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
📚 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.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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
⏰ 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: lint-and-format
  • GitHub Check: test
  • GitHub Check: setup
  • GitHub Check: collect
🔇 Additional comments (8)
.github/actions/setup-comfyui-server/action.yml (2)

12-15: LGTM! Container mode input is well-defined.

The new container_mode input properly distinguishes between host and container execution environments with appropriate defaults.


39-40: LGTM! Conditional Python setup is correct.

The conditional logic correctly skips Python setup when running inside a container, as the container provides its own Python environment.

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

9-9: LGTM! Version bump branch exclusion is appropriate.

Adding version-bump* to branches-ignore prevents unnecessary E2E test runs on automated version bump PRs.


56-61: LGTM! Checkout and workspace download pattern is correct.

The sequence of checking out the repository first (to get .github/actions) then downloading the workspace artifact is the proper approach for container-based jobs.


68-68: LGTM! Container mode flag correctly passed.

Setting container_mode: true ensures the setup action skips redundant Python installation and uses the container's system Python.


102-108: LGTM! Checkout and workspace download pattern is correct.

The pattern is consistent with the chromium-sharded job and properly structured.


115-115: LGTM! Container mode flag correctly passed.

Consistent with the chromium-sharded job.


44-46: No action needed—--user 1001 is the officially recommended pattern for this Playwright container image in GitHub Actions.

Playwright's official CI documentation for GitHub Actions uses --user 1001 with mcr.microsoft.com/playwright:v1.57.0-noble. This configuration is verified as standard practice with no documented permission issues.

@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Dec 18, 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: 1

♻️ Duplicate comments (1)
.github/actions/setup-comfyui-server/action.yml (1)

55-58: Inconsistent pip invocation style (duplicate concern).

This code mixes python3 -m pip (line 55) with pip3 (lines 56-58). As noted in a previous review, using python3 -m pip consistently is more explicit and ensures you're using the pip module associated with the specific Python interpreter—especially important in containerized environments.

🔎 Proposed fix for consistency
 python3 -m pip install --upgrade pip --break-system-packages || python3 -m pip install --upgrade pip
-pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --break-system-packages || pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
-pip3 install -r requirements.txt --break-system-packages || pip3 install -r requirements.txt
-pip3 install wait-for-it --break-system-packages || pip3 install wait-for-it
+python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --break-system-packages || python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
+python3 -m pip install -r requirements.txt --break-system-packages || python3 -m pip install -r requirements.txt
+python3 -m pip install wait-for-it --break-system-packages || python3 -m pip install wait-for-it
📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c13db76 and ea73801.

📒 Files selected for processing (1)
  • .github/actions/setup-comfyui-server/action.yml (2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 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.
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
📚 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/actions/setup-comfyui-server/action.yml
⏰ 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: lint-and-format
  • GitHub Check: test
  • GitHub Check: collect
🔇 Additional comments (3)
.github/actions/setup-comfyui-server/action.yml (3)

12-15: LGTM! Container mode input is well-designed.

The container_mode input enables dual-mode operation while maintaining backward compatibility with existing workflows.


39-40: LGTM! Conditional Python setup is appropriate.

Correctly skips the setup-python action when running in container mode where system Python is available.


65-65: LGTM! Correct use of python3.

Explicitly using python3 ensures the correct interpreter is invoked in the container environment.

@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. size:L This PR changes 100-499 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. size:M This PR changes 30-99 lines, ignoring generated files. labels Dec 19, 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: 1

♻️ Duplicate comments (4)
.github/actions/setup-comfyui-server/action.yml (2)

70-78: Use python3 -m pip consistently.

Line 75 uses python3 -m pip while lines 76-78 use pip3. For consistency and to ensure the correct interpreter's pip is used, use python3 -m pip throughout.

🔎 Proposed fix
     - name: Install Python requirements (host mode)
       if: ${{ inputs.container_mode != 'true' }}
       shell: bash
       working-directory: ComfyUI
       run: |
         python3 -m pip install --upgrade pip
-        pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
-        pip3 install -r requirements.txt
-        pip3 install wait-for-it
+        python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
+        python3 -m pip install -r requirements.txt
+        python3 -m pip install wait-for-it

45-49: Use Python Playwright container image and remove this step.

This step will fail because:

  1. User 1001 (non-root) cannot execute apt-get commands—permission denied
  2. The workflow uses mcr.microsoft.com/playwright:v1.57.0-noble, which is the Node.js-based image without Python

The Python-enabled Playwright image includes Python and pip pre-installed. Update the workflow to use mcr.microsoft.com/playwright/python:v1.57.0-noble and remove this step entirely.

🔎 Required fixes in both files

In .github/workflows/ci-tests-e2e.yaml, update the container image:

 container:
-  image: mcr.microsoft.com/playwright:v1.57.0-noble
+  image: mcr.microsoft.com/playwright/python:v1.57.0-noble

Apply this change to all three container specifications (lines 44-45, 91-92, and 147-148).

In .github/actions/setup-comfyui-server/action.yml, remove the apt-get step:

-    - name: Install pip (container mode)
-      if: ${{ inputs.container_mode == 'true' }}
-      shell: bash
-      run: |
-        apt-get update && apt-get install -y python3-pip python3-venv
-
.github/workflows/ci-tests-e2e.yaml (2)

91-92: Use Python-enabled Playwright container.

Same issue as lines 44-46: use mcr.microsoft.com/playwright/python:v1.57.0-noble instead.


147-148: Use Python-enabled Playwright container.

Same issue as previous container specifications: use mcr.microsoft.com/playwright/python:v1.57.0-noble.

Note: The merge-reports job doesn't require browsers or Python—it only runs playwright merge-reports. Using the Python Playwright image works but is heavier than necessary. Consider this addressed for consistency, or optimize later with a lighter Node.js-only image if startup time becomes a concern.

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ea73801 and a9538ac.

📒 Files selected for processing (2)
  • .github/actions/setup-comfyui-server/action.yml (2 hunks)
  • .github/workflows/ci-tests-e2e.yaml (5 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 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.
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
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
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config
📚 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/actions/setup-comfyui-server/action.yml
  • .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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
⏰ 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: test
  • GitHub Check: lint-and-format
  • GitHub Check: collect
🔇 Additional comments (12)
.github/actions/setup-comfyui-server/action.yml (6)

12-15: LGTM: Clear input parameter.

The container_mode input is well-defined with appropriate defaults and documentation.


39-43: LGTM: Clean conditional logic for host mode.

The renamed step with conditional execution properly separates host and container workflows.


51-57: LGTM: Standard virtual environment setup.

The venv creation and PATH configuration are correct. This will work once the Python Playwright container image is used.


59-68: LGTM: Consistent pip usage within venv.

Using pip directly after activating the virtual environment is correct and more concise than python -m pip.


80-87: LGTM: Proper venv activation before server start.

The server startup correctly activates the virtual environment and uses the venv's Python executable.


89-95: LGTM: Host mode server startup is correct.

Using python3 directly in host mode is appropriate since the setup-python action installs it as python3.

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

9-9: LGTM: Skip E2E tests for version bumps.

Adding version-bump* to the ignore list is a sensible optimization for automated version bump PRs.


30-38: LGTM: Artifact-based workspace sharing works with containers.

Switching from cache to artifacts is necessary for container-based workflows. The entire workspace upload ensures all dependencies are available.


54-60: LGTM: Checkout before download ensures actions are available.

The explicit checkout step is necessary to access .github/actions before downloading the workspace artifact.


67-67: LGTM: Correct container_mode usage.

Passing container_mode: true activates the container-specific setup path in the action.


100-106: LGTM: Consistent checkout-then-download pattern.

Same correct approach as the chromium-sharded job.


113-113: LGTM: Correct container_mode usage.

Consistent with the chromium-sharded job.

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

♻️ Duplicate comments (1)
.github/workflows/ci-tests-e2e.yaml (1)

89-90: Add security option to run container as non-root user.

This container specification has the same security issue as lines 42-43: missing the --user 1001 option mentioned in the PR summary.

🔎 Proposed fix
     container:
       image: mcr.microsoft.com/playwright/python:v1.57.0-noble
+      options: --user 1001
📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a9538ac and df91d2a.

📒 Files selected for processing (2)
  • .github/actions/setup-comfyui-server/action.yml (2 hunks)
  • .github/workflows/ci-tests-e2e.yaml (6 hunks)
🧰 Additional context used
🧠 Learnings (6)
📓 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.
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
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
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config
📚 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.yaml
  • .github/actions/setup-comfyui-server/action.yml
📚 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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-16T17:41:58.464Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T17:41:58.464Z
Learning: Prerequisites for repository setup: Node.js >= 24, Git repository, available ports for dev server and storybook

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
⏰ 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: lint-and-format
  • GitHub Check: setup
  • GitHub Check: collect
  • GitHub Check: test
🔇 Additional comments (11)
.github/actions/setup-comfyui-server/action.yml (5)

12-15: LGTM: Container mode input enables flexible execution.

The container_mode input cleanly separates container and host execution paths. The default of 'false' maintains backward compatibility for existing callers.


39-43: LGTM: Host-only Python setup is correctly gated.

The conditional execution ensures Python setup only runs on host runners where it's needed, avoiding redundant setup in containers that already provide Python.


45-53: Verify the security implications of --break-system-packages.

The --break-system-packages flag bypasses PEP 668 protection for externally-managed Python environments. While necessary in some containerized setups, this approach:

  • Allows pip to modify system-managed packages
  • Could lead to dependency conflicts or version mismatches
  • Is appropriate for ephemeral CI containers but should be intentional

Consider whether a virtual environment approach would be more robust, or confirm that this flag is the intended solution for the Playwright Python container environment.


55-63: LGTM: Host mode requirements installation is correctly configured.

The host mode path correctly uses python3 -m pip without --break-system-packages, which is appropriate for non-containerized environments where Python is managed by actions/setup-python.


70-70: LGTM: Explicit python3 command improves reliability.

Using python3 instead of python ensures the correct interpreter is invoked consistently across both container and host execution modes.

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

9-9: LGTM: Skipping E2E tests for version bump PRs is sensible.

Version bump PRs typically only update version numbers and don't require full E2E test coverage, reducing unnecessary CI overhead.


30-36: LGTM: Artifact-based distribution is cleaner than cache-based approach.

Uploading only the built dist/ directory is more efficient than the full workspace. The 1-day retention is appropriate for CI artifacts that are only needed during the workflow run.


52-58: LGTM: Artifact-based workflow requires checkout before download.

The addition of checkout and artifact download steps correctly establishes the workspace needed for containerized test execution. The path mapping (frontend-distdist/) aligns with the setup job's artifact upload.


65-65: LGTM: Container mode flag correctly activates container-specific setup.

Passing container_mode: true enables the appropriate Python installation logic with --break-system-packages flags in the composite action.


66-67: LGTM: Step name accurately reflects its reduced scope.

The rename to "Setup nodejs, pnpm" correctly indicates that frontend building is handled in the setup job, and this step only installs runtime dependencies.


141-152: LGTM: Merge-reports job correctly avoids unnecessary container overhead.

Running the merge-reports job directly on ubuntu-latest without a container is the right choice. It only needs the Playwright CLI (via pnpm) to merge blob reports and doesn't require browsers or Python, making the lightweight approach more efficient.

@Myestery Myestery force-pushed the ci/playwright-docker-containers branch from 94ec109 to df91d2a Compare December 19, 2025 01:47
@socket-security
Copy link

socket-security bot commented Dec 19, 2025

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

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

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7919699 and bf5b857.

📒 Files selected for processing (1)
  • .github/workflows/pr-update-playwright-expectations.yaml (4 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 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.
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
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
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright
📚 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/pr-update-playwright-expectations.yaml
⏰ 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: lint-and-format
  • GitHub Check: collect
  • GitHub Check: test
  • GitHub Check: setup
🔇 Additional comments (7)
.github/workflows/pr-update-playwright-expectations.yaml (7)

66-73: LGTM: Artifact-based distribution is appropriate for container workflows.

The switch from cache to artifacts with 1-day retention is correct since cache doesn't work reliably inside containers.


91-95: LGTM: Artifact download correctly replaces cache restoration.

The artifact-based approach properly corresponds to the upload in the setup job and works reliably in container environments.


115-139: Good practices: Git configuration and debug output for container environments.

The git config --global --add safe.directory configuration (line 123) is essential for container environments where the repository is owned by a different user. The extensive debug output will help troubleshoot container-specific issues.


224-232: LGTM: Robust handling of missing artifacts.

The conditional check properly handles the case where no shards produced snapshot changes, providing clear feedback.


243-251: LGTM: Clean early exit when no artifacts to merge.

The guard correctly handles the scenario where no shards produced changes, preventing unnecessary processing and potential errors.


97-102: No action needed—the container_mode: true parameter properly handles Python executable access in container execution environments.


103-105: The setup-frontend action already properly implements dependency caching. It uses actions/setup-node with cache: 'pnpm', which relies on actions/cache under the hood for caching global packages data. GitHub cache works in containers; caches are found and restored properly in containerized workflows. Dependency installation will benefit from caching across runs.

Likely an incorrect or invalid review comment.

Comment on lines 79 to 80
container:
image: mcr.microsoft.com/playwright/python:v1.57.0-noble
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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Read the workflow file
echo "=== Workflow file (.github/workflows/pr-update-playwright-expectations.yaml) ==="
head -100 .github/workflows/pr-update-playwright-expectations.yaml | tail -30

echo -e "\n=== Lines around 79-80 ==="
sed -n '75,85p' .github/workflows/pr-update-playwright-expectations.yaml

echo -e "\n=== Test execution command around line 109 ==="
sed -n '105,115p' .github/workflows/pr-update-playwright-expectations.yaml

echo -e "\n=== Package.json devDependencies for @playwright ==="
grep -A 5 '"@playwright' package.json || grep -A 5 'playwright' package.json | head -20

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 2121


🏁 Script executed:

#!/bin/bash

# Check all workflows for container configurations
echo "=== All container: configurations in workflows ==="
grep -r "container:" .github/workflows/ -A 2 | grep -E "container:|image:|options:" || echo "No other container configs found"

# Check if --user is used anywhere in the repo
echo -e "\n=== Search for --user in workflows ==="
grep -r "\-\-user" .github/workflows/ || echo "No --user found in workflows"

# Check GitHub Actions documentation links
echo -e "\n=== Looking for any security context in workflow files ==="
grep -r "security\|--init" .github/workflows/ | head -10 || echo "No security directives found"

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 741


🏁 Script executed:

#!/bin/bash

# Check ci-tests-e2e.yaml container configuration and test commands
echo "=== ci-tests-e2e.yaml container configuration and test commands ==="
grep -A 20 "container:" .github/workflows/ci-tests-e2e.yaml | grep -E "container:|image:|run:" | head -20

echo -e "\n=== Full context around container in ci-tests-e2e.yaml ==="
grep -B 5 -A 10 "mcr.microsoft.com/playwright/python" .github/workflows/ci-tests-e2e.yaml | head -30

echo -e "\n=== Check what tests run in ci-tests-e2e.yaml ==="
grep -E "pnpm|playwright" .github/workflows/ci-tests-e2e.yaml | head -10

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 1776


Use Node.js Playwright container instead of Python variant.

The workflow uses mcr.microsoft.com/playwright/python:v1.57.0-noble, but executes tests with pnpm exec playwright test, which requires the Node.js Playwright test runner. The Python container includes only Python bindings, not Node.js runtime or dependencies. Switch to mcr.microsoft.com/playwright:v1.57.0-noble.

     container:
-      image: mcr.microsoft.com/playwright/python:v1.57.0-noble
+      image: mcr.microsoft.com/playwright:v1.57.0-noble
📝 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
container:
image: mcr.microsoft.com/playwright/python:v1.57.0-noble
container:
image: mcr.microsoft.com/playwright:v1.57.0-noble
🤖 Prompt for AI Agents
In .github/workflows/pr-update-playwright-expectations.yaml around lines 79 to
80, the workflow uses the Python Playwright container image but runs the Node
Playwright test runner; replace the container.image value
mcr.microsoft.com/playwright/python:v1.57.0-noble with the Node variant
mcr.microsoft.com/playwright:v1.57.0-noble so the Node runtime and Playwright
test runner are available, then commit the change and verify the workflow can
run pnpm exec playwright test successfully.

@Myestery Myestery changed the title CI: Use microsoft containers CI: Use custom container for E2E tests Dec 20, 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: 1

♻️ Duplicate comments (1)
.github/workflows/pr-update-playwright-expectations.yaml (1)

79-80: Container image contradicts PR objectives.

This workflow has the same critical issues as .github/workflows/ci-tests-e2e.yaml:

  1. Not using Microsoft containers - contradicts PR title/objectives
  2. Using :latest tag - non-deterministic builds
  3. Missing security options - no options: --user 1001

Apply the same fix as recommended for ci-tests-e2e.yaml lines 42-43:

🔎 Proposed fix
     container:
-      image: ghcr.io/myestery/comfyui-test-action:latest
+      image: mcr.microsoft.com/playwright:v1.57.0-noble
+      options: --user 1001

     # ... later in steps, add before "Start ComfyUI server":
+    - name: Install Python for ComfyUI
+      run: |
+        sudo apt-get update
+        sudo apt-get install -y python3 python3-pip python3-venv
📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e837ad0 and 14f5ccc.

📒 Files selected for processing (3)
  • .github/workflows/ci-tests-e2e.yaml (6 hunks)
  • .github/workflows/pr-update-playwright-expectations.yaml (4 hunks)
  • AGENTS.md (1 hunks)
🧰 Additional context used
🧠 Learnings (10)
📓 Common learnings
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
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.
Learnt from: DrJKL
Repo: Comfy-Org/ComfyUI_frontend PR: 7415
File: browser_tests/tests/mobileBaseline.spec.ts:17-22
Timestamp: 2025-12-13T05:54:35.779Z
Learning: In browser_tests tests for the Comfy-Org/ComfyUI_frontend repository, the `comfyPage.loadWorkflow()` method already handles all necessary synchronization and waiting. No additional `await comfyPage.nextFrame()` call is needed before taking screenshots after loading a workflow.
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
Learnt from: christian-byrne
Repo: Comfy-Org/ComfyUI_frontend PR: 7358
File: src/components/dialog/content/signin/SignUpForm.vue:45-54
Timestamp: 2025-12-11T12:25:24.164Z
Learning: The project has CI automation that handles code formatting (pnpm format) automatically, so manual formatting suggestions should not be provided in code reviews for the Comfy-Org/ComfyUI_frontend repository.
📚 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.yaml
  • .github/workflows/pr-update-playwright-expectations.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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
  • .github/workflows/pr-update-playwright-expectations.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to tests-ui/**/*.test.ts : Write tests for all changes, especially bug fixes to catch future regressions

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-16T17:41:58.464Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T17:41:58.464Z
Learning: Prerequisites for repository setup: Node.js >= 24, Git repository, available ports for dev server and storybook

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Follow YAGNI, AHA, DRY, SOLID principles in code design

Applied to files:

  • AGENTS.md
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Maintain clean, stable public APIs and practice domain-driven design

Applied to files:

  • AGENTS.md
⏰ 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: lint-and-format
  • GitHub Check: setup
  • GitHub Check: test
  • GitHub Check: collect
🔇 Additional comments (7)
AGENTS.md (1)

212-212: LGTM: Documentation clarity improvement.

The wording change from "SOLID" to "SOLID principles" improves clarity and consistency in the documentation.

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

9-9: LGTM: Skip E2E tests for version bump PRs.

Adding version-bump* to the branches-ignore list is a reasonable optimization that avoids running expensive E2E tests for automated version bump PRs.


30-36: LGTM: Efficient artifact-based workspace sharing.

Switching from cache to artifacts for workspace sharing is correct (cache doesn't work with containers), and uploading only dist/ is more efficient than uploading the entire workspace.


141-152: LGTM: Efficient merge-reports job without container overhead.

The merge-reports job correctly runs without a container since it only needs the Playwright CLI to merge blob reports. This avoids the overhead of downloading the container image (~1GB+) when browsers aren't needed.

.github/workflows/pr-update-playwright-expectations.yaml (3)

67-73: LGTM: Consistent artifact-based approach.

Switching to artifacts for dist/ sharing is consistent with the changes in ci-tests-e2e.yaml and necessary for container-based workflows.


116-140: LGTM: Good container-specific hardening and debugging.

The additions provide essential container environment support:

  1. Line 123-124: git config --global --add safe.directory is necessary when running Git operations inside containers
  2. Lines 126-140: Extensive debugging output helps troubleshoot container environment issues and makes the workflow more maintainable

These are good defensive programming practices for containerized workflows.


225-252: LGTM: Robust handling of empty artifact scenarios.

The safety checks at lines 225-233 and 244-252 properly handle cases where no shards produce snapshot changes. This prevents failures when attempting to process non-existent directories and provides clear logging of the zero-change scenario.

Comment on lines +42 to +43
container:
image: ghcr.io/myestery/comfyui-test-action:latest
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

🧩 Analysis chain

🏁 Script executed:

# First, let's check if the file exists and its line count
if [ -f .github/workflows/ci-tests-e2e.yaml ]; then
  wc -l .github/workflows/ci-tests-e2e.yaml
  echo "---"
  # Read lines 35-100 to see context around lines 42-43 and 90-91
  sed -n '35,100p' .github/workflows/ci-tests-e2e.yaml
else
  echo "File not found"
  ls -la .github/workflows/
fi

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 2241


Address container image versioning and security configuration issues.

The current container specifications use ghcr.io/myestery/comfyui-test-action:latest, which introduces two CI/CD best practice issues:

  1. Non-deterministic image tag - Using :latest prevents reproducible builds. Pin to a specific version (e.g., ghcr.io/myestery/comfyui-test-action:v1.0.0)
  2. Missing security options - Add options: --user 1001 to match GitHub Actions' default runner user, preventing permission issues with mounted workspace

Update both container specifications at lines 42-43 and ~85-86:

    container:
      image: ghcr.io/myestery/comfyui-test-action:v1.0.0  # Replace with specific version
      options: --user 1001

If maintaining a custom container image, ensure the Dockerfile is in this repository with clear documentation of included tools (Playwright, Python, Node.js versions).

🤖 Prompt for AI Agents
.github/workflows/ci-tests-e2e.yaml lines 42-43 (and similarly update around
85-86): the workflow currently pins the container image to
ghcr.io/myestery/comfyui-test-action:latest and omits security options; change
the image tag to a specific release (e.g.,
ghcr.io/myestery/comfyui-test-action:v1.0.0 or the correct release you maintain)
and add options: --user 1001 under the container stanza to match the runner user
and avoid permission issues; ensure both container blocks are updated
consistently and, if using a custom image, document the Dockerfile and included
tool versions in the repo.

@Myestery Myestery force-pushed the ci/playwright-docker-containers branch from 14f5ccc to 8525806 Compare December 20, 2025 06:05
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 (4)
.github/workflows/ci-tests-e2e.yaml (2)

90-91: Apply the same container fixes from lines 42-43.

This container specification has the same critical issues: using :latest tag and missing options: --user 1001. Apply the same fixes suggested for lines 42-43.


42-43: Fix all container configurations: use digest pinning and add security options.

Three workflows use the custom container with :latest tag and missing security options. Docker images use digest pinning for security, as the latest tag is mutable and subject to change. Additionally, GitHub Actions use UID 1001, so containers should run as this user to avoid permission issues.

Affected locations:

  • .github/workflows/ci-tests-e2e.yaml lines 42-43, 90-91
  • .github/workflows/pr-update-playwright-expectations.yaml (similar container usage)

Issues:

  1. Using :latest tag breaks reproducibility — once an image is built, its digest always refers to that specific build, ensuring immutability and consistency
  2. Missing options: --user 1001 — required to match the GitHub Actions runner user and prevent permission issues with workspace files
  3. External container from personal repository with no visibility into contents or build process

Fix:
Replace the image reference with a digest-pinned version and add user options:

     container:
-      image: ghcr.io/myestery/comfyui-test-action:latest
+      image: ghcr.io/myestery/comfyui-test-action@sha256:<digest>  # Replace with actual digest
+      options: --user 1001

Obtain the digest by running: docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/myestery/comfyui-test-action:latest

Alternatively, document the container contents (Python, Node.js, pnpm, Playwright versions) or add the Dockerfile to this repository for transparency.

.github/workflows/pr-update-playwright-expectations.yaml (2)

79-80: Apply the same container fixes as ci-tests-e2e.yaml.

This container specification has the same critical issues identified in ci-tests-e2e.yaml (lines 42-43):

  1. Using :latest tag instead of pinned version
  2. Missing options: --user 1001 for security

Apply the same fixes:

     container:
-      image: ghcr.io/myestery/comfyui-test-action:latest
+      image: ghcr.io/myestery/comfyui-test-action:v1.0.0  # Replace with actual version
+      options: --user 1001

97-102: Apply the same server startup improvements as ci-tests-e2e.yaml.

This server startup has the same issues identified in ci-tests-e2e.yaml (lines 60-65): hardcoded paths, no error handling, and background process errors being lost. Apply the same error handling and verification improvements suggested there.

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 14f5ccc and 8525806.

📒 Files selected for processing (2)
  • .github/workflows/ci-tests-e2e.yaml (6 hunks)
  • .github/workflows/pr-update-playwright-expectations.yaml (4 hunks)
🧰 Additional context used
🧠 Learnings (8)
📓 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.
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
Learnt from: DrJKL
Repo: Comfy-Org/ComfyUI_frontend PR: 7415
File: browser_tests/tests/mobileBaseline.spec.ts:17-22
Timestamp: 2025-12-13T05:54:35.779Z
Learning: In browser_tests tests for the Comfy-Org/ComfyUI_frontend repository, the `comfyPage.loadWorkflow()` method already handles all necessary synchronization and waiting. No additional `await comfyPage.nextFrame()` call is needed before taking screenshots after loading a workflow.
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
📚 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.yaml
  • .github/workflows/pr-update-playwright-expectations.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.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} : Use Playwright fixtures for browser tests

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
  • .github/workflows/pr-update-playwright-expectations.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to tests-ui/**/*.test.ts : Write tests for all changes, especially bug fixes to catch future regressions

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : Use Playwright tags like `mobile`, `2x` for relevant E2E tests - they are respected by config

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-17T01:01:03.609Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-17T01:01:03.609Z
Learning: Applies to browser_tests/**/*.spec.ts : E2E test files must use pattern `browser_tests/**/*.spec.ts` with Playwright

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
📚 Learning: 2025-12-16T17:41:58.464Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T17:41:58.464Z
Learning: Prerequisites for repository setup: Node.js >= 24, Git repository, available ports for dev server and storybook

Applied to files:

  • .github/workflows/ci-tests-e2e.yaml
⏰ 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: test
  • GitHub Check: lint-and-format
  • GitHub Check: collect
🔇 Additional comments (6)
.github/workflows/ci-tests-e2e.yaml (3)

9-9: LGTM: Skip E2E tests for version bump PRs.

Excluding version-bump* branches from E2E tests is a reasonable optimization since version bump PRs typically don't require full E2E validation.


30-36: LGTM: Artifact-based frontend distribution.

Uploading only the built dist/ as an artifact is the correct approach for container-based workflows, since cache restoration doesn't work inside containers. The 1-day retention is appropriate for ephemeral CI artifacts.


141-152: LGTM: Merge reports without container overhead.

Correctly removed the container from the merge-reports job since it only runs CLI commands and doesn't need browsers. This reduces startup time and resource usage.

.github/workflows/pr-update-playwright-expectations.yaml (3)

67-73: LGTM: Consistent artifact handling.

The artifact upload matches the pattern in ci-tests-e2e.yaml, which is the correct approach for container-based workflows.


116-134: LGTM: Good defensive programming for containers.

The additions are well-thought-out for container environments:

  1. Git safe.directory configuration (lines 123-124) - required because container ownership differs from the checkout action
  2. Debug output (lines 126-135) - helps troubleshoot snapshot detection issues
  3. Error handling with 2>/dev/null || echo - prevents script failures from missing directories

These changes show proper understanding of container-specific challenges.


225-252: LGTM: Graceful handling of empty artifact scenarios.

The enhanced merge logic correctly handles edge cases:

  1. Check for missing artifacts (lines 245-252) - gracefully exits when no shards produced changes, preventing errors from missing directories
  2. Verify target directory (lines 254-258) - fails fast with clear error if browser_tests doesn't exist
  3. Informative output - reports "0 files" instead of failing, improving debugging experience

This defensive approach prevents spurious workflow failures when legitimately no snapshots need updating.

Based on learnings, the scoped snapshot handling aligns with the workflow's intentional design.

- Use ghcr.io/myestery/comfyui-test-action:latest container
- Container includes: Playwright, Node.js, pnpm, Python, ComfyUI backend
- Simplified setup: just copy devtools and start server directly
- No more cloning ComfyUI or pip install in each job
- Add version-bump* to branches-ignore
@Myestery Myestery force-pushed the ci/playwright-docker-containers branch from 8525806 to 087317e Compare December 20, 2025 06:12
wait-for-it --service 127.0.0.1:8188 -t 600
# Run sharded tests and upload sharded reports
- name: Install frontend deps
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

we might be able to do without this step. will check later

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.

4 participants