test: recording integration tests (#857) #2622
This file contains 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
name: React Native Dogfood Release | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_APP_DISTRIBUTION_TOKEN }} | |
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }} | |
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }} | |
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }} | |
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }} | |
SENTRY_RN_AUTH_TOKEN: ${{ secrets.SENTRY_RN_AUTH_TOKEN }} | |
STREAM_API_KEY: ${{ vars.STREAM_DOGFOOD_API_KEY }} | |
STREAM_API_SECRET: ${{ secrets.STREAM_DOGFOOD_API_SECRET }} | |
STREAM_SDK_TEST_APP: ${{ secrets.STREAM_SDK_TEST_APP }} | |
STREAM_SDK_TEST_ACCOUNT_EMAIL: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_EMAIL }} | |
STREAM_SDK_TEST_ACCOUNT_PASSWORD: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_PASSWORD }} | |
STREAM_SDK_TEST_ACCOUNT_OTP_SECRET: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_OTP_SECRET }} | |
on: | |
push: | |
paths: | |
- '.github/workflows/react-native-workflow.yml' | |
- 'sample-apps/react-native/dogfood/**' | |
- 'packages/client/**' | |
- 'packages/react-bindings/**' | |
- 'packages/react-native-sdk/**' | |
- '!**/docusaurus/**' | |
workflow_dispatch: | |
concurrency: | |
group: react-native-workflow-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
code_review: | |
name: Code Review | |
timeout-minutes: 20 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
env: | |
INSTALL_NODE: true | |
INSTALL_RN_DEPENDENCIES: true | |
- name: Lint source code | |
working-directory: sample-apps/react-native/dogfood | |
run: yarn lint:ci | |
- name: Lint fastlane | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane rubocop | |
build_ios: | |
name: Build iOS | |
timeout-minutes: 60 | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 20 | |
env: | |
INSTALL_NODE: true | |
INSTALL_PODS: true | |
INSTALL_RN_DEPENDENCIES: true | |
INSTALL_IOS_PERMISSIONS: true | |
- name: Test RN SDK | |
run: yarn test:react-native:sdk | |
- name: Build | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane build_ios | |
- name: Upload .ipa | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ipa | |
path: | | |
**/dogfood/dist/*.ipa | |
**/dogfood/dist/*.zip | |
test_ios: | |
name: Test iOS | |
needs: build_ios | |
timeout-minutes: 100 | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 20 | |
env: | |
INSTALL_NODE: true | |
INSTALL_PODS: true | |
INSTALL_PYTHON: true | |
INSTALL_MAESTRO: true | |
INSTALL_VIDEO_BUDDY: true | |
INSTALL_RN_DEPENDENCIES: true | |
INSTALL_IOS_PERMISSIONS: true | |
- name: Test | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane test_ios | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: iOS Test Data | |
path: | | |
**/fastlane/recordings | |
**/fastlane/video-buddy-log.txt | |
~/.maestro/tests | |
deploy_ios: | |
name: Deploy iOS | |
needs: test_ios | |
timeout-minutes: 60 | |
if: ${{ github.ref == 'refs/heads/main' }} | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
- name: Download .ipa | |
uses: actions/download-artifact@v3 | |
with: | |
name: ipa | |
- name: Deploy | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane deploy_ios | |
build_android: | |
name: Build Android | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
env: | |
INSTALL_NODE: true | |
INSTALL_JAVA: true | |
INSTALL_RN_DEPENDENCIES: true | |
- name: Test RN SDK | |
run: yarn test:react-native:sdk | |
- name: Build | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane build_android | |
- name: Upload .apk | |
uses: actions/upload-artifact@v3 | |
with: | |
name: apk | |
path: '**/dist/*.apk' | |
test_android: | |
name: Test Android | |
needs: build_android | |
timeout-minutes: 100 | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
env: | |
INSTALL_NODE: true | |
INSTALL_FFMPEG: true | |
INSTALL_MAESTRO: true | |
INSTALL_VIDEO_BUDDY: true | |
INSTALL_ANDROID_EMULATOR: true | |
- name: Download .apk | |
uses: actions/download-artifact@v3 | |
with: | |
name: apk | |
- name: Create AVD Snapshot | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 28 | |
arch: x86_64 | |
target: google_apis | |
profile: pixel_5 | |
disable-animations: false | |
force-avd-creation: false | |
avd-name: test | |
ram-size: 8192M | |
disk-size: 2048M | |
emulator-boot-timeout: 1000 | |
emulator-options: -no-window -no-boot-anim -no-audio -no-snapshot-load -gpu swiftshader_indirect | |
working-directory: sample-apps/react-native/dogfood | |
script: echo 'AVD snapshot is generated and will be cached for the future runs.' | |
- name: Test | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 28 | |
arch: x86_64 | |
target: google_apis | |
profile: pixel_5 | |
disable-animations: true | |
force-avd-creation: false | |
avd-name: test | |
ram-size: 8192M | |
disk-size: 2048M | |
emulator-boot-timeout: 1000 | |
emulator-options: -no-window -no-boot-anim -no-audio -no-snapshot-load -gpu swiftshader_indirect | |
working-directory: sample-apps/react-native/dogfood | |
script: bundle exec fastlane test_android | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: Android Test Data | |
path: | | |
**/fastlane/recordings | |
**/fastlane/video-buddy-log.txt | |
~/.maestro/tests | |
deploy_android: | |
name: Deploy Android | |
needs: test_android | |
timeout-minutes: 60 | |
if: ${{ github.ref == 'refs/heads/main' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
- name: Download .apk | |
uses: actions/download-artifact@v3 | |
with: | |
name: apk | |
- name: Deploy | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane deploy_android |