Skip to content

Bump CI to Xcode 26.3 / iOS 26 simulator - #803

Closed
mokagio wants to merge 2 commits into
trunkfrom
ci-xcode-26.3
Closed

Bump CI to Xcode 26.3 / iOS 26 simulator#803
mokagio wants to merge 2 commits into
trunkfrom
ci-xcode-26.3

Conversation

@mokagio

@mokagio mokagio commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Caution

Closed in favor of #825

Description

Moves the repo's CI tooling off Xcode 16.2 / iOS 18.2 / iPhone SE (3rd generation) onto Xcode 26.3 / iOS 26.3 / iPhone 17.

  • Adds .xcode-version (26.3) and rewrites .buildkite/shared-pipeline-vars to derive IMAGE_ID from it — same pattern used in wpios, wcios, and Automattic-Tracks-iOS, so future Xcode bumps touch a single file.
  • fastlane/Fastfile: iPhone SE (3rd generation) is not bundled with Xcode 26, so the simulator moves to iPhone 17 (26.3).
  • .github/workflows/docc.yml: /Applications/Xcode_16.2.app/Applications/Xcode_26.3.app.
  • Regenerates all Tests/GravatarUITests/__Snapshots__/*.png — SwiftUI rendering shifted between iOS 18 and iOS 26, and the device changed, so every reference image had to be recaptured.
  • CI_TOOLKIT stays pinned at 3.9.1 to keep this PR narrowly scoped; a separate bump to a 6.x line (as in sibling repos) is left as a follow-up.

Testing Steps

  1. Let Buildkite run — Build and Test Swift Package, SwiftLint, SwiftFormat, Validate Podspecs, and Build Demo should all pass on the new xcode-26.3 image.
  2. Spot-check a couple of regenerated snapshots to confirm they look right for iOS 26 / iPhone 17.
  3. Verify the GitHub Deploy Gravatar DocC workflow still publishes docs on merge to trunk.

Notes for reviewers

  • Snapshots were regenerated locally via withSnapshotTesting(record: .failed) across two passes on Xcode 26.3 (17C529) with the iOS 26.3 simulator runtime; the final full-suite run landed with 198 test cases / 55 suites passing, 0 failures.
  • testLoadingState in AboutEditorViewTests relies on Task.sleep(nanoseconds: 20) to catch a mid-load snapshot and is somewhat timing-sensitive — worth keeping an eye on over the next few builds, but this flakiness is pre-existing rather than something introduced here.

Adopts the `.xcode-version` pattern used by sibling Automattic iOS repos
(wpios, wcios, Automattic-Tracks-iOS): the pin lives in `.xcode-version`
and `IMAGE_ID` is derived from it in `.buildkite/shared-pipeline-vars`,
so future bumps touch a single file.

iPhone SE (3rd generation) is not bundled with Xcode 26, so the fastlane
simulator device moves to iPhone 17 on iOS 26.3. The `.github/workflows/docc.yml`
workflow is switched from `Xcode_16.2.app` to `Xcode_26.3.app` for consistency.

Snapshot regeneration lands in a follow-up commit.

---

Generated with the help of Claude Code, https://claude.ai/code

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mokagio mokagio closed this Jul 21, 2026
@mokagio
mokagio deleted the ci-xcode-26.3 branch July 21, 2026 04:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant