chore: is this also needed #436
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: E2E | |
on: | |
pull_request: | |
branches: [main] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
e2e-android: | |
name: Android | |
runs-on: self-hosted | |
steps: | |
- uses: actions/checkout@v2 | |
# In case this is run on a runner without nix | |
# - uses: DeterminateSystems/nix-installer-action@main | |
- uses: DeterminateSystems/magic-nix-cache-action@v2 | |
# Caching | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
node_modules | |
ios/Pods | |
key: ${{ runner.os }}-deps-${{ hashFiles('**/yarn.lock', '**/Podfile.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
# Installations | |
- name: Install Node Modules and Pods | |
run: nix develop -c yarn install | |
env: | |
LANG: en_US.UTF-8 | |
# Metro | |
- name: Start Metro | |
run: | | |
nix develop -c sh -c 'yarn start' & | |
echo "METRO_PID=$!" >> $GITHUB_ENV | |
# Builds | |
- run: nix develop -c yarn e2e:build android.emu.debug | |
# Start Tilt | |
- name: Tilt CI | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 10 | |
retry_wait_seconds: 45 | |
command: nix develop -c sh -c 'cd dev && tilt ci' | |
- name: Tilt Server | |
run: | | |
lsof -ti:10350 | xargs kill -9 || true | |
nix develop -c sh -c 'cd dev && tilt up' & | |
echo "TILT_SERVER_PID=$!" >> $GITHUB_ENV | |
# Tests on Android Emulator | |
- name: Start Android Emulator | |
run: | | |
nix develop -c sh -c 'emulator -avd Pixel_API_34 -gpu swiftshader -wipe-data -no-boot-anim' & | |
nix develop -c adb wait-for-device | |
nix develop -c sh -c 'adb shell screenrecord --bit-rate 4000000 --time-limit 99999999 /sdcard/screenRecord.mp4' & | |
echo "EMU_RECORD=$!" >> $GITHUB_ENV | |
- name: Run Detox Tests on Android Emulator | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 15 | |
retry_wait_seconds: 1 | |
max_attempts: 3 | |
command: | | |
rm -rf android-recordings || true | |
nix develop -c tilt trigger dev-setup | |
nix develop -c tilt wait --timeout 5m --for=condition=Ready uiresources dev-setup | |
nix develop -c yarn e2e:test android.emu.debug -d --take-screenshots all --record-videos all --record-logs all --artifacts-location android-recordings | |
- name: Kill Android Emulator | |
if: always() | |
continue-on-error: true | |
run: | | |
kill -SIGINT $EMU_RECORD | |
nix develop -c adb pull /sdcard/screenRecord.mp4 ./screenRecordUnopt.mp4 | |
ffmpeg -i screenRecordUnopt.mp4 screenRecord.mp4 | |
nix develop -c adb emu kill | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: android-recordings | |
path: android-recordings | |
# Upload recordings to GCS bucket | |
- uses: "google-github-actions/auth@v2" | |
if: always() | |
with: | |
credentials_json: "${{ secrets.BUILD_ARTIFACTS_BUCKET_KEY }}" | |
- uses: "google-github-actions/upload-cloud-storage@v2" | |
if: always() | |
with: | |
path: screenRecord.mp4 | |
gzip: false | |
predefinedAcl: publicRead | |
headers: |- | |
content-type: video/mp4 | |
destination: galoy-mobile-recordings/android-recordings/${{ github.run_id }} | |
- name: Append Direct Links to GitHub Actions Summary | |
if: always() | |
run: | | |
echo "## Android Recording" > $GITHUB_STEP_SUMMARY | |
COMPLETE_RECORDING_URL="https://storage.googleapis.com/galoy-mobile-recordings/android-recordings/${{ github.run_id }}/screenRecord.mp4" | |
echo "Full Recording: [Click here](<$COMPLETE_RECORDING_URL>)" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "Test Suite:" >> $GITHUB_STEP_SUMMARY | |
find android-recordings -type f -name "*.mp4" | while read file; do | |
RELATIVE_PATH="${file#android-recordings/}" | |
FILE_URL="${BASE_URL}/${RELATIVE_PATH}" | |
TEST_NAME=$(echo "$RELATIVE_PATH" | sed -E 's|.*/(.*)/test\.mp4|\1|') | |
echo "- $TEST_NAME" >> $GITHUB_STEP_SUMMARY | |
done | |
# Cleanup | |
- name: Terminate Metro | |
if: always() | |
continue-on-error: true | |
run: kill $METRO_PID | |
- name: Cleanup | |
if: always() | |
continue-on-error: true | |
run: | | |
kill $METRO_PID || true | |
kill $TILT_SERVER_PID || true | |
nix develop -c sh -c 'cd dev && tilt down' || true | |
docker rm -f $(docker ps -aq) || true | |
lsof -ti:10350,8080,8081 | xargs kill -9 || true | |
e2e-ios: | |
name: iOS | |
runs-on: self-hosted | |
steps: | |
- uses: actions/checkout@v2 | |
# In case this is run on a runner without nix | |
# - uses: DeterminateSystems/nix-installer-action@main | |
- uses: DeterminateSystems/magic-nix-cache-action@v2 | |
# Caching | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
node_modules | |
ios/Pods | |
key: ${{ runner.os }}-deps-${{ hashFiles('**/yarn.lock', '**/Podfile.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
# Installations | |
- name: Install Node Modules and Pods | |
run: nix develop -c yarn install | |
env: | |
LANG: en_US.UTF-8 | |
# Metro | |
- name: Start Metro | |
run: | | |
nix develop -c sh -c 'yarn start' & | |
echo "METRO_PID=$!" >> $GITHUB_ENV | |
# Builds | |
- run: nix develop -c yarn e2e:build ios.sim.debug | |
# Start Tilt | |
- name: Tilt CI | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 10 | |
retry_wait_seconds: 45 | |
command: nix develop -c sh -c 'cd dev && tilt ci' | |
- name: Tilt Server | |
run: | | |
lsof -ti:10350 | xargs kill -9 || true | |
nix develop -c sh -c 'cd dev && tilt up' & | |
echo "TILT_SERVER_PID=$!" >> $GITHUB_ENV | |
- name: Record Simulator in Background | |
run: | | |
DEVICE_ID=$(xcrun simctl list devices | grep "iPhone SE (3rd generation)" | cut -d' ' -f9 | tr -d '()') | |
open -a Simulator --args -CurrentDeviceUDID $DEVICE_ID | |
while ! xcrun simctl list devices | grep "(Booted)"; do | |
sleep 1 | |
echo "Waiting for Simulator device to come online..." | |
done | |
xcrun simctl io booted recordVideo screenRecord.mov & | |
echo "SIM_RECORD=$!" >> $GITHUB_ENV | |
# Tests on iOS Simulator | |
- name: Run Detox Tests on iOS Simulator | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 15 | |
retry_wait_seconds: 1 | |
max_attempts: 3 | |
command: | | |
rm -rf ios-recordings || true | |
nix develop -c tilt trigger dev-setup | |
nix develop -c tilt wait --timeout 5m --for=condition=Ready uiresources dev-setup | |
nix develop -c yarn e2e:test ios.sim.debug -d -R 5 --take-screenshots all --record-videos all --record-logs all --artifacts-location ios-recordings | |
- name: Stop Recording | |
if: always() | |
continue-on-error: true | |
run: | | |
kill -SIGINT $SIM_RECORD | |
ffmpeg -i screenRecord.mov screenRecord.mp4 | |
- run: killall Simulator | |
if: always() | |
continue-on-error: true | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: ios-recordings | |
path: ios-recordings | |
# Upload recording to GCS bucket | |
- uses: "google-github-actions/auth@v2" | |
if: always() | |
with: | |
credentials_json: "${{ secrets.BUILD_ARTIFACTS_BUCKET_KEY }}" | |
- uses: "google-github-actions/upload-cloud-storage@v2" | |
if: always() | |
with: | |
path: screenRecord.mp4 | |
gzip: false | |
predefinedAcl: publicRead | |
headers: |- | |
content-type: video/mp4 | |
destination: galoy-mobile-recordings/ios-recordings/${{ github.run_id }} | |
- name: Append Direct Links to GitHub Actions Summary | |
if: always() | |
run: | | |
echo "## iOS Recording" > $GITHUB_STEP_SUMMARY | |
COMPLETE_RECORDING_URL="https://storage.googleapis.com/galoy-mobile-recordings/ios-recordings/${{ github.run_id }}/screenRecord.mp4" | |
echo "Full Recording: [Click here](<$COMPLETE_RECORDING_URL>)" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "Test Suite:" >> $GITHUB_STEP_SUMMARY | |
find ios-recordings -type f -name "*.mp4" | while read file; do | |
RELATIVE_PATH="${file#ios-recordings/}" | |
FILE_URL="${BASE_URL}/${RELATIVE_PATH}" | |
TEST_NAME=$(echo "$RELATIVE_PATH" | sed -E 's|.*/(.*)/test\.mp4|\1|') | |
echo "- $TEST_NAME" >> $GITHUB_STEP_SUMMARY | |
done | |
# Cleanup | |
- name: Cleanup | |
if: always() | |
continue-on-error: true | |
run: | | |
kill $METRO_PID || true | |
kill $TILT_SERVER_PID || true | |
nix develop -c sh -c 'cd dev && tilt down' || true | |
docker rm -f $(docker ps -aq) || true | |
lsof -ti:10350,8080,8081 | xargs kill -9 || true |