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

Reply via email to