@@ -20,6 +20,7 @@ concurrency:
2020
2121env :
2222 CI : true
23+ MIN_JAVA_VERSION : 17
2324 ANDROID_SDK_VERSION : " 28"
2425 ANDROID_EMU_NAME : test
2526 ANDROID_EMU_TARGET : default
@@ -37,55 +38,28 @@ jobs:
3738 strategy :
3839 matrix :
3940 include :
40- - java : 17
41- platform : macos-15
42- e2e-tests : ios
43- selenium : stable
44- - java : 17
45- platform : macos-15
46- e2e-tests : flutter-ios
47- selenium : stable
48- - java : 17
49- platform : ubuntu-latest
50- e2e-tests : android
51- selenium : stable
52- - java : 17
53- platform : ubuntu-latest
54- e2e-tests : flutter-android
41+ - java : ${{ env.MIN_JAVA_VERSION }}
5542 selenium : stable
5643 - java : 21
57- platform : ubuntu-latest
5844 selenium : stable
5945 - java : 25
60- platform : ubuntu-latest
6146 selenium : stable
62- # Snapshot: compile-only (no E2E) to verify compatibility with latest Selenium
63- - java : 17
64- platform : ubuntu-latest
47+ - java : ${{ env.MIN_JAVA_VERSION }}
6548 selenium : snapshot
6649 - java : 21
67- platform : ubuntu-latest
6850 selenium : snapshot
6951 - java : 25
70- platform : ubuntu-latest
7152 selenium : snapshot
7253 fail-fast : false
7354
74- runs-on : ${{ matrix.platform }}
55+ runs-on : ubuntu-latest
7556
7657 continue-on-error : ${{ matrix.selenium == 'snapshot' }}
7758
78- name : JDK ${{ matrix.java }} - ${{ matrix.platform }} ${{ matrix.e2e-tests || ' build' }} (${{ matrix.selenium }})
59+ name : JDK ${{ matrix.java }} build (${{ matrix.selenium }})
7960 steps :
8061 - uses : actions/checkout@v6
8162
82- - name : Enable KVM group perms
83- if : (matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android') && matrix.selenium == 'stable'
84- run : |
85- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
86- sudo udevadm control --reload-rules
87- sudo udevadm trigger --name-match=kvm
88-
8963 - name : Set up JDK ${{ matrix.java }}
9064 uses : actions/setup-java@v5
9165 with :
@@ -110,26 +84,62 @@ jobs:
11084 if : matrix.selenium == 'snapshot'
11185 run : ./gradlew clean build -Pselenium.version=$latest_snapshot
11286
87+ e2e :
88+ if : github.event_name == 'pull_request'
89+
90+ strategy :
91+ matrix :
92+ include :
93+ - platform : macos-15
94+ e2e-tests : ios
95+ - platform : macos-15
96+ e2e-tests : flutter-ios
97+ - platform : ubuntu-latest
98+ e2e-tests : android
99+ - platform : ubuntu-latest
100+ e2e-tests : flutter-android
101+ fail-fast : false
102+
103+ runs-on : ${{ matrix.platform }}
104+
105+ name : JDK ${{ env.MIN_JAVA_VERSION }} - ${{ matrix.platform }} ${{ matrix.e2e-tests }} (e2e)
106+ steps :
107+ - uses : actions/checkout@v6
108+
109+ - name : Enable KVM group perms
110+ if : matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android'
111+ run : |
112+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
113+ sudo udevadm control --reload-rules
114+ sudo udevadm trigger --name-match=kvm
115+
116+ - name : Set up JDK ${{ env.MIN_JAVA_VERSION }}
117+ uses : actions/setup-java@v5
118+ with :
119+ distribution : ' zulu'
120+ java-version : ${{ env.MIN_JAVA_VERSION }}
121+
122+ - name : Setup Gradle
123+ uses : gradle/actions/setup-gradle@v5
124+
113125 - name : Install Node.js
114- if : ${{ matrix.e2e-tests && matrix.selenium == 'stable' }}
115126 uses : actions/setup-node@v6
116127 with :
117128 node-version : ' lts/*'
118129
119130 - name : Install Appium
120- if : ${{ matrix.e2e-tests && matrix.selenium == 'stable' }}
121131 run : npm install --location=global appium
122132
123133 - name : Install UIA2 driver
124- if : ( matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android') && matrix.selenium == 'stable '
134+ if : matrix.e2e-tests == 'android' || matrix.e2e-tests == 'flutter-android'
125135 run : appium driver install uiautomator2
126136
127137 - name : Install Flutter Integration driver
128- if : ( matrix.e2e-tests == 'flutter-android' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
138+ if : matrix.e2e-tests == 'flutter-android' || matrix.e2e-tests == 'flutter-ios'
129139 run : appium driver install appium-flutter-integration-driver --source npm
130140
131141 - name : Run Android E2E tests
132- if : matrix.e2e-tests == 'android' && matrix.selenium == 'stable'
142+ if : matrix.e2e-tests == 'android'
133143 uses : reactivecircus/android-emulator-runner@v2
134144 with :
135145 script : ./gradlew e2eAndroidTest
@@ -140,7 +150,7 @@ jobs:
140150 target : ${{ env.ANDROID_EMU_TARGET }}
141151
142152 - name : Run Flutter Android E2E tests
143- if : matrix.e2e-tests == 'flutter-android' && matrix.selenium == 'stable'
153+ if : matrix.e2e-tests == 'flutter-android'
144154 uses : reactivecircus/android-emulator-runner@v2
145155 with :
146156 script : ./gradlew e2eFlutterTest -Pplatform="android" -PflutterApp=${{ env.FLUTTER_ANDROID_APP }}
@@ -151,28 +161,32 @@ jobs:
151161 target : ${{ env.ANDROID_EMU_TARGET }}
152162
153163 - name : Select Xcode
154- if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
164+ if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
155165 uses : maxim-lobanov/setup-xcode@v1
156166 with :
157167 xcode-version : " ${{ env.XCODE_VERSION }}"
168+
158169 - name : Prepare iOS simulator
159- if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
170+ if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
160171 uses : futureware-tech/simulator-action@v5
161172 with :
162173 model : " ${{ env.IOS_DEVICE_NAME }}"
163174 os_version : " ${{ env.IOS_PLATFORM_VERSION }}"
164175 wait_for_boot : true
165176 shutdown_after_job : false
177+
166178 - name : Install XCUITest driver
167- if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
179+ if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
168180 run : appium driver install xcuitest
181+
169182 - name : Download prebuilt WDA
170- if : ( matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios') && matrix.selenium == 'stable '
183+ if : matrix.e2e-tests == 'ios' || matrix.e2e-tests == 'flutter-ios'
171184 run : appium driver run xcuitest download-wda-sim --platform=ios --outdir=$(dirname "$PREBUILT_WDA_PATH")
185+
172186 - name : Run iOS E2E tests
173- if : matrix.e2e-tests == 'ios' && matrix.selenium == 'stable'
187+ if : matrix.e2e-tests == 'ios'
174188 run : ./gradlew e2eIosTest
175189
176190 - name : Run Flutter iOS E2E tests
177- if : matrix.e2e-tests == 'flutter-ios' && matrix.selenium == 'stable'
191+ if : matrix.e2e-tests == 'flutter-ios'
178192 run : ./gradlew e2eFlutterTest -Pplatform="ios" -PflutterApp=${{ env.FLUTTER_IOS_APP }}
0 commit comments