Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: E2E

on:
push:
branches:
- main
- master
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true # auto cancel prev. run

env:
MAESTRO_VERSION: 1.31.0
ANDROID_ARCH: x86_64

jobs:
android-e2e:
name: E2e Tests 🧪
runs-on: macos-12 # or buildjet-4vcpu-ubuntu-2204, ubuntu-22.04-4core, macos-12-xl
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3

- name: Installing Maestro 📥
run: curl -Ls "https://get.maestro.mobile.dev" | bash # will use `MAESTRO_VERSION` from env

# - name: Validate Gradle Wrapper 📝
# uses: gradle/wrapper-validation-action@v1
#
# - name: Copy CI gradle.properties 📋
# run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
#
# - name: Set up JDK 17 ⚙️
# uses: actions/setup-java@v3
# with:
# distribution: 'zulu'
# java-version: 17
#
# - name: Setup Gradle ⚙️
# uses: gradle/gradle-build-action@v2

- name: Setup environment ⚙️
env:
ENV_VAR_FILE_NAME: debug.properties
run: |
echo 'API_BASE_URL="https://api.staging.crisiscleanup.io"' >> ${{ env.ENV_VAR_FILE_NAME }}
echo 'BASE_URL="http://localhost:8080"' >> ${{ env.ENV_VAR_FILE_NAME }}
echo 'MAPS_API_KEY="${{ secrets.MAPS_API_KEY }}"' >> ${{ env.ENV_VAR_FILE_NAME }}
echo 'DEBUG_EMAIL_ADDRESS="${{ secrets.TEST_APP_EMAIL_PROD }}"' >> ${{ env.ENV_VAR_FILE_NAME }}
echo 'DEBUG_ACCOUNT_PASSWORD="${{ secrets.TEST_APP_PASSWORD_PROD }}"' >> ${{ env.ENV_VAR_FILE_NAME }}

# - name: Build apk for emulator 🏗️
# run: |
# ./gradlew assembleDebug --no-daemon -PreactNativeArchitectures=${{ env.ANDROID_ARCH }}
#
# echo "Print path to *.apk file"
# find . -type f -name "*.apk"

# - name: Upload build outputs (APKs) 📤
# uses: actions/upload-artifact@v3
# with:
# name: apks
# path: '**/build/outputs/apk/**/*.apk'

- name: Download APK
run: |
echo "Downloading debug app apk..."
curl 'https://s3.amazonaws.com/app.dev.crisiscleanup.io/app-demo-debug.apk' -o ./app/app-demo-debug.apk

- name: Run E2e tests 🧪
uses: reactivecircus/android-emulator-runner@v2
env:
# APK_PATH: ./app/build/outputs/apk/demo/debug/app-demo-debug.apk
APK_PATH: ./app/app-demo-debug.apk
MAESTRO_DRIVER_STARTUP_TIMEOUT: 120000
MAESTRO_APP_ID: com.crisiscleanup.demo.debug
MAESTRO_APP_EMAIL: ${{ secrets.TEST_APP_EMAIL_PROD }}
MAESTRO_APP_PASSWORD: ${{ secrets.TEST_APP_PASSWORD_PROD }}
with:
api-level: 33
target: google_apis
arch: ${{ env.ANDROID_ARCH }}
script: |
adb install "${{ env.APK_PATH }}"
$HOME/.maestro/bin/maestro test .maestro/auth-tests --format junit
$HOME/.maestro/bin/maestro test .maestro/work-tests --format junit

- name: Upload test results 📤
if: always()
uses: actions/upload-artifact@v3
with:
name: e2e_android_report
path: |
/Users/runner/.maestro/tests
11 changes: 11 additions & 0 deletions .maestro/work-tests/incident-search-and-select.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,21 @@ tags:
- pull-request
env:
SEARCH_QUERY: '11'
INCIDENT_REGEX: ".*(flood|tornado).*"
onFlowStart:
- runFlow: ../auth-tests/login.yaml
---
# wait for incidents to load
- waitForAnimationToEnd:
timeout: 5000
# Pick a random incident from incident selector
- tapOn:
id: "workIncidentSelectorFab"
- scrollUntilVisible:
element: ${INCIDENT_REGEX}
- tapOn:
text: ${INCIDENT_REGEX}
index: 0
- waitForAnimationToEnd:
timeout: 5000
# start searching after loading spinner is invisible
Expand Down