Skip to content

ios: fill's verified element route cannot recover from a field whose app writes its value back mid-burst #2903

Description

@thymikee

Purpose

The pace bound in #2878 protects only the synthesized-first-responder-replacement route, which exists only when the XCTest snapshot channel is already penalized. The verified XCUIElement route, which is what most fill calls take on a healthy simulator, is corrupted by the same app behaviour, and its repair path cannot recover from it.

Required behavior

fill onto a field whose app re-applies its own value while the burst is in flight (a controlled React Native TextInput, an async validator) either ends with the requested text or fails with a typed reason naming the collision. It must not report ok on a truncated value, and it must not spend its repair budget re-typing into a race it always loses.

Observable completion conditions

Evidence

Runner host app with that fixture, iPhone 16 Simulator, iOS 26.2:

  • element route: corrupted 10/10 (ada@example -> adxe, Ada Lovelace -> ALa).
  • the existing clear-and-retype repair converged 0/10: every retype raced the same write.
  • per-character entry with --delay-ms 80: correct 10/10, which is what identifies the burst pace, not the event stream, as the collision.

Dependencies

Blocked by: #2080 as shipped in #2878, which bounds the synthesized route only.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions