99# - cron: '0 7 * * *' # run at 7 AM UTC, 12 AM PST
1010# workflow_dispatch: # manually trigger the e2e tests
1111
12- jobs :
13- test-android :
14- name : e2e-android-test
15- runs-on : ubuntu-24.04
16- strategy :
17- fail-fast : false
18- matrix :
19- react_arch : [old_arch, new_arch]
20- shard_index : [0, 1, 2]
21- env :
22- MAESTRO_CLI_ANALYSIS_NOTIFICATION_DISABLED : true
23- NEW_ARCH_ENABLED : ${{ matrix.react_arch == 'new_arch' }}
24- RCT_NEW_ARCH_ENABLED : ${{ matrix.react_arch == 'new_arch' && '1' || '0' }}
25- SHARD_COUNT : 3
26- SHARD_INDEX : ${{ matrix.shard_index }}
27- RETRY_SLEEP_FAST : 10
28- RETRY_SLEEP_SLOW : 45
29- steps :
30- # Enable KVM to be able to use hardware accelerated emulators.
31- # https://github.com/ReactiveCircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners
32- - name : Enable KVM group perms
33- run : |
34- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
35- sudo udevadm control --reload-rules
36- sudo udevadm trigger --name-match=kvm
37- ls /dev/kvm
12+ # jobs:
13+ # test-android:
14+ # name: e2e-android-test
15+ # runs-on: ubuntu-24.04
16+ # strategy:
17+ # fail-fast: false
18+ # matrix:
19+ # react_arch: [old_arch, new_arch]
20+ # shard_index: [0, 1, 2]
21+ # env:
22+ # MAESTRO_CLI_ANALYSIS_NOTIFICATION_DISABLED: true
23+ # NEW_ARCH_ENABLED: ${{ matrix.react_arch == 'new_arch' }}
24+ # RCT_NEW_ARCH_ENABLED: ${{ matrix.react_arch == 'new_arch' && '1' || '0' }}
25+ # SHARD_COUNT: 3
26+ # SHARD_INDEX: ${{ matrix.shard_index }}
27+ # RETRY_SLEEP_FAST: 10
28+ # RETRY_SLEEP_SLOW: 45
29+ # steps:
30+ # # Enable KVM to be able to use hardware accelerated emulators.
31+ # # https://github.com/ReactiveCircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners
32+ # - name: Enable KVM group perms
33+ # run: |
34+ # echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
35+ # sudo udevadm control --reload-rules
36+ # sudo udevadm trigger --name-match=kvm
37+ # ls /dev/kvm
3838
3939# - name: checkout
4040# uses: actions/checkout@v4
@@ -65,38 +65,38 @@ jobs:
6565# distribution: 'zulu'
6666# java-version: '17'
6767
68- - name : Cache Gradle build
69- uses : gradle/actions/setup-gradle@v4
70-
71- - name : Build Android App
72- run : |
73- cd example/android
74- yarn build:android
75- ./gradlew assembleRelease -PnewArchEnabled=$NEW_ARCH_ENABLED -PreactNativeArchitectures=x86_64 --no-daemon --build-cache --no-scan
76-
77- - name : Install Maestro CLI
78- run : |
79- curl -Ls "https://get.maestro.mobile.dev" | bash
80- echo "${HOME}/.maestro/bin" >> $GITHUB_PATH
81-
82- - name : Run Android Emulator and run tests
83- id : android_tests
84- uses : reactivecircus/android-emulator-runner@v2
85- with :
86- api-level : 33
87- # This build is the most stable for API 33. Others appear to have a significant amount of ColorBuffer emulator errors.
88- # While those errors don't affect the test outcome, best to be on the most stable build.
89- emulator-build : 11237101
90- arch : x86_64
91- target : google_apis
92- force-avd-creation : false
93- emulator-options : -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
94- disable-animations : true
95- script : |
96- # Wait for system to settle
97- adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done'
98- adb install -r example/android/app/build/outputs/apk/release/app-release.apk
99- yarn test:e2e:android
68+ # - name: Cache Gradle build
69+ # uses: gradle/actions/setup-gradle@v4
70+
71+ # - name: Build Android App
72+ # run: |
73+ # cd example/android
74+ # yarn build:android
75+ # ./gradlew assembleRelease -PnewArchEnabled=$NEW_ARCH_ENABLED -PreactNativeArchitectures=x86_64 --no-daemon --build-cache --no-scan
76+
77+ # - name: Install Maestro CLI
78+ # run: |
79+ # curl -Ls "https://get.maestro.mobile.dev" | bash
80+ # echo "${HOME}/.maestro/bin" >> $GITHUB_PATH
81+
82+ # - name: Run Android Emulator and run tests
83+ # id: android_tests
84+ # uses: reactivecircus/android-emulator-runner@v2
85+ # with:
86+ # api-level: 33
87+ # # This build is the most stable for API 33. Others appear to have a significant amount of ColorBuffer emulator errors.
88+ # # While those errors don't affect the test outcome, best to be on the most stable build.
89+ # emulator-build: 11237101
90+ # arch: x86_64
91+ # target: google_apis
92+ # force-avd-creation: false
93+ # emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
94+ # disable-animations: true
95+ # script: |
96+ # # Wait for system to settle
97+ # adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done'
98+ # adb install -r example/android/app/build/outputs/apk/release/app-release.apk
99+ # yarn test:e2e:android
100100
101101# - name: Upload test artifacts
102102# if: always()
@@ -115,14 +115,14 @@ jobs:
115115# payload: |
116116# "text": " *Nightly Build Failed* for e2e-android-test ( ${{ matrix.react_arch }} )\nSee details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
117117
118- - name : Send Slack notification
119- if : ${{ failure() && github.event_name == 'schedule'}}
120- 121- with :
122- webhook : ${{ secrets.SLACK_RUN_CHANNEL_WEBHOOK_URL }}
123- webhook-type : incoming-webhook
124- payload : |
125- "text": " *Nightly Build Failed* for e2e-android-test ( ${{ matrix.react_arch }} )\nSee details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
118+ # - name: Send Slack notification
119+ # if: ${{ failure() && github.event_name == 'schedule'}}
120+ # uses: slackapi/[email protected] 121+ # with:
122+ # webhook: ${{ secrets.SLACK_RUN_CHANNEL_WEBHOOK_URL }}
123+ # webhook-type: incoming-webhook
124+ # payload: |
125+ # "text": " *Nightly Build Failed* for e2e-android-test ( ${{ matrix.react_arch }} )\nSee details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
126126
127127# - name: Get yarn cache directory path
128128# id: yarn-cache-dir-path
@@ -187,112 +187,112 @@ jobs:
187187# payload: |
188188# "text": "*Nightly Build Failed* for e2e-ios-test ( ${{ matrix.react_arch }} )\nSee details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
189189
190- - name : Upload test artifacts
191- if : always()
192- uses : actions/upload-artifact@v4
193- with :
194- name : maestro-artifacts-ios-${{ matrix.react_arch }}-shard-${{ matrix.shard_index }}
195- path : e2e-artifacts
196- include-hidden-files : true
197-
198- - name : Send Financial Connections Slack notification
199- if : always() && steps.ios_tests.outputs.FINANCIAL_CONNECTIONS_TESTS_FAILED == 'true'
200- 201- with :
202- webhook : ${{ secrets.SLACK_LINK_MOBILE_ALERT_CHANNEL_WEBHOOK_URL }}
203- webhook-type : incoming-webhook
204- payload : |
205- {
206- "text": "🚨 *Financial Connections Tests Failed* on iOS (${{ matrix.react_arch }})",
207- "blocks": [
208- {
209- "type": "section",
210- "text": {
211- "type": "mrkdwn",
212- "text": "🚨 *Financial Connections Tests Failed* on iOS (${{ matrix.react_arch }})"
213- }
214- },
215- {
216- "type": "section",
217- "fields": [
218- {
219- "type": "mrkdwn",
220- "text": "*Failed Tests:*\n${{ steps.ios_tests.outputs.FAILED_FC_TESTS }}"
221- },
222- {
223- "type": "mrkdwn",
224- "text": "*Branch:*\n${{ github.ref_name }}"
225- },
226- {
227- "type": "mrkdwn",
228- "text": "*Commit:*\n${{ github.sha }}"
229- },
230- {
231- "type": "mrkdwn",
232- "text": "*Triggered by:*\n${{ github.event_name }}"
233- }
234- ]
235- },
236- {
237- "type": "actions",
238- "elements": [
239- {
240- "type": "button",
241- "text": {
242- "type": "plain_text",
243- "text": "View Build"
244- },
245- "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
246- }
247- ]
248- }
249- ]
250- }
251-
252- - name : Send Slack notification
253- if : ${{ failure() && github.event_name == 'schedule'}}
254- 255- with :
256- webhook : ${{ secrets.SLACK_RUN_CHANNEL_WEBHOOK_URL }}
257- webhook-type : incoming-webhook
258- payload : |
259- "text": "*Nightly Build Failed* for e2e-ios-test ( ${{ matrix.react_arch }} )\nSee details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
260-
261- # Reporter jobs that provide the status checks branch protection expects
262- report-android-status :
263- name : e2e-android-test
264- runs-on : ubuntu-latest
265- needs : test-android
266- if : always()
267- strategy :
268- matrix :
269- react_arch : [old_arch, new_arch]
270- steps :
271- - name : Report status
272- run : |
273- if [[ "${{ needs.test-android.result }}" == "success" ]]; then
274- echo "All Android tests passed for ${{ matrix.react_arch }}"
275- exit 0
276- else
277- echo "Android tests failed for ${{ matrix.react_arch }}"
278- exit 1
279- fi
280-
281- report-ios-status :
282- name : e2e-ios-test
283- runs-on : ubuntu-latest
284- needs : test-ios
285- if : always()
286- strategy :
287- matrix :
288- react_arch : [old_arch, new_arch]
289- steps :
290- - name : Report status
291- run : |
292- if [[ "${{ needs.test-ios.result }}" == "success" ]]; then
293- echo "All iOS tests passed for ${{ matrix.react_arch }}"
294- exit 0
295- else
296- echo "iOS tests failed for ${{ matrix.react_arch }}"
297- exit 1
298- fi
190+ # - name: Upload test artifacts
191+ # if: always()
192+ # uses: actions/upload-artifact@v4
193+ # with:
194+ # name: maestro-artifacts-ios-${{ matrix.react_arch }}-shard-${{ matrix.shard_index }}
195+ # path: e2e-artifacts
196+ # include-hidden-files: true
197+
198+ # - name: Send Financial Connections Slack notification
199+ # if: always() && steps.ios_tests.outputs.FINANCIAL_CONNECTIONS_TESTS_FAILED == 'true'
200+ # uses: slackapi/[email protected] 201+ # with:
202+ # webhook: ${{ secrets.SLACK_LINK_MOBILE_ALERT_CHANNEL_WEBHOOK_URL }}
203+ # webhook-type: incoming-webhook
204+ # payload: |
205+ # {
206+ # "text": "🚨 *Financial Connections Tests Failed* on iOS (${{ matrix.react_arch }})",
207+ # "blocks": [
208+ # {
209+ # "type": "section",
210+ # "text": {
211+ # "type": "mrkdwn",
212+ # "text": "🚨 *Financial Connections Tests Failed* on iOS (${{ matrix.react_arch }})"
213+ # }
214+ # },
215+ # {
216+ # "type": "section",
217+ # "fields": [
218+ # {
219+ # "type": "mrkdwn",
220+ # "text": "*Failed Tests:*\n${{ steps.ios_tests.outputs.FAILED_FC_TESTS }}"
221+ # },
222+ # {
223+ # "type": "mrkdwn",
224+ # "text": "*Branch:*\n${{ github.ref_name }}"
225+ # },
226+ # {
227+ # "type": "mrkdwn",
228+ # "text": "*Commit:*\n${{ github.sha }}"
229+ # },
230+ # {
231+ # "type": "mrkdwn",
232+ # "text": "*Triggered by:*\n${{ github.event_name }}"
233+ # }
234+ # ]
235+ # },
236+ # {
237+ # "type": "actions",
238+ # "elements": [
239+ # {
240+ # "type": "button",
241+ # "text": {
242+ # "type": "plain_text",
243+ # "text": "View Build"
244+ # },
245+ # "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
246+ # }
247+ # ]
248+ # }
249+ # ]
250+ # }
251+
252+ # - name: Send Slack notification
253+ # if: ${{ failure() && github.event_name == 'schedule'}}
254+ # uses: slackapi/[email protected] 255+ # with:
256+ # webhook: ${{ secrets.SLACK_RUN_CHANNEL_WEBHOOK_URL }}
257+ # webhook-type: incoming-webhook
258+ # payload: |
259+ # "text": "*Nightly Build Failed* for e2e-ios-test ( ${{ matrix.react_arch }} )\nSee details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
260+
261+ # # Reporter jobs that provide the status checks branch protection expects
262+ # report-android-status:
263+ # name: e2e-android-test
264+ # runs-on: ubuntu-latest
265+ # needs: test-android
266+ # if: always()
267+ # strategy:
268+ # matrix:
269+ # react_arch: [old_arch, new_arch]
270+ # steps:
271+ # - name: Report status
272+ # run: |
273+ # if [[ "${{ needs.test-android.result }}" == "success" ]]; then
274+ # echo "All Android tests passed for ${{ matrix.react_arch }}"
275+ # exit 0
276+ # else
277+ # echo "Android tests failed for ${{ matrix.react_arch }}"
278+ # exit 1
279+ # fi
280+
281+ # report-ios-status:
282+ # name: e2e-ios-test
283+ # runs-on: ubuntu-latest
284+ # needs: test-ios
285+ # if: always()
286+ # strategy:
287+ # matrix:
288+ # react_arch: [old_arch, new_arch]
289+ # steps:
290+ # - name: Report status
291+ # run: |
292+ # if [[ "${{ needs.test-ios.result }}" == "success" ]]; then
293+ # echo "All iOS tests passed for ${{ matrix.react_arch }}"
294+ # exit 0
295+ # else
296+ # echo "iOS tests failed for ${{ matrix.react_arch }}"
297+ # exit 1
298+ # fi
0 commit comments