2323 ANDROID_SDK_VERSION : " 28"
2424 ANDROID_EMU_NAME : test
2525 ANDROID_EMU_TARGET : default
26- # https://github.com/actions/runner-images/blob/main/images/macos/ macos-14-arm64-Readme.md
27- XCODE_VERSION : " 15 .4"
28- IOS_DEVICE_NAME : iPhone 15
29- IOS_PLATFORM_VERSION : " 17 .5"
26+ # https://github.com/actions/runner-images/blob/main/images/macos ( macos-15 for Xcode 16 / iOS 18.5)
27+ XCODE_VERSION : " 16 .4"
28+ IOS_DEVICE_NAME : iPhone 16
29+ IOS_PLATFORM_VERSION : " 18 .5"
3030 FLUTTER_ANDROID_APP : " https://github.com/AppiumTestDistribution/appium-flutter-server/releases/latest/download/app-debug.apk"
3131 FLUTTER_IOS_APP : " https://github.com/AppiumTestDistribution/appium-flutter-server/releases/latest/download/ios.zip"
3232 PREBUILT_WDA_PATH : ${{ github.workspace }}/wda/WebDriverAgentRunner-Runner.app
@@ -38,33 +38,49 @@ jobs:
3838 matrix :
3939 include :
4040 - java : 17
41- # Need to use specific (not `-latest`) version of macOS to be sure the required version of Xcode/simulator is available
42- platform : macos-14
41+ platform : macos-15
4342 e2e-tests : ios
43+ selenium : stable
4444 - java : 17
45- # Need to use specific (not `-latest`) version of macOS to be sure the required version of Xcode/simulator is available
46- platform : macos-14
45+ platform : macos-15
4746 e2e-tests : flutter-ios
47+ selenium : stable
4848 - java : 17
4949 platform : ubuntu-latest
5050 e2e-tests : android
51+ selenium : stable
5152 - java : 17
5253 platform : ubuntu-latest
5354 e2e-tests : flutter-android
55+ selenium : stable
5456 - java : 21
5557 platform : ubuntu-latest
58+ selenium : stable
5659 - java : 25
5760 platform : ubuntu-latest
61+ selenium : stable
62+ # Snapshot: compile-only (no E2E) to verify compatibility with latest Selenium
63+ - java : 17
64+ platform : ubuntu-latest
65+ selenium : snapshot
66+ - java : 21
67+ platform : ubuntu-latest
68+ selenium : snapshot
69+ - java : 25
70+ platform : ubuntu-latest
71+ selenium : snapshot
5872 fail-fast : false
5973
6074 runs-on : ${{ matrix.platform }}
6175
62- name : JDK ${{ matrix.java }} - ${{ matrix.platform }} ${{ matrix.e2e-tests }}
76+ continue-on-error : ${{ matrix.selenium == 'snapshot' }}
77+
78+ name : JDK ${{ matrix.java }} - ${{ matrix.platform }} ${{ matrix.e2e-tests || 'build' }} (${{ matrix.selenium }})
6379 steps :
6480 - uses : actions/checkout@v6
6581
6682 - name : Enable KVM group perms
67- if : matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android'
83+ if : ( matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android') && matrix.selenium == 'stable '
6884 run : |
6985 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
7086 sudo udevadm control --reload-rules
@@ -79,80 +95,84 @@ jobs:
7995 - name : Setup Gradle
8096 uses : gradle/actions/setup-gradle@v5
8197
82- - name : Build with Gradle against Selenium nightly build
98+ - name : Resolve Selenium snapshot version
99+ if : matrix.selenium == 'snapshot'
83100 run : |
84101 latest_snapshot=$(curl -sf https://raw.githubusercontent.com/SeleniumHQ/selenium/refs/heads/trunk/java/version.bzl | grep 'SE_VERSION' | sed 's/.*"\(.*\)".*/\1/')
85102 echo ">>> $latest_snapshot"
86103 echo "latest_snapshot=$latest_snapshot" >> "$GITHUB_ENV"
87- ./gradlew clean build -PisCI -Pselenium.version=$latest_snapshot
88104
89- - name : Build with Gradle against stable Selenium version
90- run : |
91- ./gradlew clean build -PisCI
105+ - name : Build with Gradle (stable Selenium)
106+ if : matrix.selenium == 'stable'
107+ run : ./gradlew clean build
108+
109+ - name : Build with Gradle (snapshot Selenium)
110+ if : matrix.selenium == 'snapshot'
111+ run : ./gradlew clean build -Pselenium.version=$latest_snapshot
92112
93113 - name : Install Node.js
94- if : ${{ matrix.e2e-tests }}
114+ if : ${{ matrix.e2e-tests && matrix.selenium == 'stable' }}
95115 uses : actions/setup-node@v6
96116 with :
97117 node-version : ' lts/*'
98118
99119 - name : Install Appium
100- if : ${{ matrix.e2e-tests }}
120+ if : ${{ matrix.e2e-tests && matrix.selenium == 'stable' }}
101121 run : npm install --location=global appium
102122
103123 - name : Install UIA2 driver
104- if : matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android'
124+ if : ( matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android') && matrix.selenium == 'stable '
105125 run : appium driver install uiautomator2
106126
107127 - name : Install Flutter Integration driver
108- if : matrix.e2e-tests == 'flutter-android' || matrix.e2e-tests == 'flutter-ios'
128+ if : ( matrix.e2e-tests == 'flutter-android' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
109129 run : appium driver install appium-flutter-integration-driver --source npm
110130
111131 - name : Run Android E2E tests
112- if : matrix.e2e-tests == 'android'
132+ if : matrix.e2e-tests == 'android' && matrix.selenium == 'stable'
113133 uses : reactivecircus/android-emulator-runner@v2
114134 with :
115- script : ./gradlew e2eAndroidTest -PisCI -Pselenium.version=$latest_snapshot
135+ script : ./gradlew e2eAndroidTest
116136 api-level : ${{ env.ANDROID_SDK_VERSION }}
117137 avd-name : ${{ env.ANDROID_EMU_NAME }}
118138 disable-spellchecker : true
119139 disable-animations : true
120140 target : ${{ env.ANDROID_EMU_TARGET }}
121141
122142 - name : Run Flutter Android E2E tests
123- if : matrix.e2e-tests == 'flutter-android'
143+ if : matrix.e2e-tests == 'flutter-android' && matrix.selenium == 'stable'
124144 uses : reactivecircus/android-emulator-runner@v2
125145 with :
126- script : ./gradlew e2eFlutterTest -Pplatform="android" -Pselenium.version=$latest_snapshot -PisCI - PflutterApp=${{ env.FLUTTER_ANDROID_APP }}
146+ script : ./gradlew e2eFlutterTest -Pplatform="android" -PflutterApp=${{ env.FLUTTER_ANDROID_APP }}
127147 api-level : ${{ env.ANDROID_SDK_VERSION }}
128148 avd-name : ${{ env.ANDROID_EMU_NAME }}
129149 disable-spellchecker : true
130150 disable-animations : true
131151 target : ${{ env.ANDROID_EMU_TARGET }}
132152
133153 - name : Select Xcode
134- if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
154+ if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
135155 uses : maxim-lobanov/setup-xcode@v1
136156 with :
137157 xcode-version : " ${{ env.XCODE_VERSION }}"
138158 - name : Prepare iOS simulator
139- if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
159+ if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
140160 uses : futureware-tech/simulator-action@v4
141161 with :
142162 model : " ${{ env.IOS_DEVICE_NAME }}"
143163 os_version : " ${{ env.IOS_PLATFORM_VERSION }}"
144164 wait_for_boot : true
145165 shutdown_after_job : false
146166 - name : Install XCUITest driver
147- if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
167+ if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
148168 run : appium driver install xcuitest
149169 - name : Download prebuilt WDA
150- if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
170+ if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
151171 run : appium driver run xcuitest download-wda-sim --platform=ios --outdir=$(dirname "$PREBUILT_WDA_PATH")
152172 - name : Run iOS E2E tests
153- if : matrix.e2e-tests == 'ios'
154- run : ./gradlew e2eIosTest -PisCI -Pselenium.version=$latest_snapshot
173+ if : matrix.e2e-tests == 'ios' && matrix.selenium == 'stable'
174+ run : ./gradlew e2eIosTest
155175
156176 - name : Run Flutter iOS E2E tests
157- if : matrix.e2e-tests == 'flutter-ios'
158- run : ./gradlew e2eFlutterTest -Pplatform="ios" -Pselenium.version=$latest_snapshot -PisCI - PflutterApp=${{ env.FLUTTER_IOS_APP }}
177+ if : matrix.e2e-tests == 'flutter-ios' && matrix.selenium == 'stable'
178+ run : ./gradlew e2eFlutterTest -Pplatform="ios" -PflutterApp=${{ env.FLUTTER_IOS_APP }}
0 commit comments