Skip to content

Stabilize UIA modal waits in Windows live gate - #402

Merged
coneilen merged 1 commit into
scgopi:mainfrom
coneilen:coneilen-microsoft-windows-ci-flake-repair
Sep 21, 2026
Merged

coneilen merged 1 commit into
scgopi:mainfrom
coneilen:coneilen-microsoft-windows-ci-flake-repair

Conversation

@coneilen

@coneilen coneilen commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Identified a pre-existing intermittent Windows UIA live-gate race: asynchronous New Loop commands sometimes timed out before the native Create or edit node modal appeared, or before a previous modal had fully closed.
  • Replaced short fixed polling around the project-row, empty-global, and empty-project New Loop flows with named deadline-based waits for the expected modal and for modal closure.
  • Added timeout diagnostics (UIA_WAIT_DIAGNOSTICS) and a validation-runner regression contract so future edits cannot silently reintroduce the short fixed New Loop polls.

RED: gh run view 35644468673 --repo scgopi/GraphCode --log-failed -> project-row New Loop did not open the node form after unit tests passed.
GREEN: pwsh -NoProfile -File .\Tools\windows\Tests\ValidationRunner.Tests.ps1 -> ValidationRunner.Tests.ps1: PASS.
REGRESSION: pwsh -NoProfile -File .\Tools\windows\Tests\WindowsShell.Tests.ps1 -> blocked locally by Zig 0.16 vs CI-pinned 0.15.2; GitHub Actions runs pinned validation.

Flake evidence

RED

RED: gh run view 35644468673 --repo scgopi/GraphCode --log-failed -> repeated/superseded Windows UIA gate failure at project-row New Loop did not open the node form after unit tests had passed.

  • gh run view 35634399525 --repo scgopi/GraphCode --log-failed -> independent Windows UIA gate failure at empty global New Loop did not open the node form, with focus diagnostics showing the runner/zmx console still foregrounded.

GREEN

GREEN: pwsh -NoProfile -File .\Tools\windows\Tests\ValidationRunner.Tests.ps1 -> ValidationRunner.Tests.ps1: PASS.

  • PowerShell Parser.ParseFile(.\Tools\windows\uia-live-gate.ps1) -> uia-live-gate parser OK.

REGRESSION

REGRESSION: pwsh -NoProfile -File .\Tools\windows\Tests\WindowsShell.Tests.ps1 -> blocked locally before exercising this change because the host only has Zig 0.16.0, while the repo/CI pins Zig 0.15.2; failure is the expected stdlib API mismatch (GeneralPurposeAllocator, trimLeft, std.fs.cwd, etc.). Pinned live validation is left to GitHub Actions.

Notes

Replace the short fixed New Loop modal polling in the Windows UIA live gate with deadline-based waits for the expected modal window and for cancellation to fully close it before the next asynchronous command. The timeout path now emits UIA_WAIT_DIAGNOSTICS with foreground/focus state, preserving actionable failure output instead of hiding errors.

Add a validation-runner contract so the live gate keeps using deterministic modal waits around project-row, empty-global, and empty-project New Loop flows.

Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@coneilen
coneilen merged commit 401f030 into scgopi:main Sep 21, 2026
12 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant