E2E tests perform real comfy install, comfy launch, and comfy node operations.
They are disabled by default and must be explicitly enabled.
| Variable | Default | Description |
|---|---|---|
TEST_E2E |
false |
Set to true to enable E2E tests |
TEST_E2E_COMFY_URL |
(empty — uses default) | Custom ComfyUI repo URL. Supports @branch syntax |
TEST_E2E_COMFY_INSTALL_FLAGS |
--cpu |
Extra flags passed to comfy install |
TEST_E2E_COMFY_LAUNCH_FLAGS_EXTRA |
--cpu |
Extra flags passed to comfy launch |
TEST_E2E=true pytest tests/e2e/Installs ComfyUI from the default upstream (Comfy-Org/ComfyUI), launches it
in the background, runs the test suite, then stops the server.
To test features that depend on unreleased ComfyUI changes (e.g.
manager_requirements.txt not yet merged upstream), point the E2E suite at a
fork/branch:
TEST_E2E=true \
TEST_E2E_COMFY_URL="https://github.com/ltdrdata/ComfyUI.git@dr-bump-manager" \
pytest tests/e2e/ -vThis clones ltdrdata/ComfyUI at the dr-bump-manager branch, which contains
manager_requirements.txt for pip-based Manager v4 installation.
TEST_E2E=true \
TEST_E2E_COMFY_URL="https://github.com/ltdrdata/ComfyUI.git@dr-bump-manager" \
TEST_E2E_COMFY_INSTALL_FLAGS="" \
TEST_E2E_COMFY_LAUNCH_FLAGS_EXTRA="" \
pytest tests/e2e/ -vCovers model download, custom node lifecycle, workflow execution, and basic Manager v4 smoke tests.
| Test | Description |
|---|---|
test_model |
Download, list, and remove a model |
test_node |
Install, reinstall, show, update, disable, enable, publish a custom node |
test_manager_installed |
Verifies cm_cli is importable after install |
test_node_uv_compile |
Installs a node with --uv-compile and runs comfy node uv-sync |
test_uv_compile_default_config |
Sets uv-compile-default, verifies comfy env display |
test_run |
Downloads a checkpoint and executes a workflow end-to-end |
Comprehensive --uv-compile E2E suite. Requires Manager v4.1+ — automatically
skipped when cm_cli is not importable.
Two categories of node packs are used:
- Real packs (
comfyui-impact-pack,comfyui-inspire-pack) — production node packs for verifying normal installation succeeds without conflicts. - Conflict fixture packs (
nodepack-test1-do-not-install,nodepack-test2-do-not-install) — ltdrdata's dedicated test packs that intentionally conflict on ansible versions (ansible==9.13.0vsansible-core==2.14.0). Contain no executable code.
Supply-chain safety: only node packs from verified authors (ltdrdata, comfyanonymous, Comfy-Org) are used.
Normal installation (real packs)
| Test | Scenario | Packs |
|---|---|---|
test_real_packs_sequential_no_conflict |
Install two real packs one-by-one with --uv-compile — each resolves successfully, no conflicts |
impact, inspire |
test_real_packs_simultaneous_no_conflict |
Install two real packs in a single command with --uv-compile — resolves successfully, no conflicts |
impact, inspire |
Progressive conflict
| Test | Scenario | Packs |
|---|---|---|
test_progressive_conflict |
Install real packs (OK) → add conflict-pack-1 (still OK) → add conflict-pack-2 (conflict detected with attribution) | impact, inspire, test1, test2 |
Command coverage (--uv-compile flag on each command)
| Test | Scenario | Packs |
|---|---|---|
test_node_reinstall_uv_compile |
Reinstall an installed pack with --uv-compile — resolution runs |
test1 |
test_node_update_uv_compile |
Update an installed pack with --uv-compile — resolution runs |
test1 |
test_node_fix_uv_compile |
Fix an installed pack with --uv-compile — resolution runs |
test1 |
test_node_restore_deps_uv_compile |
restore-dependencies --uv-compile — resolution runs |
test1 |
Standalone uv-sync
| Test | Scenario | Packs |
|---|---|---|
test_node_uv_sync_standalone |
comfy node uv-sync resolves installed pack dependencies |
test1 |
test_node_uv_sync_standalone_conflict |
comfy node uv-sync with conflicting packs — shows conflict attribution |
test1, test2 |
Config default and overrides
| Test | Scenario | Packs |
|---|---|---|
test_uv_compile_config_default |
uv-compile-default true → install without flag triggers resolution |
test1 |
test_no_uv_compile_overrides_config |
Config default enabled, --no-uv-compile overrides — resolution does not run |
test1 |
Mutual exclusivity
| Test | Scenario | Packs |
|---|---|---|
test_uv_compile_mutual_exclusivity |
--uv-compile with --fast-deps or --no-deps — rejected with error |
test1 |
workspace(module-scoped): installs ComfyUI, launches server in background, yields workspace path, stops server on teardown.comfy_cli: returnscomfy --workspace {ws}command prefix._clean_test_packs(autouse, function-scoped): removes conflict fixture packs before and after each test. Real packs are not removed between tests (they persist in the workspace).- Config default tests use
try/finallyto restore the setting after each test.
- E2E tests create a temporary workspace directory (
comfy-<timestamp>) in the current working directory. It is not automatically cleaned up. - Each test file has its own
workspacefixture (module-scoped) — all tests within a file share a single ComfyUI installation. - Tests that require Manager v4 are automatically skipped when
cm_cliis not importable.