Skip to main content

Installation testing infrastructure for ComfyUI custom nodes

Project description

comfy-test

Installation testing infrastructure for ComfyUI custom nodes.

Test your nodes install and work correctly across Linux, Windows, and Windows Portable - with just config files, no pytest code needed.

Quick Start

Add these files to your custom node repository:

1. comfy-test.toml

[test]
name = "ComfyUI-MyNode"

[test.verification]
expected_nodes = ["MyNode1", "MyNode2"]

[test.workflow]
file = "tests/workflows/smoke_test.json"
timeout = 120

2. .github/workflows/test-install.yml

name: Test Installation
on: [push, pull_request]

jobs:
  test:
    uses: PozzettiAndrea/comfy-test/.github/workflows/test-matrix.yml@main

3. tests/workflows/smoke_test.json

A minimal ComfyUI workflow that uses your nodes. Export from ComfyUI.

Done! Push to GitHub and your tests will run automatically on all platforms.

What It Tests

  1. Setup - Clones ComfyUI, creates environment, installs dependencies
  2. Install - Copies your node, runs install.py, installs requirements.txt
  3. Verify - Starts ComfyUI, checks your nodes appear in /object_info
  4. Execute - Runs your test workflow, verifies it completes without errors

Configuration Reference

[test]
name = "ComfyUI-MyNode"           # Test suite name
comfyui_version = "latest"        # ComfyUI version (tag, commit, or "latest")
python_version = "3.10"           # Python version
cpu_only = true                   # Use --cpu flag (no GPU needed)
timeout = 300                     # Setup timeout in seconds

[test.platforms]
linux = true                      # Test on Linux
windows = true                    # Test on Windows
windows_portable = true           # Test on Windows Portable

[test.verification]
expected_nodes = [                # Nodes that must exist after install
    "MyNode1",
    "MyNode2",
]

[test.workflow]
file = "tests/workflows/smoke.json"  # Workflow to run
timeout = 120                        # Workflow timeout

[test.windows_portable]
comfyui_portable_version = "latest"  # Portable version to download

CUDA Packages on CPU-only CI

comfy-test runs on CPU-only GitHub Actions runners. For nodes that use CUDA packages (nvdiffrast, flash-attn, etc.):

  1. Installation works - comfy-test sets COMFY_ENV_CUDA_VERSION=12.8 so comfy-env can resolve wheel URLs even without a GPU
  2. Import may fail - CUDA packages typically fail to import without a GPU

Best practice for CUDA nodes:

  • Use lazy imports in production (better UX, graceful errors)
  • Consider strict imports mode for testing to catch missing deps
# In your node's __init__.py
import os

if os.environ.get('COMFY_TEST_STRICT_IMPORTS'):
    # Test mode: import everything now to catch missing deps
    import nvdiffrast  # Will fail on CPU, but that's expected
else:
    # Production: lazy import when needed
    nvdiffrast = None

For full CUDA testing, use a self-hosted runner with a GPU.

CLI

# Install
pip install comfy-test

# Show config
comfy-test info

# Run tests locally
comfy-test run --platform linux

# Dry run (show what would happen)
comfy-test run --dry-run

# Generate GitHub workflow
comfy-test init-ci

License

MIT

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

comfy_test-0.0.5.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

comfy_test-0.0.5-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

Details for the file comfy_test-0.0.5.tar.gz.

File metadata

  • Download URL: comfy_test-0.0.5.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for comfy_test-0.0.5.tar.gz
Algorithm Hash digest
SHA256 d56ef207d82c261d63f63a6978a768af977f854816612294b57effb5b3b1b395
MD5 afd3fa4430a496ac97108f29d849e756
BLAKE2b-256 2aee44973cb65b779d96a291d7b43ac0c3c0de3c752b6f15cf798c9e271fc074

See more details on using hashes here.

Provenance

The following attestation bundles were made for comfy_test-0.0.5.tar.gz:

Publisher: publish.yml on PozzettiAndrea/comfy-test

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file comfy_test-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: comfy_test-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 30.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for comfy_test-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 12b785f4fc462c4e0297b9c9e5e585fd9f725b0e3afbf64d52a98b064a2d0161
MD5 5d5b312ebee3b7cb0e7e38df5cf5a1f7
BLAKE2b-256 bd7d8ad545fc4672aa787acc13d90851e87d307381d7d48e6b71e76a2899bc78

See more details on using hashes here.

Provenance

The following attestation bundles were made for comfy_test-0.0.5-py3-none-any.whl:

Publisher: publish.yml on PozzettiAndrea/comfy-test

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page