Settings reference¶
Every comfy-test setting, its default, and how to change it. These are
machine-global knobs -- what a run prints, where it writes, and how much
it tells you when something goes wrong. Per-pack choices (which lanes,
which levels, which workflows) live in
comfy-test.toml instead.
How settings resolve¶
Three tiers, highest priority first:
- Environment variable --
COMFY_TEST_VERBOSE=1 comfy-test run - Persistent file --
~/.comfy-test/settings.env, plainKEY=VALUElines; edited comfortably via thecomfy-test settingsTUI. - Built-in default
The persistent file is loaded with setdefault, so an environment variable
always wins over it.
Truthy values for boolean env vars: 1, true, yes. Anything else --
including 0, false, and any typo -- reads as off.
General¶
| Env var | default | meaning |
|---|---|---|
COMFY_TEST_INSTALL_VIDEO |
terminal |
How to film the install phase: terminal, x11, or off. See below. |
COMFY_TEST_VERBOSE |
off | Echo every ComfyUI server line, not just the interesting ones. |
COMFY_TEST_SHOW_CONSOLE |
off | Echo the browser's JavaScript console (errors and warnings) into the run output. Every console message is written to logs/<workflow>_console.log either way -- this only decides whether it also appears inline. |
COMFY_TEST_VRAM_DEBUG |
off | VRAM accounting log lines during execution. |
Nothing here changes what is tested
Every setting on this page is about output, paths and diagnostics. Which
workflows run is decided by your pack's folder layout and
comfy-test.toml alone -- there is no environment variable
that makes a workflow invisible to a run.
Filming the install¶
driver.mp4 is browser screenshots, so it cannot start until a server exists --
the install itself was never on film. videos/install/ fixes that, and appears
in the report next to the per-workflow videos.
| value | what it records | where it works |
|---|---|---|
terminal (default) |
Renders install.jsonl -- the timed event stream, with your chapter markers -- to frames and encodes them. |
Every lane: hosted Linux/Windows/macOS, the CUDA containers, Desktop. No display server needed. |
x11 |
A real X session: Xvfb, an xterm tailing session.log, and ffmpeg -f x11grab. Literally an OS desktop recording. |
Linux only, and only where xvfb and xterm are installed. |
off |
Nothing. | -- |
Neither backend can fail a run. x11 falls back with a printed reason when it
is unavailable, and a render that throws is logged and skipped.
Why the default is not a screen recording
On a hosted runner nothing draws a window during steps 1-7 -- uv venv,
the torch triple, git clone, pip install and install.py are terminal
processes. Screen-recording that desktop films an empty screen. terminal
renders what there actually is to see, which is also why it is the only
backend that works inside the CUDA containers.
A very long install is time-compressed rather than truncated, so the whole
thing is still shown; the factor is recorded in the video's metadata.json
and stamped in the corner of the frame.
Paths¶
| Env var | default | meaning |
|---|---|---|
COMFY_TEST_LOGS_DIR |
~/comfy-test-logs |
Where run output trees are written. This is the directory CI uploads as an artifact. |
COMFY_TEST_WORKSPACE_DIR |
~/test_workspaces |
Where environments are built (venvs, ComfyUI clones, portable extracts). Not part of the CI artifact path. |
COMFY_TEST_LOCAL_UTILS |
(unset) | Directory holding local checkouts of comfy-env / comfy-test / comfy-3d-viewers. When set, they are installed editable so install.py exercises your working tree instead of the published release. |
comfy-test paths --set writes the first two persistently; it runs
automatically on your first non-attach run if they are unset.
Docker host artifacts¶
comfy-test docker keeps its host-side artifacts under a single root,
picked in this order:
COMFY_TEST_DOCKER_ROOT, if set- Windows: the first Trusted Developer Volume with enough free space
(
fsutil devdrv enum) -><drive>:\docker - Windows fallback:
C:\docker - Otherwise:
~/.comfy-test/docker
The layout under that root is logs/, stage/, installers/,
workspaces/, env-cache/, artifacts/. Each component can be overridden
individually, and an explicit override always beats the derived default:
| Env var | overrides |
|---|---|
COMFY_TEST_DOCKER_ROOT |
the root itself |
COMFY_TEST_LOGS_DIR |
<root>/logs |
COMFY_TEST_DOCKER_STAGE_DIR |
<root>/stage (Windows robocopy staging) |
COMFY_TEST_INSTALLER_CACHE |
<root>/installers (auto-downloaded driver/git installers) |
COMFY_TEST_INSTALLERS_DIR |
a directory of pre-staged installers; leave unset to auto-download |
COMFY_TEST_DOCKER_ARTIFACT_PATH |
where docker build --save writes <image>.tar.zst |
Debug logging¶
Off by default, one category per subsystem. Same three-tier resolution as
above; the comfy-test settings TUI exposes them on their own tab.
| Env var | covers |
|---|---|
COMFY_TEST_DBG_WORKER |
worker subprocess IPC |
COMFY_TEST_DBG_SCREENSHOT |
screenshot and frame capture |
COMFY_TEST_DBG_WEBSOCKET |
WebSocket messages to and from ComfyUI |
COMFY_TEST_DBG_VALIDATION |
workflow validation tiers |
Set by the harness, not by you¶
These are written by CI, the docker/VM wrappers, or the desktop runner, and are listed so a value you see in a log is identifiable. Setting them by hand is not supported.
- Run identity and provenance --
COMFY_TEST_RUN_URL(deep-link back to the GHA run),COMFY_TEST_NODE_SHA,COMFY_TEST_NODE_URL,COMFY_TEST_NODE_BRANCH,COMFY_TEST_NODE_NAME. - Lane and backend selection --
COMFY_TEST_LANE(raises if it disagrees with the host),COMFY_TEST_BACKEND,COMFY_TEST_CUDA,COMFY_TEST_PYTHON_VERSION,COMFY_TEST_TORCH_VERSION. - Sandbox and container context --
COMFY_TEST_IN_DOCKER,COMFY_TEST_IN_SANDBOX,COMFY_TEST_SANDBOX_ROOT,COMFY_TEST_SESSION_USER.
COMFY_TEST_TORCH_VERSION outranks your config
When it is set, it wins over [test] torch_version in
comfy-test.toml. CI sets it per lane, which is why a local run and a CI
run can pin different torch versions from the same config file. The value
that actually ran is recorded in provenance.torch_version -- read that,
not the config.