mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-14 09:42:16 +00:00
*PR Created by the Glary-Bot Agent* --- ## Summary #10759 removed ~12 E2E tests from `subgraphSerialization.spec.ts` during a reorganization that shifted semantic coverage to Vitest. Several of the removed tests covered the exact `serialize() → JSON → configure()` round-trip that #10849's positional `_instanceWidgetValues` path later regressed on Main — promoted widget values binding to the wrong slots when loading templates whose `widgets_values` ordering doesn't match current `proxyWidgets`. This restores the pre-reorg E2E coverage so future regressions in promoted-widget serialization are caught at the browser level. ## Restored tests From `subgraphSerialization.spec.ts` (pre-#10759): - **Deterministic proxyWidgets Hydrate** (3 tests) — round-trip stability and compressed `target_slot` resolution. - **Legacy And Round-Trip Coverage** (5 tests) — includes the most directly-relevant restorations: - `Promoted widgets survive serialize -> loadGraphData round-trip` - `Multi-link input representative stays stable through save/reload` - `Cloning a subgraph node keeps promoted widget entries on original and clone` - **Duplicate ID Remapping** (5 tests) — includes `Promoted widget tuples are stable after full page reload boot path`. The 4 tests that already existed on Main (added by #10849 and the Vue-nodes legacy-prefixed block) are kept as-is. ## Adaptations to current APIs - Imports reworked for the post-`@e2e/*` alias layout. - Redundant `comfyPage.nextFrame()` calls dropped — `loadWorkflow` / `loadGraphData` / `serializeAndReload` already wait internally (#11264). - Alt-drag clone block wrapped in `try/finally` around `keyboard.up('Alt')` to match the current `subgraphCrud.spec.ts` pattern. - `PromotedWidgetEntry` is now exported from `browser_tests/helpers/promotedWidgets.ts` so the restored `expectPromotedWidgetsToResolveToInteriorNodes` helper can type its argument. ## Review follow-ups applied - Use `expect.poll()` instead of `expect(async () => …).toPass()` for the single-value snapshot comparison, per `browser_tests/AGENTS.md`. - Capture and call `dispose()` from `SubgraphHelper.collectConsoleWarnings()` inside a `try/finally` so the console listener is unregistered after the test. ## Verification - `pnpm typecheck:browser` — clean. - `pnpm exec eslint` + `pnpm exec oxlint` on changed files — 0 warnings, 0 errors. - `pnpm exec oxfmt` on changed files — applied (no diff). - Ran 2 key restored tests against local ComfyUI + dev server: - `Promoted widgets survive serialize -> loadGraphData round-trip` — PASS (3.9s) - `Multi-link input representative stays stable through save/reload` — PASS (2.9s) - Full-suite runs in this sandbox are blocked by the existing `comfyPage` fixture's `createUser` path failing on repeat runs against persistent backend state — unrelated to this PR. CI will exercise the full suite. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-11579-test-restore-deleted-subgraph-serialization-E2E-tests-34b6d73d365081f29b27c1069476ad17) by [Unito](https://www.unito.io) --------- Co-authored-by: Glary-Bot <glary-bot@users.noreply.github.com>