Skip to content

Commit 3248613

Browse files
chrfalchclaude
andcommitted
ci: cover rn-tester with prebuilt artifacts + dynamic frameworks
prebuilt + use_frameworks is the exact configuration of the 2026-07-03 SocketRocket dual-copy regression, and no CI lane covered it: the test-ios-rntester action hard-coupled use-frameworks:true to building from source. Add a use-prebuilds input ('auto' keeps the historical coupling for existing callers) and pass use-prebuilds:true from test_ios_rntester, so its dynamic-frameworks matrix cells now consume the prebuilt ReactCore + ReactNativeDependencies artifacts built in the same workflow run. Source-built dynamic frameworks stay covered by test_ios_rntester_dynamic_frameworks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 75d0467 commit 3248613

2 files changed

Lines changed: 36 additions & 7 deletions

File tree

.github/actions/test-ios-rntester/action.yml

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,18 @@ inputs:
1515
required: false
1616
default: false
1717
use-frameworks:
18-
description: Whether we have to build with Dynamic Frameworks. If this is set to true, it builds from source
18+
description: Whether we have to build with Dynamic Frameworks.
1919
required: false
2020
default: false
21+
use-prebuilds:
22+
description: >-
23+
Whether to consume the prebuilt ReactCore/ReactNativeDependencies
24+
artifacts. 'auto' (default) keeps the historical coupling: prebuilds for
25+
static, source for dynamic frameworks. Pass 'true' with
26+
use-frameworks:true for the prebuilt + dynamic-frameworks lane (the
27+
config of the 2026-07-03 SocketRocket dual-copy regression).
28+
required: false
29+
default: auto
2130

2231
runs:
2332
using: composite
@@ -41,33 +50,47 @@ runs:
4150
- name: Prepare IOS Tests
4251
if: ${{ inputs.run-unit-tests == 'true' }}
4352
uses: ./.github/actions/prepare-ios-tests
53+
- name: Resolve prebuilds mode
54+
id: prebuilds
55+
shell: bash
56+
run: |
57+
if [[ "${{ inputs.use-prebuilds }}" == "auto" ]]; then
58+
# Historical coupling: prebuilds for static, source for dynamic frameworks.
59+
if [[ "${{ inputs.use-frameworks }}" == "true" ]]; then
60+
echo "enabled=false" >> "$GITHUB_OUTPUT"
61+
else
62+
echo "enabled=true" >> "$GITHUB_OUTPUT"
63+
fi
64+
else
65+
echo "enabled=${{ inputs.use-prebuilds }}" >> "$GITHUB_OUTPUT"
66+
fi
4467
- name: Download ReactNativeDependencies
45-
if: ${{ inputs.use-frameworks == 'false' }}
68+
if: ${{ steps.prebuilds.outputs.enabled == 'true' }}
4669
uses: actions/download-artifact@v7
4770
with:
4871
name: ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz
4972
path: /tmp/third-party/
5073
- name: Print third-party folder
51-
if: ${{ inputs.use-frameworks == 'false' }}
74+
if: ${{ steps.prebuilds.outputs.enabled == 'true' }}
5275
shell: bash
5376
run: ls -lR /tmp/third-party
5477
- name: Download React Native Prebuilds
55-
if: ${{ inputs.use-frameworks == 'false' }}
78+
if: ${{ steps.prebuilds.outputs.enabled == 'true' }}
5679
uses: actions/download-artifact@v7
5780
with:
5881
name: ReactCore${{ inputs.flavor }}.xcframework.tar.gz
5982
path: /tmp/ReactCore
6083
- name: Print ReactCore folder
61-
if: ${{ inputs.use-frameworks == 'false' }}
84+
if: ${{ steps.prebuilds.outputs.enabled == 'true' }}
6285
shell: bash
6386
run: ls -lR /tmp/ReactCore
6487
- name: Install CocoaPods dependencies
6588
shell: bash
6689
run: |
6790
if [[ ${{ inputs.use-frameworks }} == "true" ]]; then
6891
export USE_FRAMEWORKS=dynamic
69-
else
70-
# If use-frameworks is false, let's use prebuilds
92+
fi
93+
if [[ "${{ steps.prebuilds.outputs.enabled }}" == "true" ]]; then
7194
export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz"
7295
export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz"
7396
fi

.github/workflows/test-all.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,12 @@ jobs:
155155
uses: ./.github/actions/test-ios-rntester
156156
with:
157157
use-frameworks: ${{ matrix.frameworks }}
158+
# Consume the prebuilt artifacts in the dynamic-frameworks cells too:
159+
# prebuilt + use_frameworks is the config of the 2026-07-03
160+
# SocketRocket dual-copy regression, previously covered by no lane
161+
# (source-built dynamic frameworks stay covered by
162+
# test_ios_rntester_dynamic_frameworks).
163+
use-prebuilds: true
158164
flavor: ${{ matrix.flavor }}
159165

160166
test_e2e_ios_rntester:

0 commit comments

Comments
 (0)