Skip to content

chore: [SDK-5040] speed up iOS CI workflow and fix flakey tests - #1719

Merged
fadi-george merged 24 commits into
mainfrom
fadi/sdk-5040
Aug 20, 2026
Merged

chore: [SDK-5040] speed up iOS CI workflow and fix flakey tests#1719
fadi-george merged 24 commits into
mainfrom
fadi/sdk-5040

Conversation

@fadi-george

@fadi-george fadi-george commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Description

One Line Summary

Parallelize iOS CI jobs and reuse a cached KMP XCFramework across simulator and Catalyst checks. Also fixes flakey tests and shrinkes ci time from around ~20 minutes to ~10mins.

Details

Motivation

The iOS CI workflow serially rebuilt and verified the KMP XCFramework before lint, simulator tests, and Catalyst integration checks. The linked baseline took 17m36, including 5m13 for KMP work.

Scope

Splits lint, KMP assembly, simulator tests, and Catalyst integration into separate jobs. The KMP job caches by submodule SHA, runner architecture, and Xcode version, then shares one packaged artifact with both dependent jobs. Simulator build and tests remain together, and release usage retains exhaustive XCFramework verification.

Testing

Unit testing

No SDK runtime behavior changed, so no new unit tests were needed.

Manual testing

  • Validated the workflow with actionlint and YAML parsing.
  • Validated shell syntax and diff formatting.
  • Ran the assembly-only and default verification KMP tasks successfully.
  • Verified the XCFramework tar artifact packaging and extraction round trip.
  • The PR workflow will provide cold-cache timing; a rerun will provide warm-cache timing against the 17m36 baseline.

Affected code checklist

  • Notifications
    • Display
    • Open
    • Push Processing
    • Confirm Deliveries
  • Outcomes
  • Sessions
  • In-App Messaging
  • REST API requests
  • Public API changes

Checklist

Overview

  • I have filled out all REQUIRED sections above
  • PR does one thing
  • Any Public API changes are explained in the PR details and conform to existing APIs

Testing

  • I have included test coverage for these changes, or explained why they are not needed
  • All automated tests pass, or I explained why that is not possible
  • I have personally tested this on my device, or explained why that is not possible

Final pass

  • Code is as readable as possible.
  • I have reviewed this PR myself, ensuring it meets each checklist item

Made with Cursor

@fadi-george
fadi-george requested a review from nan-li August 19, 2026 23:21
@fadi-george fadi-george changed the title chore: [SDK-5040] parallelize iOS CI with KMP cache chore: [SDK-5040] speed up iOS CI workflow and fix flakey tests Aug 19, 2026
@fadi-george
fadi-george merged commit 79fe8ce into main Aug 20, 2026
4 checks passed
@fadi-george
fadi-george deleted the fadi/sdk-5040 branch August 20, 2026 16:52
nan-li added a commit that referenced this pull request Aug 21, 2026
These tests were written before #1719 landed, so they grew their own
copies of infrastructure that now exists repo-wide: a XCTestCase.waitUntil
extension alongside OneSignalCoreMocks.waitUntil, an inlined consistency
reset pair alongside ConsistencyManagerTestHelpers.reset, and a private
resetOperationRepo alongside OSCoreMocks.resetOperationRepo. Two
implementations of the same wait can drift in timeout and semantics, so
prefer the shared ones.

The flush tests now use OSOperationRepo.flushAndWait, which #1719 added
for this: the repo queue is serial and dispatches executors inline, so a
sync flush lands every delta and makes the expectation, the timeout and
the pre-flush poll unnecessary.

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

3 participants