Skip to content

Commit 730d18f

Browse files
ci: Run tests for both snapshot and stable selenium versions
1 parent 1f0a2f8 commit 730d18f

2 files changed

Lines changed: 75 additions & 20 deletions

File tree

.github/workflows/ci.yml

Lines changed: 70 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ env:
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,28 +38,56 @@ 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
46+
e2e-tests: ios
47+
selenium: snapshot
48+
- java: 17
49+
platform: macos-15
4750
e2e-tests: flutter-ios
51+
selenium: stable
52+
- java: 17
53+
platform: macos-15
54+
e2e-tests: flutter-ios
55+
selenium: snapshot
56+
- java: 17
57+
platform: ubuntu-latest
58+
e2e-tests: android
59+
selenium: stable
4860
- java: 17
4961
platform: ubuntu-latest
5062
e2e-tests: android
63+
selenium: snapshot
64+
- java: 17
65+
platform: ubuntu-latest
66+
e2e-tests: flutter-android
67+
selenium: stable
5168
- java: 17
5269
platform: ubuntu-latest
5370
e2e-tests: flutter-android
71+
selenium: snapshot
5472
- java: 21
5573
platform: ubuntu-latest
74+
selenium: stable
75+
- java: 21
76+
platform: ubuntu-latest
77+
selenium: snapshot
5678
- java: 25
5779
platform: ubuntu-latest
80+
selenium: stable
81+
- java: 25
82+
platform: ubuntu-latest
83+
selenium: snapshot
5884
fail-fast: false
5985

6086
runs-on: ${{ matrix.platform }}
6187

62-
name: JDK ${{ matrix.java }} - ${{ matrix.platform }} ${{ matrix.e2e-tests }}
88+
continue-on-error: ${{ matrix.selenium == 'snapshot' }}
89+
90+
name: JDK ${{ matrix.java }} - ${{ matrix.platform }} ${{ matrix.e2e-tests || 'build' }} (${{ matrix.selenium }})
6391
steps:
6492
- uses: actions/checkout@v6
6593

@@ -79,16 +107,20 @@ jobs:
79107
- name: Setup Gradle
80108
uses: gradle/actions/setup-gradle@v5
81109

