NewsReader.UITestAndroid #134
This file contains hidden or 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: NewsReader.UITestAndroid | |
| on: | |
| workflow_run: | |
| workflows: ["NewsReader.CI"] | |
| types: | |
| - completed | |
| workflow_dispatch: | |
| jobs: | |
| UITest: | |
| if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 🔖 Check-out | |
| uses: actions/checkout@v4 | |
| - name: 📜 Authenticate GitHub CLI | |
| run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token | |
| - name: ⚙️ Get latest successful run ID | |
| id: get_run | |
| run: | | |
| RUN_ID=$(gh run list \ | |
| --workflow="NewsReader.CI.yml" \ | |
| --branch=master \ | |
| --json databaseId,status,conclusion \ | |
| --jq '.[] | select(.conclusion=="success") | .databaseId' \ | |
| | head -n 1) | |
| echo "run_id=$RUN_ID" >> $GITHUB_OUTPUT | |
| echo "run_id=$RUN_ID" | |
| - name: 📦 Download APK | |
| run: | | |
| gh run download ${{ steps.get_run.outputs.run_id }} --name="NewsReaderAndroid" --dir=./NewsReaderAndroid | |
| - name: ⚙️ Enable KVM | |
| 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 | |
| - name: ⚙️ Start Android Emulator | |
| run: | | |
| export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH" | |
| echo "Installing system image" | |
| echo "y" | sdkmanager "system-images;android-35;google_apis;x86_64" | |
| echo "Setting ANDROID_AVD_HOME" | |
| export ANDROID_AVD_HOME=$HOME/.config/.android/avd | |
| echo "Creating AVD" | |
| echo "no" | avdmanager create avd -n test_emulator -k "system-images;android-35;google_apis;x86_64" --device "pixel_7" --force | |
| echo "Starting emulator" | |
| emulator -avd test_emulator -no-audio -no-boot-anim -no-window -no-snapshot & | |
| - name: ⚙️ Install Appium Server | |
| run: | | |
| npm install appium -g | |
| appium driver install uiautomator2 | |
| appium --version | |
| - name: ⚙️ Start Appium Server | |
| run: | | |
| mkdir -p $GITHUB_WORKSPACE/out/NewsReader.UITest | |
| appium > $GITHUB_WORKSPACE/out/NewsReader.UITest/appium.log 2>&1 & | |
| - name: ⚙️ Wait for Android Emulator to complete booting | |
| run: | | |
| export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH" | |
| adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 5; done; input keyevent 82' | |
| - name: 🖥️ UI Test | |
| run: | | |
| echo "## 🕵️ Test Results - NewsReader.UITest.sln" >> $Env:GITHUB_STEP_SUMMARY | |
| dotnet test ./src/NewsReader.UITest/NewsReader.UITest.sln --filter DevicePlatform=Android --logger GitHubActions -e UITestApkFile=NewsReaderAndroid/src/NewsReader/NewsReader.MauiSystem/bin/Release/net9.0-android/publish/Waf.NewsReader-Signed.apk | |
| - name: 📦 Upload UI Test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: NewsReaderUITestResults | |
| if-no-files-found: ignore | |
| path: | | |
| out/NewsReader.UITest/ |