Skip to content

Commit d199ee8

Browse files
authored
ci: use Samsung Galaxy S25 Ultra (Android 15.0) for QTI CI test (#983)
* Add get_available_devices() * Use Samsung Galaxy S25 Ultra for QTI test * Use Firebase for MTK backend test
1 parent 9a06cad commit d199ee8

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

.github/workflows/android-build-test.yml

+27-3
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,7 @@ jobs:
298298
BROWSERSTACK_DEVICES: >-
299299
["Samsung Galaxy M32-11.0",
300300
"Samsung Galaxy S24-14.0",
301-
"Samsung Galaxy S24 Ultra-14.0",
302-
"Samsung Galaxy Tab S10 Plus-14.0",
301+
"Samsung Galaxy S25 Ultra-15.0",
303302
"Google Pixel 9 Pro-15.0"]
304303
with:
305304
timeout_minutes: 60
@@ -309,6 +308,31 @@ jobs:
309308
command: |
310309
bash .github/workflows/scripts/browserstack-app-automate.sh
311310
311+
test-android-apk-unified-mtk:
312+
needs: build-android-apk
313+
runs-on: ubuntu-22.04
314+
steps:
315+
- uses: actions/checkout@v4
316+
- name: Set up authentication for Google Cloud SDK
317+
uses: google-github-actions/auth@v2
318+
with:
319+
credentials_json: ${{ secrets.GCLOUD_SERVICE_ACCOUNT_MOBILE_APP_BUILD }}
320+
- name: Set up Google Cloud SDK
321+
uses: google-github-actions/setup-gcloud@v2
322+
with:
323+
version: '>= 363.0.0'
324+
project_id: mobile-app-build-290400
325+
- name: Trigger Firebase Test Lab for [OnePlus DN2103](OP515BL1)
326+
run: |
327+
gcloud firebase test android run \
328+
--type instrumentation \
329+
--app $GCLOUD_BUCKET_PATH/test-main-unified.apk \
330+
--test $GCLOUD_BUCKET_PATH/test-helper-unified.apk \
331+
--timeout 30m \
332+
--num-flaky-test-attempts 2 \
333+
--device model=OP515BL1,version=33,locale=en,orientation=portrait \
334+
--client-details=buildNumber=${{ github.run_number }}
335+
312336
test-android-apk-single:
313337
needs:
314338
- build-android-apk
@@ -328,7 +352,7 @@ jobs:
328352
- backend: "mtk"
329353
device: "Samsung Galaxy Tab S10 Plus-14.0"
330354
- backend: "qti"
331-
device: "Samsung Galaxy S24 Ultra-14.0"
355+
device: "Samsung Galaxy S25 Ultra-15.0"
332356
- backend: "samsung"
333357
device: "Samsung Galaxy S24-14.0"
334358
env:

.github/workflows/scripts/browserstack-app-automate.sh

+18-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ RETRY_INTERVAL=10
99
# API URLs
1010
TRIGGER_URL="https://api-cloud.browserstack.com/app-automate/flutter-integration-tests/v2/android/build"
1111
STATUS_URL="https://api-cloud.browserstack.com/app-automate/flutter-integration-tests/v2/android/builds"
12+
DEVICES_URL="https://api-cloud.browserstack.com/app-automate/devices"
1213

1314
# Retrieve vars from environment variables
1415
CREDENTIALS="${BROWSERSTACK_CREDENTIALS:-}"
@@ -24,13 +25,25 @@ if [[ -z "$CREDENTIALS" ]]; then
2425
exit 1
2526
fi
2627

27-
if [[ -z "$APP" || -z "$TEST_SUITE" || -z "$BUILD_TAG" || -z "$DEVICES" ]]; then
28+
if [[ -z "$PROJECT" || -z "$APP" || -z "$TEST_SUITE" || -z "$BUILD_TAG" || -z "$DEVICES" ]]; then
2829
echo "Error: Environment variables"\
2930
"BROWSERSTACK_PROJECT, BROWSERSTACK_APP, BROWSERSTACK_TEST_SUITE, BROWSERSTACK_BUILD_TAG and BROWSERSTACK_DEVICES"\
3031
"must be set."
3132
exit 1
3233
fi
3334

35+
# Function to get a list of available devices
36+
get_available_devices() {
37+
local response=$(curl -s -u "$CREDENTIALS" -X GET "$DEVICES_URL")
38+
if [[ -z "$response" ]]; then
39+
echo "Failed to fetch available devices."
40+
return 1
41+
fi
42+
43+
echo "Available devices:"
44+
echo "$response" | jq -r '.[] | "Device: " + .device + ", OS Version: " + .os_version'
45+
}
46+
3447
# Function to trigger the build
3548
trigger_build() {
3649
local response=$(curl -s -u "$CREDENTIALS" \
@@ -91,6 +104,10 @@ check_build_status() {
91104
}
92105

93106
# Main
107+
if [[ "$ACTIONS_RUNNER_DEBUG" == "true" ]]; then
108+
get_available_devices
109+
fi
110+
94111
if ! BUILD_ID=$(trigger_build); then
95112
echo "Trigger build failed. Message: $BUILD_ID"
96113
exit 9

flutter/integration_test/expected_throughput.dart

+8
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const _kDN2103 = 'DN2103'; // OnePlus DN2103
3030
const _kPixel9Pro = 'Pixel 9 Pro'; // Google Pixel 9 Pro
3131
const _kS24 = 'SM-S921B'; // Samsung Galaxy S24
3232
const _kS24Ultra = 'SM-S928B'; // Samsung Galaxy S24 Ultra
33+
const _kS25Ultra = 'SM-S938B'; // Samsung Galaxy S25 Ultra
3334
const _kS10Plus = 'SM-X826B'; // Samsung Galaxy Tab S10 Plus
3435
const _kM32 = 'SM-M326B'; // Samsung Galaxy M32
3536

@@ -58,6 +59,7 @@ const Map<String, Map<String, Interval>> _imageClassificationV2 = {
5859
_kQtiBackend: {
5960
_kS22Ultra: Interval(min: 250, max: 400),
6061
_kS24Ultra: Interval(min: 800, max: 1500),
62+
_kS25Ultra: Interval(min: 900, max: 2200),
6163
},
6264
_kMediatekBackend: {
6365
_kDN2103: Interval(min: 4.5, max: 90),
@@ -89,6 +91,7 @@ const Map<String, Map<String, Interval>> _objectDetection = {
8991
_kQtiBackend: {
9092
_kS22Ultra: Interval(min: 700, max: 1400),
9193
_kS24Ultra: Interval(min: 1800, max: 2700),
94+
_kS25Ultra: Interval(min: 2000, max: 3500),
9295
},
9396
_kMediatekBackend: {
9497
_kDN2103: Interval(min: 120, max: 210),
@@ -120,6 +123,7 @@ const Map<String, Map<String, Interval>> _imageSegmentationV2 = {
120123
_kQtiBackend: {
121124
_kS22Ultra: Interval(min: 400, max: 750),
122125
_kS24Ultra: Interval(min: 1200, max: 1600),
126+
_kS25Ultra: Interval(min: 1500, max: 2200),
123127
},
124128
_kMediatekBackend: {
125129
_kDN2103: Interval(min: 45, max: 70),
@@ -151,6 +155,7 @@ const Map<String, Map<String, Interval>> _naturalLanguageProcessing = {
151155
_kQtiBackend: {
152156
_kS22Ultra: Interval(min: 100, max: 200),
153157
_kS24Ultra: Interval(min: 250, max: 460),
158+
_kS25Ultra: Interval(min: 350, max: 800),
154159
},
155160
_kMediatekBackend: {
156161
_kDN2103: Interval(min: 1, max: 6),
@@ -182,6 +187,7 @@ const Map<String, Map<String, Interval>> _superResolution = {
182187
_kQtiBackend: {
183188
_kS22Ultra: Interval(min: 25, max: 75),
184189
_kS24Ultra: Interval(min: 120, max: 180),
190+
_kS25Ultra: Interval(min: 200, max: 340),
185191
},
186192
_kMediatekBackend: {
187193
_kDN2103: Interval(min: 5, max: 15),
@@ -214,6 +220,7 @@ const Map<String, Map<String, Interval>> _stableDiffusion = {
214220
_kQtiBackend: {
215221
_kS22Ultra: Interval(min: 0, max: 100),
216222
_kS24Ultra: Interval(min: 0, max: 100),
223+
_kS25Ultra: Interval(min: 0, max: 100),
217224
},
218225
_kMediatekBackend: {
219226
_kDN2103: Interval(min: 0, max: 100),
@@ -245,6 +252,7 @@ const Map<String, Map<String, Interval>> _imageClassificationOfflineV2 = {
245252
_kQtiBackend: {
246253
_kS22Ultra: Interval(min: 250, max: 450),
247254
_kS24Ultra: Interval(min: 900, max: 1700),
255+
_kS25Ultra: Interval(min: 1200, max: 2200),
248256
},
249257
_kMediatekBackend: {
250258
_kDN2103: Interval(min: 4.5, max: 90),

0 commit comments

Comments
 (0)