82-
- name: Build with Gradle against Selenium nightly build
110+
- name: Resolve Selenium snapshot version
111+
if: matrix.selenium == 'snapshot'
83112
run: |
84113
latest_snapshot=$(curl -sf https://raw.githubusercontent.com/SeleniumHQ/selenium/refs/heads/trunk/java/version.bzl | grep 'SE_VERSION' | sed 's/.*"\(.*\)".*/\1/')
85114
echo ">>> $latest_snapshot"
86115
echo "latest_snapshot=$latest_snapshot" >> "$GITHUB_ENV"
87-
./gradlew clean build -PisCI -Pselenium.version=$latest_snapshot
88116
89-
- name: Build with Gradle against stable Selenium version
90-
run: |
91-
./gradlew clean build -PisCI
117+
- name: Build with Gradle (stable Selenium)
118+
if: matrix.selenium == 'stable'
119+
run: ./gradlew clean build
120+
121+
- name: Build with Gradle (snapshot Selenium)
122+
if: matrix.selenium == 'snapshot'
123+
run: ./gradlew clean build -Pselenium.version=$latest_snapshot
92124

93125
- name: Install Node.js
94126
if: ${{ matrix.e2e-tests }}
@@ -112,7 +144,12 @@ jobs:
112144
if: matrix.e2e-tests == 'android'
113145
uses: reactivecircus/android-emulator-runner@v2
114146
with:
115-
script: ./gradlew e2eAndroidTest -PisCI -Pselenium.version=$latest_snapshot
147+
script: |
148+
if [ "${{ matrix.selenium }}" = "snapshot" ]; then
149+
./gradlew e2eAndroidTest -Pselenium.version=$latest_snapshot
150+
else
151+
./gradlew e2eAndroidTest
152+
fi
116153
api-level: ${{ env.ANDROID_SDK_VERSION }}
117154
avd-name: ${{ env.ANDROID_EMU_NAME }}
118155
disable-spellchecker: true
@@ -123,7 +160,12 @@ jobs:
123160
if: matrix.e2e-tests == 'flutter-android'
124161
uses: reactivecircus/android-emulator-runner@v2
125162
with:
126-
script: ./gradlew e2eFlutterTest -Pplatform="android" -Pselenium.version=$latest_snapshot -PisCI -PflutterApp=${{ env.FLUTTER_ANDROID_APP }}
163+
script: |
164+
if [ "${{ matrix.selenium }}" = "snapshot" ]; then
165+
./gradlew e2eFlutterTest -Pplatform="android" -Pselenium.version=$latest_snapshot -PflutterApp=${{ env.FLUTTER_ANDROID_APP }}
166+
else
167+
./gradlew e2eFlutterTest -Pplatform="android" -PflutterApp=${{ env.FLUTTER_ANDROID_APP }}
168+
fi
127169
api-level: ${{ env.ANDROID_SDK_VERSION }}
128170
avd-name: ${{ env.ANDROID_EMU_NAME }}
129171
disable-spellchecker: true
@@ -151,8 +193,18 @@ jobs:
151193
run: appium driver run xcuitest download-wda-sim --platform=ios --outdir=$(dirname "$PREBUILT_WDA_PATH")
152194
- name: Run iOS E2E tests
153195
if: matrix.e2e-tests == 'ios'
154-
run: ./gradlew e2eIosTest -PisCI -Pselenium.version=$latest_snapshot
196+
run: |
197+
if [ "${{ matrix.selenium }}" = "snapshot" ]; then
198+
./gradlew e2eIosTest -Pselenium.version=$latest_snapshot
199+
else
200+
./gradlew e2eIosTest
201+
fi
155202
156203
- name: Run Flutter iOS E2E tests
157204
if: matrix.e2e-tests == 'flutter-ios'
158-
run: ./gradlew e2eFlutterTest -Pplatform="ios" -Pselenium.version=$latest_snapshot -PisCI -PflutterApp=${{ env.FLUTTER_IOS_APP }}
205+
run: |
206+
if [ "${{ matrix.selenium }}" = "snapshot" ]; then
207+
./gradlew e2eFlutterTest -Pplatform="ios" -Pselenium.version=$latest_snapshot -PflutterApp=${{ env.FLUTTER_IOS_APP }}
208+
else
209+
./gradlew e2eFlutterTest -Pplatform="ios" -PflutterApp=${{ env.FLUTTER_IOS_APP }}
210+
fi

build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ version = appiumClientVersion
2424
repositories {
2525
mavenCentral()
2626

27-
if (project.hasProperty("isCI")) {
27+
// Only add Selenium snapshot repo when resolving a SNAPSHOT version.
28+
// Release versions (e.g. from gradle.properties) resolve from Maven Central only.
29+
if (project.property('selenium.version').toString().contains('SNAPSHOT')) {
2830
maven {
2931
name = 'Central Portal Snapshots'
3032
url = 'https://central.sonatype.com/repository/maven-snapshots/'
@@ -49,7 +51,8 @@ dependencies {
4951
compileOnly 'org.projectlombok:lombok:1.18.42'
5052
annotationProcessor 'org.projectlombok:lombok:1.18.42'
5153

52-
if (project.hasProperty("isCI")) {
54+
// Pin exact Selenium version when using a SNAPSHOT (needs snapshot repo); otherwise use version range.
55+
if (seleniumVersion.toString().contains('SNAPSHOT')) {
5356
api "org.seleniumhq.selenium:selenium-api:${seleniumVersion}"
5457
api "org.seleniumhq.selenium:selenium-remote-driver:${seleniumVersion}"
5558
api "org.seleniumhq.selenium:selenium-support:${seleniumVersion}"

0 commit comments

Comments
 (0)