"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).
1.9 KiB
1.9 KiB
Playwright E2E Tests — Legacy Manager UI
Browser-based E2E tests for the ComfyUI-Manager legacy UI.
Prerequisites
- E2E environment built via
python tests/e2e/scripts/setup_e2e_env.py - Playwright runner and Chromium (from the repository root):
npm install --no-save --package-lock=false @playwright/test@1.59.1, thennpx playwright install chromium. - 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 |