QA Session Recordings

ComfyUI Frontend · Automated QA · PR #10336 · main @ d946694 · #10336 @ 1c5d6e2 · QA @ 04bf4cb · CI Job · 2026-04-01T13:45:21Z → 2026-04-02 04:08 UTC
QA Badge
PR #10336 aims to
fix: restore workflow tabs on browser restart
## Problem Since PR #8520 (`feat(persistence): fix QuotaExceededError and cross-workspace draft leakage`), all workflow tabs are lost when the browser is closed and reopened. PR #8520 moved tab pointers (`ActivePath`, `OpenPaths`) from `localStorage` to `sessionStorage` for per-tab isolation. However, `sessionStorage` is cleared when the browser closes, so the open tab list is lost on restart. T
Test focus: Observe that multiple workflow tabs survive a browser restart by falling back to localStorage.
Prerequisites: Load default workflow
Steps: Open the main menu to access workflow options → Click New to create a second workflow tab → Wait for the new tab to fully initialize and save to localStorage → Reload the page to simulate a browser restart and session clear → Wait for the application to load after restart → Check the workflow tabs in the top bar
🐧LinuxReport
Before main
After PR
AI Comparative Review
# linux QA Video Report - Generated at: 2026-04-02T04:02:01.339Z - Model: `gemini-3-flash-preview` - Target: https://github.com/Comfy-Org/ComfyUI_frontend/pull/10336 - Before video: `./qa-artifacts/qa-report-Linux-23882962824/qa-before-session.mp4` (3.1 MB) - After video: `./qa-artifacts/qa-report-Linux-23882962824/qa-session.mp4` (3.2 MB) - Mode: **Comparative (before/after)** ## AI Review ## Summary The PR fixes a regression where workflow tabs were lost after a browser restart because tab pointers were stored only in `sessionStorage`. The fix implements a dual-write approach to both `sessionStorage` (for tab isolation) and `localStorage` (for persistence across restarts). The **BEFORE** video confirms the issue: after a simulated restart, only the most recently active tab is restored, and previous tabs are lost. The **AFTER** video proves the fix: after the same restart simulation, all previously open workflow tabs are correctly restored. ## Behavior Changes | Behavior | Before (main) | After (PR) | Verdict | | :--- | :--- | :--- | :--- | | **Workflow Tab Persistence** | Only the last active workflow is restored after browser restart; other open tabs are lost. | All open workflow tabs from the previous session are correctly restored. | `Fixed` | | **Session Isolation** | Relied solely on `sessionStorage`. | Uses `sessionStorage` with a `localStorage` fallback for restarts. | `Improved` | ## Timeline Comparison | Time | Type | Severity | Before (main) | After (PR) | | :--- | :--- | :--- | :--- | :--- | | `0:12` | State | `None` | Two tabs are open: "Unsaved Workflow" and "Unsaved Workflow (2)". | Two tabs are open: "Unsaved Workflow" and "Unsaved Workflow (2)". | | `0:14` | Behavior | `None` | Page reloads (simulating restart). | Page reloads (simulating restart). | | `0:17` | State | `Fixed` | **Only one tab** ("Unsaved Workflow (2)") is visible. The previous tab was lost. | **Both tabs** are restored and visible in the top bar. | ## Confirmed Issues No issues confirmed. The PR successfully restores the intended behavior. ## Overall Risk **Low.** The change introduces a fallback mechanism to `localStorage` which was the standard behavior in previous versions (V1). It includes validation logic (`isValidPointer`) to ensure that stale or malformed data in `localStorage` doesn't crash the application. The automated tests cover the restart scenario explicitly. ## Verdict {"verdict": "REPRODUCED", "risk": "low", "confidence": "high"}