Skip to content

A wait timeout during runner start stops the runner, so the retry pays the start again #2894

Description

@thymikee

Problem

When a wait times out while the XCTest runner is still starting, the cancellation stops that runner. A retry with the same timeout then pays the whole runner start again, so on a slow host a short-timeout wait can never succeed. In one run on 2026-09-24 (iOS 26.2 Simulator), the runner took 31 s to stop after a 4 s wait timeout.

Found while working on #2343 (PR #2893). #2893 now reports this case as wait_readiness_exhausted with readinessPhase: runner-start. It does not change the lifecycle.

Required behavior

Decide and implement one of these:

  • a runner start that a caller's deadline cancelled keeps going in the background, so the next request joins it;
  • the start is budgeted separately from the observation deadline.

Either way, cancelling a start stops it promptly and not tens of seconds later. The retry after a readiness timeout must not pay the full start again.

Evidence to reproduce

open the fixture app, kill the runner, terminate the app, then wait text … 4000 repeatedly. Watch runner start and stop times in the daemon log.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions