[iOS] Get React Native tests passing - #499
Merged
Merged
Conversation
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
brandonpage
reviewed
Sep 24, 2026
wmathurin
marked this pull request as ready for review
September 24, 2026 01:14
brandonpage
approved these changes
Sep 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Goal
Get the React Native test application and test suite passing reliably on iOS, including the scene-based lifecycle required by current iOS releases.
Code highlights
UISceneDelegatelifecycle to the iOS test application and create its window from the connected scene./Applications/Xcode.appheader paths with$(TOOLCHAIN_DIR)so the project builds with both Xcode 26 and Xcode 27 beta.checks: writein PR and nightly workflows so it can publish test checks.Local test matrix
All passing runs used a test user on
authflowtestingmsdksdb38.test1.my.pc-rnd.salesforce.com.devThe shared product-behavior suite remains 35 tests: Harness 2, MobileSync 5, Net 16, OAuth 1, and SmartStore 11. The current iOS XCTest suite adds one green regression that deliberately triggers a stable JS failure and passes only when XCUITest recovers the exact error text. The iOS 18.6 and 26.5 runs predate that regression and passed the complete 35-test product suite; the final iOS 27.0 run passed all 36 current XCTest methods.
Credential/org diagnosis
Test1 is not a hard-coded product requirement and this PR adds no dependency on that domain. The original test user authenticated and refreshed successfully, but its org returned HTTP 403 with Salesforce error code
REQUEST_LIMIT_EXCEEDEDduring Contact creation. That explains the earlier Net/MobileSync failures and distinguishes them from stale credentials, Contact CRUD permissions, or a React Native code defect.CI needs credentials for a suitable test org/user with available API request capacity. The Test1 user above is the validated replacement used for this matrix; no username, token, client ID, org ID, or credential file is included in this change.
An A/B run against the current iOS SDK and the revision before
forcedotcom/SalesforceMobileSDK-iOS#4174produced the same API-limit failure with the original org, so that iOS SDK PR does not appear to be the cause.Final validation after diagnostics cleanup
npm run buildgit diff --checkplutil -lintfor the application plist and Xcode projecttestExpectedFailureDiagnosticrecovered the exact expected JS messagetestPassingtestCollectionCreateDeleteRetrievetestCleanResyncGhostsCI follow-up
The first PR run, using the repository's existing secret, executed all 35 iOS tests: iOS 18 reported 33/35 and iOS 26 reported 32/35, with remaining failures confined to MobileSync. The same MobileSync tests pass locally across iOS 18.6, 26.5, and 27.0 with the validated replacement user. CI should be rerun after its credential secret is updated to an org/user with available capacity.