test(chat): guard session flyout identity - #1035
Merged
Merged
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d693a171-cbf1-41c9-86b8-47735e737723
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d693a171-cbf1-41c9-86b8-47735e737723
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds real WinUI regression coverage for #970. Current
mainalready contains the production fix from #991 and #984: the composer uses a declarativeContentFlyout, and FunctionalUI preserves the native flyout by render path.The new test exercises the actual
UiRenderer,Button, and WinUIFlyoutlifecycle. It proves repeatedAgent thinking-style status renders keep the picker open, session rows and selection still reconcile, the latest callback runs once, and mark-and-sweep pruning closes and releases a removed picker.CI hang root cause and hardening
The first PR run (
29777215014, job88469448341) reached xUnit startup but emitted no completed test or TRX before the one-hour cancellation. The test had an unbounded_ui.RunOnUIAsyncaroundFlyout.ShowAt; if WinUI stalled opening the popup againstUIThreadFixture's default off-screen1x1host, the later five-secondOpenedtimeout was never reached.The test now owns its host geometry before
ShowAt, bounds every UI-dispatch await to ten seconds, awaits popup closure during cleanup, detaches the flyout/content, restores the shared host geometry, and avoids creating an extra post-prune flyout. A future UI stall fails with a bounded diagnostic instead of consuming the job timeout.Validation
Current head:
8c3562d9a73cbe0a6aecd383c827f85a0e1117f2.\build.ps1— passed; all five source projects built.dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore— 2,927 passed, 31 skipped, 0 failed.dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore— 1,834 passed, 0 failed.dotnet test .\tests\OpenClawTray.FunctionalUI.Tests\OpenClawTray.FunctionalUI.Tests.csproj -r win-x64— 19 passed, 0 failed.FunctionalUiFlyoutIdentityTests— 1 passed, 0 failed.dotnet-coverage— run 1: 89 passed in 6.56s; run 2: 89 passed in 6.71s.29782799246,Run Tray UI Tests— passed in 19s on the updated head.CreateContentFlyoutpath caching withnew Flyout()on each render; the focused test failed at native flyout identity. Production was restored with no production diff.CODEX_HOME; no source finding was produced.Exact repeated command:
Real behavior proof
SLOW_UI_TESTS=1in the real WinUI test host.Session picker still open after thinking renders.Agent thinking 3and an open native popup containingSession AlphaandSession Beta; the run then passed row update, selection callback, and prune cleanup assertions.lvtcapture independently identified WinUI 3PopupRoot/FlyoutPresenterand the session rows while the picker was open.Closes #970.