pub struct SessionAppLifecycleRequest {
pub session_id: String,
pub args: Vec<String>,
pub env: BTreeMap<String, String>,
pub wait_for_foreground_ms: Option<u64>,
pub wait_for_interactive_ms: Option<u64>,
}Expand description
v1.0.8 §D1 — request body shared by POST /session/terminate-app
and POST /session/launch-app. v1.0.11 §D2 — extended with launch-
argument / launch-environment injection so consumers can bypass
scaffolding like Expo dev-launcher server pickers that vanish on
clearAppData (SDK 57 stops auto-navigating on URL scheme).
Fields§
§session_id: StringSession whose cached XCUIApplication binding will be acted on.
args: Vec<String>v1.0.11 §D2 — launchArguments passed to XCUIApplication.launch().
Empty vec = pre-v1.0.11 behavior (whatever the runner already had
cached on entry.app.launchArguments, which is empty by default).
Ignored by /session/terminate-app.
env: BTreeMap<String, String>v1.0.11 §D2 — launchEnvironment passed to XCUIApplication.launch().
Empty map = pre-v1.0.11 behavior. Ignored by
/session/terminate-app.
wait_for_foreground_ms: Option<u64>v1.0.11 §D3 — after .launch() dispatches, poll
XCUIApplication.state at 250 ms cadence until .runningForeground
(or timeout). Prevents callers from firing a subsequent
terminateApp before the process has signalled launchd ready — the
root cause of bug_type: 309 exec_terminated_before_ready .ips
writes insight reported on v1.0.10. None = pre-v1.0.11 fire-
and-return semantics; Some(0) = wait one iteration then return
terminal state (useful for tests). Default: Some(15000) at the
SDK layer.
wait_for_interactive_ms: Option<u64>v1.0.15 Cluster C D1 — after .runningForeground is observed
(or immediately when wait_for_foreground_ms == None), poll
the a11y tree at 500 ms cadence looking for ≥ minIdentifierCount
descendants with a non-empty accessibilityIdentifier NOT in
the interactive-probe ignore list. Fires
launchAppReachedInteractive when found; on timeout fires
launchAppTimedOutBeforeInteractive. Both counters live on
SessionLifecycleCounters and were wire-scaffolded in v1.0.14.
None = pre-v1.0.15 fire-and-return (no interactive polling).
Consumer config .smix/config.yaml interactiveProbe: { minIdentifierCount, ignore: [...] }
forwards to the runner via TEST_RUNNER_SMIX_INTERACTIVE_PROBE_JSON
at boot. Q7 answers in smix-feedback-2026-07-11-v1.0.12-answers.md
seeded defaults: minIdentifierCount: 3, ignore: [SplashScreenLogo, com.focusai.app.mobile].
Trait Implementations§
Source§impl Clone for SessionAppLifecycleRequest
impl Clone for SessionAppLifecycleRequest
Source§fn clone(&self) -> SessionAppLifecycleRequest
fn clone(&self) -> SessionAppLifecycleRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more