Commit e476287
* 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>
* test(045): address PR #426 CR feedback
- Move EnsureDpiAware() to ClassInitialize so process-wide DPI context
is set deterministically before any WinAppDriver session opens
(Copilot review). Check the return value and log Win32 errors rather
than silently assuming success.
- Replace broad catch{} blocks with specific exception types — aligns
with the recent #420/#421 sweep:
* EnsureDpiAware: catch EntryPointNotFoundException /
DllNotFoundException (older Windows missing the API).
* DumpDiagnostics.Read: catch WebDriverException only.
* StopAppSession driver Quit: catch WebDriverException only.
- WaitForTextAcrossWindows: temporarily zero the implicit wait so the
100 ms polling cadence actually fires; otherwise the driver's 2 s
implicit wait per FindElement dominated and a 5 s timeout yielded
only ~2 polls (Copilot review).
- Drop the stale "E05" reference from the drag-helper comment — only
E01-E04 exist (Copilot review).
Verified: dotnet test --filter ~DockingTearOffE2ETests → 4/4 green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 5a8bf93 commit e476287
2 files changed
Lines changed: 254 additions & 137 deletions
File tree
- tests
- Reactor.AppTests.Host/Fixtures
- Reactor.AppTests/Tests
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
87 | | - | |
| 87 | + | |
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| |||
0 commit comments