A ComfyUI update can break a node without a line of the pack changing, and
until now nothing looked: CI installs no ComfyUI. A nightly workflow now
installs ComfyUI's newest release and its development head for the CPU and
runs three checks that need no model:
- tests/test_comfy_core_contract.py reads the pack's source for everything
it takes from ComfyUI (modules, functions, ComfyUI's own nodes it calls
and the inputs it passes them) and looks each one up in the real thing.
- scripts/compat_boot.py asks a running ComfyUI which nodes it offers:
every public node of the pack, and every node and required input the
example workflows use.
- scripts/dev/face_smoke.mjs puts every node on a graph in headless
Chrome, in both node views, and fails when a face does not come up or
something throws.
The full Python suite runs there too. A failure on the release opens an
issue; the development head only after two nights in a row.