Files
EwaldandClaude Sonnet 5 019a5c9172 Load through comfy_entrypoint and adopt current ComfyUI APIs
Defining NODE_CLASS_MAPPINGS made ComfyUI skip comfy_entrypoint, so
/imageops/viewmedia and node replacements were never registered. Load
as a V3 extension only, move server.py to routes.py so it stops
shadowing ComfyUI's server module, and transcode animated previews
with PyAV instead of an external ffmpeg.

- Require ComfyUI 0.19.0 (has_intermediate_output); CI floor updated.
- Process 11 nodes on ComfyUI's torch device when the frames fit in
  free memory (IMAGEOPS_COMPUTE_DEVICE=cpu disables it).
- Add core CURVE input to Color Correct, BOUNDING_BOX output/input to
  Crop and Crop Stitch, LAYERS output to Comp (ComfyUI 0.31+),
  essentials_category, and Merge blend modes with golden parity.
- Report progress through the public set_progress API and drop the
  hidden unique_id input.
- Add ImageOps settings and a refresh-previews command.
- Fix ImageOpsComp rotation and preview saving (undefined
  to_display_range) and masked Transform edge colors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 14:53:14 +02:00

45 lines
1013 B
Python

"""Integration tests executed against a real ComfyUI checkout."""
from __future__ import annotations
import pytest
def test_integration_load_nodes(
imageops_extension,
):
"""Every registered ImageOps node can be instantiated.
This deliberately does NOT import ComfyUI execution.py.
execution.py initializes model-management/device selection
and can require CUDA. Node registry integration does not
require GPU initialization.
"""
assert imageops_extension.NODES
failures = []
for cls in imageops_extension.NODES:
name = cls.define_schema().node_id
try:
instance = cls()
except Exception as exc:
failures.append(
f"{name} ({cls.__name__}): "
f"{type(exc).__name__}: {exc}"
)
continue
assert instance is not None
if failures:
pytest.fail(
"Failed to instantiate ImageOps nodes:\n"
+ "\n".join(failures)
)