The GitHub Actions job "Required Checks" on texera.git/feat/form-view-switch-without-reload has succeeded. Run started by GitHub user yangzhang75 (triggered by yangzhang75).
Head commit for run: ba150118e1259e4be6d90df07b7c89cca255dc97 / Yang Zhang <[email protected]> fix(frontend): anchor the run clock in the service instead of snapshotting it The previous commit cached the last duration the backend reported and had each view read it on mount. That does not work, and @mengw15 showed why from the engine: `ExecutionStatsService` emits `ExecutionDurationUpdateEvent` only when `startTimeStamp` or `endTimeStamp` changes, and the first of those carries `currentTime - startTimeStamp` computed just after the timestamp is written -- a few milliseconds. So the cached number stands still at roughly zero for the whole run, and the per-second advance was local to each view's `timer(1000, 1000)`, which sat downstream of the event: a view that mounted mid-run received no event and never started counting. A hand-over 60s into a run therefore showed `0s`, frozen, until the run ended. My test did not catch that because it was circular: the harness stubbed `getExecutionDuration`, the test set it to 42000 and asserted 42000 came back. It covered the form reading a getter, not what the service returns. `ExecuteWorkflowService` keeps an anchor now -- the reported duration, when it was reported, and whether the run is going -- and answers `reported + (now - at)` while it runs. It ticks that on a stream both views subscribe to, replaying the current value, so a view mounting mid-run is handed where the run has got to and keeps counting. The two views' duplicated timers are gone, and the clock is reset with the execution state, so the next workflow does not open showing the previous run's time (@copilot). The behaviour moved, so the tests moved: the ticking, the anchoring, the end of a run and the reset are covered on the service against real timers, and each view keeps one test that it shows what the service says. Deletion-checked: going back to returning the snapshot, dropping the ticker, or not resetting the clock each turns named tests red. Full frontend suite: 224 files, 6159 passed, 1 skipped, 0 failed. AOT build, eslint and prettier clean. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY Report URL: https://github.com/apache/texera/actions/runs/35648491104 With regards, GitHub Actions via GitBox
