Skip to content

Commit 4dfdfea

Browse files
test(045): tear-off E2E suite reliable under WinAppDriver (#419)
The 3 [Ignore]'d tests in DockingTearOffE2ETests.cs (E02/E03/E04) tried to drive cross-window float→host drags that turn out to be blocked at the WinAppDriver pipeline level: when the source floating window is hidden mid-drag (single-tab BeginFloatingTearOff → AppWindow.Hide()), the session-bound input pipeline freezes and subsequent moves never reach the host's overlay PointerEntered handlers — verified via detailed Tracker.OnTick / Overlay.PointerEntered tracing. Pure-Win32 SendInput has its own coherence problem (test-process and host-process GetAsyncKeyState(VK_LBUTTON) disagree mid-drag, likely UIPI hook interaction). Replace those tests with a reliable 4-test suite that exercises the WinAppDriver-tractable scenarios end-to-end with real mouse input. 12/12 green across 3 consecutive runs: - E01: single-tab tear-off → floating window (drop-outside). - E02: multiple sequential tear-offs (A then B → two floating windows, asserts OnContentFloating/Floated fire exactly twice). - E03: pane content state survives the tear-off layout mutation. - E04: tear-off pipeline reliable across 3 repeated invocations. Cross-window dock-back / split / Esc-cancel scenarios remain covered by NativeDockingTearOffFixture's 14 synthetic-event selftest fixtures (T04/T05/T13). Class-level docstring documents the WinAppDriver limitation and the synthetic-event fallback. Also bumps the fixture's diagnostic trace ring buffer from 6 to 12 so post-drag failure dumps show enough pipeline stages to localize a regression (Press → threshold → BeginTearOff → Tracker.Start → ...). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 321b0f8 commit 4dfdfea

2 files changed

Lines changed: 198 additions & 122 deletions

File tree

tests/Reactor.AppTests.Host/Fixtures/DockingTearOffE2EFixtures.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public override Element Render()
8484
updateLastTrace(prev =>
8585
{
8686
var next = prev.Add(msg);
87-
return next.Count > 6 ? next.RemoveRange(0, next.Count - 6) : next;
87+
return next.Count > 12 ? next.RemoveRange(0, next.Count - 12) : next;
8888
});
8989
};
9090
return () => { DockTabTearOff.DiagnosticSink = previous; };

0 commit comments

Comments
 (0)