chore: build wda for specific device on CI #1764
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: Appium Java Client CI | |
on: | |
push: | |
branches: | |
- master | |
paths-ignore: | |
- 'docs/**' | |
- '*.md' | |
pull_request: | |
branches: | |
- master | |
paths-ignore: | |
- 'docs/**' | |
- '*.md' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
ANDROID_SDK_VERSION: "28" | |
ANDROID_EMU_NAME: test | |
ANDROID_EMU_TARGET: default | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md | |
XCODE_VERSION: "15.4" | |
IOS_DEVICE_NAME: iPhone 15 | |
IOS_PLATFORM_VERSION: "17.5" | |
FLUTTER_ANDROID_APP: "https://github.com/AppiumTestDistribution/appium-flutter-server/releases/latest/download/app-debug.apk" | |
FLUTTER_IOS_APP: "https://github.com/AppiumTestDistribution/appium-flutter-server/releases/latest/download/ios.zip" | |
jobs: | |
build: | |
strategy: | |
matrix: | |
include: | |
- java: 11 | |
# Need to use specific (not `-latest`) version of macOS to be sure the required version of Xcode/simulator is available | |
platform: macos-14 | |
e2e-tests: ios | |
- java: 17 | |
# Need to use specific (not `-latest`) version of macOS to be sure the required version of Xcode/simulator is available | |
platform: macos-14 | |
e2e-tests: flutter-ios | |
- java: 17 | |
platform: ubuntu-latest | |
e2e-tests: android | |
- java: 17 | |
platform: ubuntu-latest | |
e2e-tests: flutter-android | |
- java: 21 | |
platform: ubuntu-latest | |
fail-fast: false | |
runs-on: ${{ matrix.platform }} | |
name: JDK ${{ matrix.java }} - ${{ matrix.platform }} ${{ matrix.e2e-tests }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Enable KVM group perms | |
if: matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android' | |
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: Set up JDK ${{ matrix.java }} | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: ${{ matrix.java }} | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
- name: Build with Gradle | |
run: | | |
latest_snapshot=$(curl -sf https://oss.sonatype.org/content/repositories/snapshots/org/seleniumhq/selenium/selenium-api/ | \ | |
python -c "import sys,re; print(re.findall(r'\d+\.\d+\.\d+-SNAPSHOT', sys.stdin.read())[-1])") | |
echo ">>> $latest_snapshot" | |
echo "latest_snapshot=$latest_snapshot" >> "$GITHUB_ENV" | |
./gradlew clean build -PisCI -Pselenium.version=$latest_snapshot | |
- name: Install Node.js | |
if: ${{ matrix.e2e-tests }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 'lts/*' | |
- name: Install Appium | |
if: ${{ matrix.e2e-tests }} | |
run: npm install --location=global appium | |
- name: Install UIA2 driver | |
if: matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android' | |
run: appium driver install uiautomator2 | |
- name: Install Flutter Integration driver | |
if: matrix.e2e-tests == 'flutter-android' || matrix.e2e-tests == 'flutter-ios' | |
run: appium driver install appium-flutter-integration-driver --source npm | |
- name: Run Android E2E tests | |
if: matrix.e2e-tests == 'android' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
script: ./gradlew e2eAndroidTest -PisCI -Pselenium.version=$latest_snapshot | |
api-level: ${{ env.ANDROID_SDK_VERSION }} | |
avd-name: ${{ env.ANDROID_EMU_NAME }} | |
disable-spellchecker: true | |
disable-animations: true | |
target: ${{ env.ANDROID_EMU_TARGET }} | |
- name: Run Flutter Android E2E tests | |
if: matrix.e2e-tests == 'flutter-android' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
script: ./gradlew e2eFlutterTest -Pplatform="android" -Pselenium.version=$latest_snapshot -PisCI -PflutterApp=${{ env.FLUTTER_ANDROID_APP }} | |
api-level: ${{ env.ANDROID_SDK_VERSION }} | |
avd-name: ${{ env.ANDROID_EMU_NAME }} | |
disable-spellchecker: true | |
disable-animations: true | |
target: ${{ env.ANDROID_EMU_TARGET }} | |
- name: Select Xcode | |
if: matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios' | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: "${{ env.XCODE_VERSION }}" | |
- name: Prepare iOS simulator | |
if: matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios' | |
uses: futureware-tech/simulator-action@v3 | |
with: | |
model: "${{ env.IOS_DEVICE_NAME }}" | |
os_version: "${{ env.IOS_PLATFORM_VERSION }}" | |
- name: Install XCUITest driver | |
if: matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios' | |
run: appium driver install xcuitest | |
- name: Prebuild XCUITest driver | |
if: matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios' | |
run: appium driver run xcuitest build-wda --sdk=${{ env.IOS_PLATFORM_VERSION }} --name='${{ env.IOS_DEVICE_NAME }}' | |
- name: Run iOS E2E tests | |
if: matrix.e2e-tests == 'ios' | |
run: ./gradlew e2eIosTest -PisCI -Pselenium.version=$latest_snapshot | |
- name: Run Flutter iOS E2E tests | |
if: matrix.e2e-tests == 'flutter-ios' | |
run: ./gradlew e2eFlutterTest -Pplatform="ios" -Pselenium.version=$latest_snapshot -PisCI -PflutterApp=${{ env.FLUTTER_IOS_APP }} |