Skip to content

Commit 2009c4f

Browse files
ci: Split build and e2e tests
1 parent 22881e6 commit 2009c4f

File tree

2 files changed

+60
-51
lines changed

2 files changed

+60
-51
lines changed

.github/workflows/ci.yml

Lines changed: 57 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ concurrency:
2020

2121
env:
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 }}

.github/workflows/pr-title.yml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@ on:
66

77
jobs:
88
lint:
9-
name: https://www.conventionalcommits.org
10-
runs-on: ubuntu-latest
11-
steps:
12-
- uses: beemojs/conventional-pr-action@v3
13-
with:
14-
config-preset: angular
15-
env:
16-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9+
uses: appium/appium-workflows/.github/workflows/pr-title.yml@main
10+
with:
11+
config-preset: angular

0 commit comments

Comments
 (0)