Skip to content

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

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions