Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Closed
#3,800 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
49/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
ios, typescript
Domain
mobile, testing

Research direction

Start with RunnerTests+SnapshotCapturePlanOccupancyTests.swift near line 529 and inspect the test’s fixture and the prerequisite viewport, orientation, keyboard, and tree-processing steps. Build a focused reproduction that detects an unintended prerequisite timeout, then verify the corrected fixture passes while retaining the delayed-operation assertion, expected budget reason, and truncated-tree refusal. Run the owning iOS test lane.

Written by the indexing model from the issue text.

Description

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.

Dominant language
TypeScript
Stars
5k
Forks
334
Avg merge
12h 13m
Merged PRs (30d)
723

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from callstack/agent-device

All issues in callstack/agent-device

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.