A Docker container image pre-configured for running Playwright E2E tests against ComfyUI.
- Playwright browsers (Chromium, Firefox, WebKit)
- Node.js + pnpm
- Python 3 + pip
- ComfyUI backend (pinned version) at
/ComfyUI - All Python dependencies pre-installed (torch CPU, requirements.txt, wait-for-it)
Use this image as a container in your GitHub Actions workflow:
jobs:
test:
runs-on: ubuntu-latest
container:
image: ghcr.io/comfy-org/comfyui-ci-container:v1
strategy:
matrix:
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v5
- uses: actions/download-artifact@v4
with:
name: frontend-dist
path: dist
# Setup - just copy devtools and start server (no clone, no pip install)
- name: Setup ComfyUI
run: |
ln -sf /ComfyUI ./ComfyUI
cp -r ./tools/devtools/* /ComfyUI/custom_nodes/ComfyUI_devtools/
cd /ComfyUI && python3 main.py --cpu --multi-user --front-end-root $GITHUB_WORKSPACE/dist &
wait-for-it --service 127.0.0.1:8188 -t 600
- name: Install frontend deps
run: pnpm install
- name: Run tests
run: pnpm exec playwright test --shard=${{ matrix.shard }}/4ghcr.io/comfy-org/comfyui-ci-container:latest- Latest buildghcr.io/comfy-org/comfyui-ci-container:0.0.3- Stable v0.0.3ghcr.io/comfy-org/comfyui-ci-container:comfyui-v0.5.1- Specific ComfyUI version
| Step | Before | After |
|---|---|---|
| Clone ComfyUI | ~10s | 0s |
| pip install | ~90s | 0s |
| Setup Playwright | ~30s | 0s |
| Total saved | ~130s | per shard |
# Build the image
docker build -t comfyui-test:local .
# Run interactively
docker run -it --rm -v $(pwd):/app comfyui-test:local bash
# Test ComfyUI is installed
docker run --rm comfyui-test:local python3 -c "import torch; print(torch.__version__)"- Update
COMFYUI_VERSIONin Dockerfile - Push to trigger rebuild
- Tag with new version