openclaw/apps
Peter Steinberger 35fd3b1617
test(macos): keep the rendered Quick Chat suite stable on hosted runners (#156134)
## Summary

`QuickChatCatalogPresentationTests` › "rendered Quick Chat preserves catalog disclosure and shortcut behavior in order" fails intermittently in the hosted `macos-swift (tests)` job (Full Release Validation runs 35761278329 and 35802234377 for 2026.9.6; passes locally). The uploaded `macos-native-test-logs` artifacts show two failure shapes, both environmental:

1. `QuickChatPresentationTests.swift:304` `Expectation failed: condition()` with the diagnostic `Quick Chat presented: visible=true, active=true, key=true, editorReady=true`. The only wait that can fail with that state is `waitUntil { !application.isActive }` after `application.deactivate()`: the hosted runner never hands activation to another app, so the *precondition* for "presents without foreground ownership" is unattainable there, while the behavior itself (panel visible, editor focused, reopen, disable) is proven.
2. On frozen release targets (`HISTORICAL_TARGET=true`) the rendered suite still runs in the parallel default lane. Parallel suites open key windows, Quick Chat dismisses on focus loss by design, and the test then reports `windowVisible=false windowKey=false` plus a reset `model.speed` (the 5-issue attempt). Current targets already isolate the suite into the `default-rendered` lane; frozen targets did not.

## Changes

- `apps/macos/Tests/OpenClawIPCTests/QuickChatPresentationTests.swift`: the activation hand-off before firing the shortcut is a bounded, non-asserting `poll` that prints whether the host yielded activation; every behavioral assertion after it is unchanged. `waitUntil` now delegates to `poll`.
- `.github/workflows/ci.yml`: run the isolated `default-rendered` lane for frozen targets too whenever the suite exists in the checked-out tree; older tags without the suite keep the single default lane.

## Proof

- Local `swift test --disable-sandbox --filter QuickChatCatalogPresentationTests` (apps/macos): 5/5 passes.
- One extra run with another application in the foreground (app deliberately not active) passes.
- `swiftformat --lint` clean on the changed file.
2026-09-23 04:04:39 +00:00
..
.i18n chore(i18n): refresh native locales (#155864) 2026-09-22 17:30:13 +00:00
android chore(i18n): refresh native locales (#156006) 2026-09-22 23:29:41 +00:00
ios feat(browser): unify local Chrome setup across desktop and terminal (#152057) 2026-09-22 06:28:29 -07:00
linux feat(browser): unify local Chrome setup across desktop and terminal (#152057) 2026-09-22 06:28:29 -07:00
macos test(macos): keep the rendered Quick Chat suite stable on hosted runners (#156134) 2026-09-23 04:04:39 +00:00
macos-mlx-tts chore(deps): refresh dependencies with seven-day cutoff (#149908) 2026-09-16 09:06:40 -07:00
mobile feat(mobile): add dedicated version contract (#136366) 2026-09-03 04:53:27 +08:00
shared feat(decisions): add explicit evaluation and Labs opt-in foundation (#155134) 2026-09-22 15:55:02 -07:00
swabble fix: Swabble rejects executable paths and ignores file options (#140291) 2026-09-06 10:41:20 -07:00