Skip to content

ci: run the iOS integration tests in their own job - #5790

Draft
ric-oliv wants to merge 2 commits into
mainfrom
ci/split-ios-integration-tests
Draft

ric-oliv wants to merge 2 commits into
mainfrom
ci/split-ios-integration-tests

Conversation

@ric-oliv

@ric-oliv ric-oliv commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

The iOS Device Tests job is now the slowest check on a PR. In the combined measurement on #5788, the build workflow finished in 35 minutes and the iOS job took about 42.

It does everything in sequence on one Mac:

Step Minutes
Setup Environment 3.8
Build the device test app, with the Cocoa SDK from the cache 3.6
Device tests 13.6
Integration tests 19.8

The device tests and the integration tests build and run different apps, Sentry.Maui.Device.TestApp and Sentry.Maui.Device.IntegrationTestApp. They only share the simulator. So this PR moves ios.Tests.ps1 into a second job, ios-integration-tests, which starts at the same time on its own Mac.

  • ios.Tests.ps1 skips every case unless a simulator is already booted. In ios-tests xharness boots it, so the new job boots its own with the same Get-IosSimulatorUdid helper and simctl bootstatus -b. The boot takes about 2 minutes, and the step times out after 10, so a hung boot can't hold the job for hours.
  • Both jobs restore the Cocoa SDK from the cache and save it on a miss.
  • The results go to two artifacts, device-test-ios-results and device-test-ios-integration-results.

I expect the iOS workflow to drop from about 42 to about 25 minutes, so a PR waits on the build workflow again. The cost is one more Mac per run, about 8 more macOS minutes for its setup and simulator boot.

Measured on the first run, against #5792's run from the same evening, which still runs both steps in one job:

#5792, one job This PR
iOS workflow 38.7 min 18.0
ios-tests 38.7 15.0
ios-integration-tests 17.9
Device tests step 14.9 9.2
Integration tests step 15.5 12.6
Simulator boot in the new job 2.0

All 8 integration cases ran: "Discovery found 8 tests" and "Tests Passed: 8, Failed: 0, Skipped: 0". The combined draft #5793 matched this, with the iOS workflow at 16.6 minutes and 8 of 8 passed.

#skip-changelog

The iOS job ran the device tests and then the integration tests on one
Mac, about 42 minutes in all. The two build and run different apps and
share only the simulator, so the integration tests now run in a second
job at the same time.

ios.Tests.ps1 skips every case unless a simulator is already booted, and
xharness only boots one in the ios-tests job, so the new job boots its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 76.11%. Comparing base (b41b96c) to head (dbebea7).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #5790      +/-   ##
==========================================
- Coverage   76.13%   76.11%   -0.02%     
==========================================
  Files         528      528              
  Lines       19579    19579              
  Branches     3829     3829              
==========================================
- Hits        14906    14903       -3     
- Misses       3791     3793       +2     
- Partials      882      883       +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

The boot takes about 2 minutes. Without a limit, a hung boot would run
until the job's 6-hour timeout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant