[Refactor] Create statemodel project and update dependencies #29
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: Ubuntu TESTAR Android CI tests | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
env: | |
ANDROID_ARCH: x86_64 | |
ANDROID_TARGET: google_apis_playstore | |
API_LEVEL: 33 | |
ANDROID_BUILD_TOOLS_VERSION: 33.0.2 | |
ANDROID_SDK_PACKAGES: system-images;android-33;google_apis_playstore;x86_64 platforms;android-33 build-tools;33.0.2 platform-tools emulator | |
EMULATOR_TIMEOUT: 350 | |
EMULATOR_NAME: nexus | |
jobs: | |
android: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
strategy: | |
matrix: | |
java: [ '17' ] | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Set up Java ${{ matrix.java }} | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'corretto' | |
java-version: ${{ matrix.java }} | |
# https://github.com/marketplace/actions/android-emulator-runner#running-hardware-accelerated-emulators-on-linux-runners | |
- name: Enable KVM group perms | |
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 | |
# https://github.com/amrsa1/android-emulator-workflow | |
- name: Add avdmanager and sdkmanager to system PATH | |
run: | | |
echo "$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/${{ env.ANDROID_BUILD_TOOLS_VERSION }}" >> $GITHUB_PATH | |
- name: Install SDK | |
run: | | |
yes Y | sdkmanager --licenses | |
sdkmanager --install ${ANDROID_SDK_PACKAGES} | |
- name: Verify Installed SDK Packages | |
run: sdkmanager --list | grep "system-images" | |
- name: Build emulator | |
run: | | |
echo "no" | avdmanager --verbose create avd --force -n $EMULATOR_NAME --abi "${ANDROID_TARGET}/${ANDROID_ARCH}" -k "system-images;android-${API_LEVEL};${ANDROID_TARGET};${ANDROID_ARCH}" | |
- name: List Available AVDs | |
run: avdmanager list avd | |
- name: Detect AVD Home | |
run: | | |
if [ -d "$HOME/.config/.android/avd" ]; then | |
export ANDROID_AVD_HOME="$HOME/.config/.android/avd" | |
else | |
export ANDROID_AVD_HOME="$HOME/.android/avd" | |
fi | |
echo "ANDROID_AVD_HOME=$ANDROID_AVD_HOME" >> $GITHUB_ENV | |
- name: Launch emulator | |
run: | | |
chmod +x ./.github/workflows/start_emu_headless.sh | |
EMULATOR_TIMEOUT=$EMULATOR_TIMEOUT EMULATOR_NAME=$EMULATOR_NAME ./.github/workflows/start_emu_headless.sh | |
# https://github.com/TESTARtool/TESTAR_dev/wiki/TESTAR-and-Appium-for-Mobile-Systems#installing-appium | |
- name: Install Appium | |
run: | | |
npm i -g appium@next | |
appium --version | |
appium driver install uiautomator2 | |
appium driver list --installed | |
- name: Start Appium Server | |
run: | | |
appium --relaxed-security --session-override --base-path /wd/hub & | |
- name: Test Appium Connection | |
run: | | |
MAX_WAIT=30 | |
INTERVAL=1 | |
echo "Waiting for Appium to be fully up and running..." | |
for i in $(seq 1 $MAX_WAIT); do | |
if [ "$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:4723/wd/hub/status)" -eq 200 ]; then | |
echo "Appium is up and running." | |
exit 0 | |
fi | |
sleep $INTERVAL | |
done | |
echo "Appium did not start within $MAX_WAIT seconds." | |
exit 1 | |
# Build and run TESTAR | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
- name: Prepare TESTAR protocols | |
run: ./gradlew init_workflow_test | |
- name: Build TESTAR with Gradle | |
run: ./gradlew build | |
- name: Prepare installed distribution of TESTAR with Gradle | |
run: ./gradlew installDist | |
- name: Run TESTAR android generic protocol | |
run: ./gradlew runTestAndroidGenericOk | |
- name: Save runTestAndroidGenericOk HTML report artifact | |
uses: actions/upload-artifact@v4 | |
# Only upload GitHub Actions results if this task fails (Can be replaced with 'if: always()') | |
#if: failure() | |
with: | |
name: Java${{ matrix.java }}-runTestAndroidGenericOk-artifact | |
path: D:/a/TESTAR_dev/TESTAR_dev/testar/target/install/testar/bin/android_ok | |
- name: Run TESTAR android generic protocol with suspicious message | |
run: ./gradlew runTestAndroidGenericSuspiciousTagStateModel | |
- name: Save runTestAndroidGenericSuspiciousTagStateModel HTML report artifact | |
uses: actions/upload-artifact@v4 | |
# Only upload GitHub Actions results if this task fails (Can be replaced with 'if: always()') | |
#if: failure() | |
with: | |
name: Java${{ matrix.java }}-runTestAndroidGenericSuspiciousTagStateModel-artifact | |
path: D:/a/TESTAR_dev/TESTAR_dev/testar/target/install/testar/bin/android_suspicious |