You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test(planning): make the surface ui_journey checks wait for the state they assert #7210
plugins/planning/surface/surface.test.sh fails sometimes with no change to the files it covers. While verifying #7009, three runs on the same head gave three different results:
run 1: exit 1, failing ui_journey.2 ("Answer again moves focus to the first choice");
run 2: exit 1, failing ui_journey.2 and ui_journey.13;
run 3: exit 0 (PASS=480).
No file under plugins/planning/surface changed between the runs, and the failing checks differ from run to run. That points to a browser timing race in the UI journey checks: a focus assertion running before the page has settled.
Fix
Find what each failing check waits on and make it wait for the state it asserts. For example, wait for the focused element or a settled-render signal instead of a fixed delay, so the result does not depend on machine load.
Done when
surface.test.sh passes 20 consecutive runs on a loaded machine (for example, while another test suite runs in parallel).
Thanks for the detailed writeup. I understand the issue: plugins/planning/surface/surface.test.sh's ui_journey checks are flaky, with different checks failing (or none) across identical runs, pointing to a browser timing race rather than a real regression — likely a focus assertion firing before the page settles. The fix direction (replace fixed delays with waits for the actual asserted state, such as the focused element or a settled-render signal) and the done criteria (20 consecutive passing runs under load) are both clear. I didn't find any existing duplicate issues for this. No missing information needed to act on this.
The lanes App's pull request #8028 links this issue with Refs:, not Closes, so the merge lane never merges it. report-outcome added needs-human so a person merges or closes it. When it merges, work-unblock removes this needs-human and agent-ready and adds needs-triage, so triage decides what work is left. To keep the issue held after the merge, add needs-owner-decision.
melodic-automation-lanes commented on Oct 18, 2026
The lanes App's pull request #8028 merged with Refs:, so this issue stays open and nothing starts the lane on it again. work-unblock added needs-triage and removed agent-ready, so triage decides what work is left.
Met on main: phase 2 waits for focus before asserting, and phases 11 and 13 wait up to 15 s for the title prefix (plugins/planning/surface/tests/ui_journey.js:199,594,606).
For any run that fails, replace the failing check's fixed waitForTimeout with a wait on the asserted state. Many fixed waits remain, for example ui_journey.js:66,76,82,109,207,279,315,328. Repeat until 20 consecutive runs pass.
Activity
github-actions commentedon Oct 11, 2026
Thanks for the detailed writeup. I understand the issue:
plugins/planning/surface/surface.test.sh'sui_journeychecks are flaky, with different checks failing (or none) across identical runs, pointing to a browser timing race rather than a real regression — likely a focus assertion firing before the page settles. The fix direction (replace fixed delays with waits for the actual asserted state, such as the focused element or a settled-render signal) and the done criteria (20 consecutive passing runs under load) are both clear. I didn't find any existing duplicate issues for this. No missing information needed to act on this.Automated triage. A maintainer reviews it.
melodic-automation-lanes commentedon Oct 18, 2026
The lanes App's pull request #8028 links this issue with
Refs:, notCloses, so the merge lane never merges it. report-outcome addedneeds-humanso a person merges or closes it. When it merges, work-unblock removes thisneeds-humanandagent-readyand addsneeds-triage, so triage decides what work is left. To keep the issue held after the merge, addneeds-owner-decision.melodic-automation-lanes commentedon Oct 18, 2026
The lanes App's pull request #8028 merged with
Refs:, so this issue stays open and nothing starts the lane on it again. work-unblock addedneeds-triageand removedagent-ready, so triage decides what work is left.kyle-sexton commentedon Oct 19, 2026
Remaining scope after #8028
Met on main: phase 2 waits for focus before asserting, and phases 11 and 13 wait up to 15 s for the title prefix (
plugins/planning/surface/tests/ui_journey.js:199,594,606).Acceptance criteria
plugins/planning/surface/surface.test.shpasses 20 consecutive runs on a loaded machine (another suite running in parallel). test(planning): make the surface ui_journey checks wait for the state they assert #8028 ran it once.waitForTimeoutwith a wait on the asserted state. Many fixed waits remain, for exampleui_journey.js:66,76,82,109,207,279,315,328. Repeat until 20 consecutive runs pass.