[2026-10-15] eagle: work/projects/macos-tests-worktrees-2026-10-14.md
This commit is contained in:
1 parent
2056cb8b46
commit
51ddfe5585
1 file changed
+28
-2
@@ -20,7 +20,7 @@ All worktrees are in `/Users/admin/DuckDuckGo/apple-browsers.git/<name>`, on bra
|
||||
| `fix-address-bar-tests-flakiness` | origin/main `ddb1a82283` | Fix flaky `AddressBarTests`: mocks plus two leak root causes | Done, not committed |
|
||||
| `fix-ask-ai-chat-button-animation-leak` | origin/main `e698211924` | Ask AI Chat button animation leak plus regression test | In progress |
|
||||
| ~~`animation-leak-audit`~~ | origin/main `e698211924` | Audit `NSAnimationContext` completion handlers for leaks | Done: no leaks found; worktree and branch removed |
|
||||
| `fix-fire-window-video-leak` | origin/main `e698211924` | Video keeps playing after a Fire Window is closed: reproduce, fix, regression test | In progress |
|
||||
| `fix-fire-window-video-leak` | origin/main `e698211924` | Video keeps playing after a Fire Window is closed: reproduce, fix, regression test | Not reproduced: 4 guard tests only, no fix (see update below) |
|
||||
| `spm-browser-tests` (existing) | — | Source of the unit-test changes (SwiftPM variant) | Not changed |
|
||||
|
||||
## macos-unit-tests-no-app-delegate
|
||||
@@ -84,9 +84,35 @@ Checked with standalone AppKit harnesses (in the session scratchpad: `scratchpad
|
||||
|
||||
## fix-fire-window-video-leak
|
||||
|
||||
Branch `alex/fix-fire-window-video-leak`. In progress. Reproduce (with a test) the bug where video and audio keep playing after a Fire Window is closed, find the root cause, and fix it. The test must work whether the display is asleep or awake.
|
||||
Branch `alex/fix-fire-window-video-leak`. Not reproduced; see the update below.
|
||||
|
||||
## Temporary and source worktrees
|
||||
|
||||
- `spm-browser-tests` (`alex/spm-browser-tests`) is the existing source of the unit-test changes. Not changed.
|
||||
- A detached origin/main baseline in the session scratchpad was used to compare integration tests and has been removed.
|
||||
|
||||
|
||||
## Update 2026-10-15: fix-fire-window-video-leak
|
||||
|
||||
Status: **not reproduced, no fix.**
|
||||
|
||||
- **Worktree:** `fix-fire-window-video-leak`, branch `alex/fix-fire-window-video-leak`, based on origin/main `e698211924`.
|
||||
- **Changes:** only `macOS/IntegrationTests/Fire/FireWindowClosingTests.swift` (+153), with four synchronous guard tests:
|
||||
- closing a Fire Window with media playing;
|
||||
- closing it via the Fire popover;
|
||||
- closing the last tab in a Fire Window;
|
||||
- a regular window, for comparison.
|
||||
|
||||
The media is a generated 440 Hz WAV served from `https://media.test` through `TestSchemeHandler`, so no network is involved. All the tests **pass on main** (35/35 with the display asleep, 7/7 with it awake), so they are guard tests, not regression tests.
|
||||
- **What was tried:**
|
||||
- Content: `data:` audio, `https` video, and a real H.264/AAC mp4.
|
||||
- Close paths: `performClose` / Cmd+Shift+W, the Fire popover close action (directly and through the real `FireCoordinator`), Cmd+W on the last tab, and removing the tab.
|
||||
- Conditions: a background tab, the Lottie fire animation, the display asleep and awake.
|
||||
|
||||
In every case the Tab, WebView and window were released within 1–3 s, and media stopped.
|
||||
- **How the check was validated:** with a deliberate Tab leak added in `animateBurningIfNeededAndClose`, the test failed.
|
||||
- **Findings:**
|
||||
1. `async` tests mask releases: objects live until the test ends. The guard tests are synchronous for this reason.
|
||||
2. `DeallocationTests.testWhenLastTabClosed_windowIsDeallocated` crashes the test host when the display is asleep (probably `TabPreviewWindowController`) and passes when it is awake. This is a separate display-sleep flake.
|
||||
- **Manual check in the app:** not possible, because `osascript` has no Accessibility access.
|
||||
- **Next steps:** get the exact user steps (which site, PiP or fullscreen, a popup from the Fire Window, how the window was closed), or reproduce it by hand in a Debug build. The DEBUG deallocation checks will trigger on a leak.
|
||||
Reference in new issue
Block a user