Docker - Android App Tests #54
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: Docker Android Tests Workflow | |
env: | |
TAGS: "android_mobile_tests" | |
PROJECT_LOCATION: ${{ github.workspace }} | |
on: | |
schedule: | |
- cron: '0 0 * * *' | |
workflow_dispatch: | |
inputs: | |
tags: | |
description: Gherkin Tags | |
required: true | |
default: android_mobile_tests | |
jobs: | |
scheduled-regression: | |
if: github.event_name == 'schedule' | |
name: Schedule Android - Regression | |
runs-on: macos-latest | |
steps: | |
- name: Setup Python | |
id: setup_python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Check out code | |
id: co_code | |
if: steps.setup_python.outcome == 'success' | |
uses: actions/checkout@v4 | |
- name: Install and Run Appium Server | |
id: setup_appium | |
if: steps.setup_java.outcome == 'success' | |
run: | | |
npm install -g appium | |
- name: Install uiautomator2 driver | |
id: install_driver | |
if: steps.setup_appium.outcome == 'success' | |
run: | | |
appium driver install uiautomator2 | |
appium --log-level debug & | |
sleep 10 | |
appium -v | |
- name: Run Android Emulator | |
id: run_emulator | |
uses: ReactiveCircus/android-emulator-runner@v2 | |
with: | |
api-level: 30 | |
force-avd-creation: false | |
emulator-options: -no-snapshot-save -no-window -grpc-use-jwt -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
target: default | |
arch: x86_64 | |
script: echo "Generated AVD" | |
- name: Run Android Emulator Again | |
id: run_emulator_again | |
if: steps.run_emulator.outcome == 'success' | |
run: | | |
echo "Running Emulator Again" | |
cd ~/Library/Android/sdk/emulator | |
sleep 5 | |
./emulator -list-avds | |
sleep 5 | |
./emulator -avd test -no-snapshot-save -no-window -grpc-use-jwt -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
- name: Setup dependencies | |
id: setup_dependencies | |
if: steps.run_emulator_again.outcome == 'success' | |
run: | | |
sh setup_install.sh | |
- name: Run Tests | |
id: run_manual_job | |
if: steps.setup_dependencies.outcome == 'success' | |
run: | | |
TAGS="${{ github.event.inputs.tags }}" | |
env | |
source $HOME/.bp-venv/bin/activate | |
python -m pytest -v --driver Appium --selenium-host 'localhost' --selenium-port '4723' \ | |
--variables './env_configs/android_mobile_docker.json' \ | |
--tags="$TAGS" \ | |
--html=report.html \ | |
--self-contained-html \ | |
- name: Upload HTML run report in the Artifacts Folder | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pytest-results | |
path: | | |
./*.html | |
./output/ | |
./assets/ | |
if: ${{ always() }} | |
docker-manual-android-run: | |
if: github.event_name != 'schedule' | |
name: Manual - ${{ inputs.tags }} | |
runs-on: macos-latest | |
steps: | |
- name: Validate Input Parameter | |
id: validate_input | |
run: | | |
if [[ -z "${{ github.event.inputs.tags }}" ]]; then | |
echo "Invalid input: 'tags' is required but not provided." | |
exit 1 | |
fi | |
- name: Setup Python | |
id: setup_python | |
if: steps.validate_input.outcome == 'success' | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Install and Run Appium Server | |
id: setup_appium | |
if: steps.setup_python.outcome == 'success' | |
run: | | |
npm install -g appium | |
- name: Install uiautomator2 driver | |
id: install_driver | |
if: steps.setup_appium.outcome == 'success' | |
run: | | |
appium driver install uiautomator2 | |
appium --log-level debug & | |
sleep 10 | |
appium -v | |
# - name: Android Emulator Runner Without SDK Setup | |
# uses: RandyLutcavich/[email protected] | |
# - name: Run Android Emulator Again | |
# id: run_emulator_again | |
# if: steps.run_emulator.outcome == 'success' | |
# run: | | |
# echo "Running Emulator Again" | |
# cd ~/Library/Android/sdk/emulator | |
# sleep 5 | |
# ./emulator -list-avds | |
# sleep 5 | |
# ./emulator -avd test -no-snapshot-save -no-window -grpc-use-jwt -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
- name: Check out code | |
id: co_code | |
if: steps.run_emulator_again.outcome == 'success' | |
uses: actions/checkout@v4 | |
- name: Setup dependencies | |
id: setup_dependencies | |
if: steps.co_code.outcome == 'success' | |
run: | | |
sh setup_install.sh | |
- name: Run Android Emulator with tests | |
id: run_emulator | |
if: steps.setup_appium.outcome == 'success' | |
uses: ReactiveCircus/android-emulator-runner@v2 | |
with: | |
api-level: 30 | |
force-avd-creation: false | |
emulator-options: -no-snapshot-save -no-window -grpc-use-jwt -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
target: default | |
arch: x86_64 | |
script: python -m pytest -v --driver Appium --selenium-host 'localhost' --selenium-port '4723' \ | |
--variables './env_configs/android_mobile_docker.json' \ | |
--tags="$TAGS" \ | |
--html=report.html \ | |
--self-contained-html \ | |
# - name: Run Tests | |
# id: run_manual_job | |
# if: steps.setup_dependencies.outcome == 'success' | |
# run: | | |
# TAGS="${{ github.event.inputs.tags }}" | |
# env | |
# source $HOME/.bp-venv/bin/activate | |
# python -m pytest -v --driver Appium --selenium-host 'localhost' --selenium-port '4723' \ | |
# --variables './env_configs/android_mobile_docker.json' \ | |
# --tags="$TAGS" \ | |
# --html=report.html \ | |
# --self-contained-html \ | |
- name: Upload HTML run report in the Artifacts Folder | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pytest-results | |
path: | | |
./*.html | |
./output/ | |
./assets/ | |
if: ${{ always() }} |