Repository navigation
CI runs no iOS unit tests: test-ios-rntester skips them unless run-unit-tests is true, and no job sets it #59596
Description
Description
React Native's CI builds RNTester for iOS in several jobs of test-all.yml and runs its iOS unit tests in none of them. .github/actions/test-ios-rntester runs yarn test-ios only when run-unit-tests is 'true' (L145-L148), its default is false, and no caller sets it to true: test_ios_rntester passes use-frameworks, use-prebuilds and flavor only, and test_ios_rntester_dynamic_frameworks passes false beside a comment that the tests "are already run in the test_ios_rntester job" (L139). So a change that breaks an iOS unit test passes CI.
The React-RCTFabric pod's own Tests test spec (React-RCTFabric.podspec) is built by no job either: no Podfile asks for it with :testspecs.
Steps to reproduce
-
Open any
mainTest All run, for example 40680271235 on dfed2d9. -
In
test_ios_rntester (Debug, false), the action's unit-test steps are skipped (its log is under Stacktrace or Logs). -
On
mainat c12d0b3,git grep -n "run-unit-tests" -- .githubfinds the action's input and one caller,test_ios_rntester_dynamic_frameworks, passingfalse;git grep -n testspecs -- packages/rn-tester/Podfile packages/react-native/scripts/cocoapodsfinds nothing.
Expected: one job runs yarn test-ios, as the dynamic-frameworks job's comment says test_ios_rntester does, and builds the React-RCTFabric test spec.
Actual: no job runs the iOS unit tests; test_ios_rntester's unit-test steps are skipped (step 2, its log below).
React Native Version
main (c12d0b3)
Affected Platforms
Runtime - iOS
Output of npx @react-native-community/cli info
Not applicable: this is React Native's own CI, .github/workflows/test-all.yml and .github/actions/test-ios-rntester.
Stacktrace or Logs
Job test_ios_rntester (Debug, false) of run 40680271235:
2026-10-28T17:28:46.2357330Z ##[start-action display=Prepare IOS Tests;id=__self.__self_5]
2026-10-28T17:28:46.2373050Z ##[end-action id=__self.__self_5;outcome=skipped;conclusion=skipped;duration_ms=0]
2026-10-28T23:25:50.1026300Z ##[start-action display=Run Tests: iOS Unit and Integration Tests;id=__self.__run_7]
2026-10-28T23:25:50.1034880Z ##[end-action id=__self.__run_7;outcome=skipped;conclusion=skipped;duration_ms=0]
MANDATORY Reproducer
React Native's own workflow on main:
react-native/.github/workflows/test-all.yml
Lines 141 to 164 in c12d0b3
| test_ios_rntester: | |
| runs-on: macos-15-large | |
| needs: [prebuild_apple_dependencies, prebuild_react_native_core] | |
| if: ${{ needs.prebuild_react_native_core.result == 'success' }} | |
| continue-on-error: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| flavor: [Debug, Release] | |
| frameworks: [false, true] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Run it | |
| uses: ./.github/actions/test-ios-rntester | |
| with: | |
| use-frameworks: ${{ matrix.frameworks }} | |
| # Consume the prebuilt artifacts in the dynamic-frameworks cells too: | |
| # prebuilt + use_frameworks is the config of the 2026-07-03 | |
| # SocketRocket dual-copy regression, previously covered by no lane | |
| # (source-built dynamic frameworks stay covered by | |
| # test_ios_rntester_dynamic_frameworks). | |
| use-prebuilds: true | |
| flavor: ${{ matrix.flavor }} |
react-native/.github/actions/test-ios-rntester/action.yml
Lines 145 to 148 in c12d0b3
| - name: 'Run Tests: iOS Unit and Integration Tests' | |
| if: ${{ inputs.run-unit-tests == 'true' }} | |
| shell: bash | |
| run: yarn test-ios |
test_ios_rntester has passed run-unit-tests: 'false' since #45133, and the comment that says it runs the tests came with #53848.
Screenshots and Videos
No response
Activity
react-native-bot commentedon Oct 29, 2026
Warning
Missing reproducer: We could not detect a reproducible example in your issue report. Reproducers are mandatory and we can accept only one of those as a valid reproducer:
You can read more about about it on our website: How to report a bug.
YevheniiKotyrlo commentedon Oct 29, 2026
The body now follows the bug form: this is CI configuration, so the reproducer is the workflow itself on
main,test-all.yml'stest_ios_rntesterjob and the action's gatedyarn test-iosstep, with the skipped steps from run 40680271235 under Stacktrace or Logs.