You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cfbbdb0
Browse filesBrowse the repository at this point in the historyBrowse files
fix(#2682): make the activation lane manual and record why the CI simulator cannot run it
The lane was added to the iOS Smoke and replays-manual lists to satisfy "assert the field on a real
device response", but on that host the runner reads its own target as `.runningForeground` while a
foreign app is demonstrably on screen — the uploaded artifact pairs a rendered app screenshot with a
Settings screenshot and 31 captures of the bound app in ~450 ms each, no repair. The runner is right
to activate nothing there, so the assertion measures `XCUIApplication.state` on a headless simulator
instead of this feature. Filed as #2696.
The file stays, env-gated, with the reason at the lane and the command to run it, and the handoff goes
back through Safari via `simctl openurl`: launching Settings directly changes the screen — the
screenshot guard passes — yet the runner then reports its target as foreground for the whole polling
window, which is #2696's divergence wearing a different hat. Verified against a freshly built daemon:
first capture after the handoff carries `stale_target` / `runningBackground` / the foreign pid, the
next one carries neither.
Copy file name to clipboardExpand all lines: test/integration/smoke-ios-target-activation.test.ts
+32-22Lines changed: 32 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -18,18 +18,29 @@ import {
18
18
* actually activated the bound app, so this drives the real runner on a real simulator — a mocked
19
19
* runner response proves the decoder, not the fact.
20
20
*
21
-
* Runs on the same lanes as the iOS simulator fixture E2E (`smoke` and `full` tiers) and needs the
22
-
* same environment: `AGENT_DEVICE_IOS_E2E=1`, `AGENT_DEVICE_IOS_E2E_TIER`, `AGENT_DEVICE_FIXTURE_APP_PATH`
23
-
* and `AGENT_DEVICE_FIXTURE_APP_ID`, and `AGENT_DEVICE_IOS_UDID`. Those lanes fetch the fixture with
24
-
* `install: 'false'`, so this lane installs it through the public CLI like the other fixture lanes do.
21
+
* MANUAL, ENV-GATED LANE. It is deliberately absent from the `ios.yml` and `replays-manual.yml` test
22
+
* lists: on the CI-hosted simulator the runner reads its own target as `.runningForeground` while a
23
+
* foreign app is demonstrably on screen, so that host owes no repair and no disclosure
24
+
* ([#2696](https://github.com/callstack/agent-device/issues/2696)). Running it there measures
25
+
* `XCUIApplication.state` on a headless simulator, not this feature.
26
+
*
27
+
* Run it against a local simulator or a physical device:
// Settings, not a web link: `simctl openurl https://…` hands off through Safari, and on a CI
29
-
// simulator that handoff can complete without Safari ever taking the foreground, which leaves this
30
-
// lane waiting for a repair that was never owed. `simctl launch com.apple.Preferences` is the
31
-
// handoff the iOS replays already rely on for the same effect.
32
-
constHANDOFF_BUNDLE_ID='com.apple.Preferences';
38
+
// Safari, through LaunchServices, the way an in-app external link does it. Launching Settings
39
+
// directly (`simctl launch com.apple.Preferences`) also changes the screen, and the screenshot guard
40
+
// below would still pass, but on the local simulator the runner then reads its own target as
41
+
// foreground for the whole polling window — the same state divergence recorded in #2696, which this
42
+
// lane exists to avoid mistaking for a missing disclosure.
0 commit comments