Skip to content

Follow-ups from iOS perf PRs (#630, #632, #633, #634) #635

@thymikee

Description

@thymikee

Tracking issue for non-blocking follow-ups surfaced while reviewing the iOS perf batch (#630 harness, #632 get text, #633 text entry, #634 pinch). None block those merges; collecting them here so they don't get lost.

get text — ambiguous-selector slowness (#632)

  • get text on an ambiguous selector can take ~13s to return AMBIGUOUS_MATCH, even though find disambiguates the same selector in ~1s. Every iOS Settings cell is a label/button/text triplet, so this is easy to hit.
  • get text sets disambiguateAmbiguous, but the runner-side query still rejects first. Worth aligning the get text path with find's disambiguation.

Swift-side readTextAt for editable reads (#632)

Harness gotchas that look like real bugs (#630)

Found while building the perf harness; each is currently worked around rather than fixed:

  • Session lock rejects matching selectors. Passing --session sets lockPolicy='reject' (src/utils/session-binding.ts), so device selectors are rejected on every command except the session-creating open/apps/devices — including boot. Is rejecting selectors that match the already-locked device intended? The harness has to run boot sessionless to work around it.
  • record instant start→stop fails to finalize. An immediate record startrecord stop produces an invalid video (simctl recordVideo exited with code 1 on iOS; "not a playable MP4" on Android). Needs >1s of footage bracketed between start/stop. Should at least fail with a clear error rather than emitting a broken file.

iOS slow paths from the perf findings (#630)

The nightly harness flagged these iOS outliers vs Android (numbers inflated by co-resident sims, but the relative gaps are the signal). #632/#633 addressed get text / fill / type; remaining:

  • iOS scroll markedly slower than Android (~8s vs ~2.5s in the sampled run).
  • iOS is visible slower than Android.
  • iOS root snapshot -i (~2.7s) is ~10× the deep snapshot -i (~190ms) — counterintuitive; worth investigating.

Let the nightly perf-nightly.yml trends confirm these on clean runners before digging in.

#629 — scroll/fling pinch (partial, via #634)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions