Files
Comfy-Org-ComfyUI-Manager/tests/playwright/README.md
T
Dr.Lt.Data 175e085fcf v4: Make Fix node (recreate) work when node ids are strings (#3507)
"Fix node (recreate)" rewired the inputs of the new node with
src_node.connect(link.origin_slot, dest.id, input.name).
LGraphNode.connect() looks its target up by id only when the id is a
number, so on a frontend whose node ids are strings the id was taken
for the node itself: the entry threw "findInputSlot is not a function"
and, because the original is removed only afterwards, left the wired
original and an unwired replacement on the canvas.

- Pass the node to connect(), as the output loop below already does
- Add a Playwright spec that clicks the entry in the node context menu
  and checks the page errors and what every KSampler is wired to, with
  node ids as the frontend issues them and with ids rewritten to
  strings
- Add a CHANGELOG entry

Port of #3443 to v4 (#3126).
2026-11-14 05:38:57 +09:00

1.9 KiB

Playwright E2E Tests — Legacy Manager UI

Browser-based E2E tests for the ComfyUI-Manager legacy UI.

Prerequisites

  1. E2E environment built via python tests/e2e/scripts/setup_e2e_env.py
  2. Playwright runner and Chromium (from the repository root): npm install --no-save --package-lock=false @playwright/test@1.59.1, then npx playwright install chromium.
  3. ComfyUI running with legacy UI enabled:
E2E_ROOT=/tmp/e2e_full_test
PORT=8199
PYTHONPATH="$PWD" $E2E_ROOT/venv/bin/python $E2E_ROOT/comfyui/main.py \
  --listen 127.0.0.1 --port $PORT \
  --enable-manager --enable-manager-legacy-ui \
  --cpu

Running Tests

Run from the repository root. XSS fixtures execute the checkout's Python renderer using python3; set PYTHON=/path/to/python to select another interpreter.

# With server already running:
PORT=8199 npx playwright test

# Single file:
PORT=8199 npx playwright test tests/playwright/legacy-ui-manager-menu.spec.ts

# Headed (visible browser):
PORT=8199 npx playwright test --headed

# Debug mode:
PORT=8199 npx playwright test --debug

Test Files

File Scenarios
legacy-ui-manager-menu.spec.ts Menu dialog rendering, settings dropdowns, API round-trip
legacy-ui-custom-nodes.spec.ts Node list grid, filter, search, footer buttons
legacy-ui-model-manager.spec.ts Model list grid, filter, search
legacy-ui-snapshot.spec.ts Snapshot list, save, remove
legacy-ui-navigation.spec.ts Dialog open/close, nested navigation, no duplicates
custom-nodes-xss.spec.ts Node metadata, Markdown, links, errors, search highlighting
model-manager-xss.spec.ts Model metadata, links, errors, search highlighting
legacy-message-errors.spec.ts Batch rejection IDs, name readability, DOM colors, lookup errors
legacy-ui-node-fixer.spec.ts "Fix node (recreate)" context-menu entry: one node left, links rewired, numeric and string node ids