Skip to content

Maestro QA

Maestro QA #183

Workflow file for this run

# SPDX-FileCopyrightText: 2024 Foundation Devices, Inc. <hello@foundation.xyz>
# SPDX-License-Identifier: GPL-3.0-or-later
name: Maestro QA
on:
workflow_dispatch:
inputs:
platform:
description: 'Platform to run tests on'
required: true
default: 'android'
type: choice
options:
- android
- ios
- both
schedule:
- cron: '0 1 * * *' # Run daily at 1 AM UTC (after Beef QA)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
maestro-qa-android:
if: ${{ github.event_name == 'schedule' || github.event.inputs.platform == 'android' || github.event.inputs.platform == 'both' }}
runs-on: [ self-hosted, macOS, ARM64 ]
steps:
- uses: extractions/setup-just@v1
- uses: actions/checkout@v4
- name: Check connected Android device
run: |
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
echo "Checking for connected Android devices..."
adb devices
DEVICE_COUNT=$(adb devices | grep -w "device" | wc -l)
if [ "$DEVICE_COUNT" -eq 0 ]; then
echo "Error: No Android device connected"
exit 1
fi
echo "Found $DEVICE_COUNT device(s)"
- name: Run Maestro Android Tests (builds and installs APK)
run: just maestroqa
- name: Upload failure videos
if: always()
uses: actions/upload-artifact@v4
with:
name: maestro-failure-videos
path: fail-videos/
if-no-files-found: ignore
retention-days: 14
maestro-qa-ios:
if: ${{ github.event.inputs.platform == 'ios' || github.event.inputs.platform == 'both' }}
runs-on: [ self-hosted, macOS, ARM64 ]
steps:
- uses: extractions/setup-just@v1
- uses: actions/checkout@v4
- name: Run Maestro iOS Tests (builds and installs app)
run: just maestroqaios