Add Card Brand Filtering to React Native #1627
Workflow file for this run
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: RN Stripe | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: ['**'] | |
jobs: | |
test-android: | |
name: e2e-android-test | |
runs-on: ubuntu-24.04 | |
env: | |
MAESTRO_CLI_ANALYSIS_NOTIFICATION_DISABLED: true | |
steps: | |
- name: Delete unnecessary tools 🔧 | |
uses: jlumbroso/free-disk-space@v1.3.1 | |
with: | |
android: false # Don't remove Android tools | |
tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY" | |
dotnet: true # rm -rf /usr/share/dotnet | |
haskell: true # rm -rf /opt/ghc... | |
swap-storage: true # rm -f /mnt/swapfile (4GiB) | |
docker-images: false # Takes 16s, enable if needed in the future | |
large-packages: false # includes google-cloud-sdk and it's slow | |
# Enable KVM to be able to use hardware accelerated emulators. | |
# https://github.com/ReactiveCircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners | |
- name: Enable KVM group perms | |
run: | | |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
sudo udevadm control --reload-rules | |
sudo udevadm trigger --name-match=kvm | |
ls /dev/kvm | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "::set-output name=dir::$(yarn cache dir)" | |
- uses: actions/cache@v4 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install React Native CLI | |
run: npm install react-native-cli | |
- name: Install Dependencies | |
run: yarn bootstrap-no-pods | |
- name: Setup Java environment | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- name: Gradle cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/buildSrc/**/*.kt') }} | |
- name: Install Maestro CLI | |
run: curl -Ls "https://get.maestro.mobile.dev" | bash | |
- name: Add Maestro to path | |
run: echo "${HOME}/.maestro/bin" >> $GITHUB_PATH | |
- name: Run Android Emulator and app | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 33 | |
# This build is the most stable for API 33. Others appear to have a significant amount of ColorBuffer emulator errors. | |
# While those errors don't affect the test outcome, best to be on the most stable build. | |
emulator-build: 11237101 | |
arch: x86_64 | |
target: google_apis | |
force-avd-creation: false | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
script: | | |
# Wait for system to settle | |
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done' | |
# Retry once if necessary | |
yarn run-example-android:release || (sleep 60 && yarn run-example-android:release) | |
yarn test:e2e:android | |
- name: Upload test artifacts | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: maestro-artifacts-android | |
path: /Users/runner/.maestro/tests/** | |
test-ios: | |
name: e2e-ios-test | |
# Silicon chips run through the iOS tests much faster | |
runs-on: macos-15-xlarge | |
env: | |
MAESTRO_DRIVER_STARTUP_TIMEOUT: 300_000 # 5 minutes | |
MAESTRO_CLI_ANALYSIS_NOTIFICATION_DISABLED: true | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "::set-output name=dir::$(yarn cache dir)" | |
- uses: actions/cache@v4 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('example/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- uses: actions/cache@v4 | |
with: | |
path: example/ios/Pods | |
key: ${{ runner.os }}-pods-${{ hashFiles('example/ios/Podfile.lock') }} | |
restore-keys: | | |
${{ runner.os }}-pods- | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install React Native CLI | |
run: npm install react-native-cli | |
- name: Install Dependencies | |
run: yarn bootstrap-no-pods | |
- name: Generate bundle | |
run: yarn example build:ios | |
- name: Install Pods | |
run: yarn pods | |
- name: Install Maestro CLI | |
run: | | |
curl -Ls "https://get.maestro.mobile.dev" | bash | |
brew tap facebook/fb | |
brew install facebook/fb/idb-companion | |
- name: Add Maestro to path | |
run: echo "${HOME}/.maestro/bin" >> $GITHUB_PATH | |
- name: Build iOS App | |
run: | | |
yarn run-example-ios:release | |
- name: Run tests | |
run: | | |
yarn test:e2e:ios | |
- name: Upload test artifacts | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: maestro-artifacts-ios | |
path: /Users/runner/.maestro/tests/** |