Skip to content

iOS runner: isolate collapsed-tab occupancy test from prerequisite timeouts #3800

Closed

Description

@thymikee

Purpose

Make the collapsed-tab occupancy test exercise its intended exhausted tree tier on slow CI hosts.

testPlanMovesPastATreeTierWhoseCollapsedTabQueryCannotStart expects reason budget. It sometimes receives capture-failed at RunnerTests+SnapshotCapturePlanOccupancyTests.swift:529.

Evidence

The raw job logs show the same assertion on three unrelated heads:

The test file is identical across these heads. #3791 changes no Swift file. Its new daemon timing step runs after the XCTest suite.

The #3791 log records a one-second snapshot_viewport timeout before private AX recovery. The other failures record a tree-processing timeout. These paths produce capture-failed before the intended budget assertion. Host timing is a suspected trigger; it is not a proven complete cause.

A focused local loop passed 3/3 times on a separate iOS 26.2 simulator. No local red reproduction or fix is proven.

Required behavior

  • Isolate prerequisite viewport, orientation, keyboard, and processing work from the deliberately delayed tree operation.
  • Preserve the assertion that the delayed operation was entered.
  • Preserve the expected budget reason and the refusal to accept a truncated tree as healthy.
  • Use a deterministic fixture or injected facts. A warm-up read alone must not claim to prevent a later timeout.
  • Do not widen timeouts, add retries, skip the test, or accept both reason codes.

Completion

Show a focused reproduction that detects the unintended prerequisite timeout. Then show the corrected fixture passes and still detects the intended regression. Run the owning iOS lane.

Owner: the iOS runner test lane. Related: #2847 and #2957. Keep this fix separate from #3791's daemon startup contract.

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