Files
MajoorWaldi-ComfyUI-Majoor-…/.github/workflows/ci.yml
T
Ewald 831b072943 Add professional compositing engines, HDR fixes, and native VIDEO support
Core (nodes/core/): alpha, masks, batch consolidation, blend, transform
matrix, bbox, parameters, validation engines shared across nodes, each with
unit tests.

Fix an unconditional RGB clamp to [0,1] that silently destroyed HDR/negative
values in Merge, Transform, Color Correct, Comp, CornerPin, Distort,
Spherize, Crop Stitch, and the shared masked-compositing helpers. Alpha
stays clamped everywhere; RGB no longer does.

Fix Grain applying `amount` twice in overlay/soft_light modes (quadratic
instead of linear falloff).

Add STMap mode to Distort (absolute UV remap vs relative displacement).
Add bbox output/input wiring between Crop and Crop Stitch. Add edge_grow
and edge_color_match to Crop Stitch. Add despill to Keyer. Add shuffle mode
to Channel (R/G/B/A routed from any source). Add size/luma_response to
Grain. Add grid mode to Constant. Add frame/layer accumulation limits to
Preview and Draw, plus a font-path containment fix and supersampling in
Text.

Make Frame Range and Append recognize a real ComfyUI VIDEO input (not only
this pack's internal media wrapper), preserving true fps/audio instead of
silently dropping them, and add a native VIDEO output alongside the
existing IMAGE output on both.

Add node_replacements.py (empty registry, wired into the extension
lifecycle) for future schema migrations.

Add a CI matrix pinning the verified requires-comfyui floor, and
.comfyignore for Registry packaging.
2026-09-27 11:55:49 +02:00

190 lines
4.5 KiB
YAML

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_call:
jobs:
frontend:
name: TypeScript & Frontend tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run check
- run: npm run build
- name: Verify js/ is up to date
run: |
git diff --exit-code js/
- run: npm run test:js
python-unit:
name: Python unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.11"
cache: pip
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install \
torch torchvision \
--index-url https://download.pytorch.org/whl/cpu
pip install numpy pytest pillow
- name: Verify unit tests exist
run: |
find tests/unit -name 'test_*.py' -print
test "$(find tests/unit -name 'test_*.py' | wc -l)" -gt 0
- name: Verify unit suite isolation
run: |
test ! -f tests/__init__.py
test ! -f tests/unit/__init__.py
python - <<'PY'
import importlib.util
assert importlib.util.find_spec("comfy_api") is None, (
"comfy_api must NOT be installed in the unit-test job"
)
print("Unit environment isolation OK")
PY
- name: Verify pytest unit root
run: |
python -m pytest \
-c tests/pytest.ini \
tests/unit \
--collect-only \
-q
- name: Run unit tests
run: |
python -m pytest \
-c tests/pytest.ini \
tests/unit \
-vv \
--maxfail=1
comfy-integration:
name: ComfyUI integration tests (${{ matrix.comfyui-ref }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# comfyui-ref pins the compatibility floor declared as requires-comfyui
# in pyproject.toml, plus the current stable release. Bump the floor
# entry only after confirming this job passes against it.
comfyui-ref: ["v0.11.0", "v0.37.4"]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.11"
cache: pip
- name: Install CPU dependencies
run: |
python -m pip install --upgrade pip
pip install \
torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/cpu
pip install pytest numpy pillow
- name: Clone ComfyUI
run: |
git clone \
--depth 1 \
--branch ${{ matrix.comfyui-ref }} \
https://github.com/Comfy-Org/ComfyUI.git \
/tmp/ComfyUI
pip install \
-r /tmp/ComfyUI/requirements.txt
- name: Install ImageOps
run: |
mkdir -p \
/tmp/ComfyUI/custom_nodes/ComfyUI-Majoor-ImageOps
cp -a ./. \
/tmp/ComfyUI/custom_nodes/ComfyUI-Majoor-ImageOps/
- name: Verify environment
env:
COMFYUI_ROOT: /tmp/ComfyUI
PYTHONPATH: /tmp/ComfyUI
run: |
set -euxo pipefail
test -d "$COMFYUI_ROOT"
test -d "$COMFYUI_ROOT/comfy_api"
test -f \
"$COMFYUI_ROOT/comfy_api/latest/__init__.py"
python - <<'PY'
from comfy_api.latest import io, ComfyExtension
print("ComfyUI V3 API OK")
PY
test -f \
"$COMFYUI_ROOT/custom_nodes/ComfyUI-Majoor-ImageOps/__init__.py"
echo "=== Integration test files ==="
find \
tests/integration \
-name 'test_*.py' \
-print
test "$(
find tests/integration \
-name 'test_*.py' \
| wc -l
)" -gt 0
- name: Run integration tests
env:
COMFYUI_ROOT: /tmp/ComfyUI
PYTHONPATH: /tmp/ComfyUI
run: |
python -m pytest \
-c tests/pytest.ini \
tests/integration \
-vv \
--maxfail=1
quality-gate:
name: Quality Gate
needs: [frontend, python-unit, comfy-integration]
runs-on: ubuntu-latest
steps:
- run: echo "All quality checks passed!"