Tests: wait for a dropped session's forwards to stop, not just for the tab to go dead #23

Merged
jaap-jan merged 1 commits from claude/elastic-mccarthy-6b4ae7 into main 2026-10-16 12:04:42 +00:00
@@ -114,6 +114,13 @@ public sealed partial class ShellFlowTests
await EventuallyAsync(() => !tab.IsLive, "the dropped shell should have ended the session"); await EventuallyAsync(() => !tab.IsLive, "the dropped shell should have ended the session");
// Waited for in its own right rather than taken as read from IsLive. Ended clears IsLive and then
// ends the forwards in the same dispatcher turn, which the app's UI thread never splits — but this
// harness's post runs the ending on the fake shell's thread, so a poll from here can land between.
await EventuallyAsync(
() => tab.Forwards.All(row => row.Detail == "Stopped with the session."),
"the session's end should have reached its forwards");
tab.Forwards.ShouldAllBe(row => row.State == PortForwardState.Stopped); tab.Forwards.ShouldAllBe(row => row.State == PortForwardState.Stopped);
tab.Forwards.ShouldAllBe(row => row.Detail == "Stopped with the session."); tab.Forwards.ShouldAllBe(row => row.Detail == "Stopped with the session.");
tab.Forwards.ShouldAllBe(row => !row.CanToggle); tab.Forwards.ShouldAllBe(row => !row.CanToggle);