From e31db9c4ff0806bdf017eb37162d1cca0fd07c1f Mon Sep 17 00:00:00 2001 From: anhappdev Date: Mon, 24 Nov 2025 14:14:06 +0700 Subject: [PATCH 1/7] Add BrowserStack device list --- .../scripts/browserstack-devices.json | 1034 +++++++++++++++++ 1 file changed, 1034 insertions(+) create mode 100644 .github/workflows/scripts/browserstack-devices.json diff --git a/.github/workflows/scripts/browserstack-devices.json b/.github/workflows/scripts/browserstack-devices.json new file mode 100644 index 000000000..a0002f3d5 --- /dev/null +++ b/.github/workflows/scripts/browserstack-devices.json @@ -0,0 +1,1034 @@ +[ + { + "os": "ios", + "os_version": "26", + "device": "iPhone 15 Pro Max", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone 15", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 15 Pro Max", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 15 Pro", + "realMobile": true, + "device_tier": "Tier 1", + "device_limit": 80 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 15 Plus", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 15", + "realMobile": true, + "device_tier": "Tier 1", + "device_limit": 80 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone 14 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone 14", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 14", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 13 Pro Max", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 13", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 12 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 13", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 12 Pro", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPhone 12", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone 14 Pro Max", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone 14 Pro", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone 14 Plus", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone 14", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone 13", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone 12 Pro Max", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPhone 13 Pro Max", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPhone 13 Pro", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPhone 13 Mini", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPhone 13", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "14", + "device": "iPhone 12 Pro", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "14", + "device": "iPhone 12", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "13", + "device": "iPhone 11", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "10", + "device": "iPhone 7", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone Air", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone 17 Pro Max", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone 17 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPhone 17", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 16e", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 16 Pro Max", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 16 Pro", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 16 Plus", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPhone 16", + "realMobile": true, + "device_tier": "Tier 1", + "device_limit": 80 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPhone SE 2020", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPhone SE 2022", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "14", + "device": "iPad Air 4", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPad 9th", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPad 9th", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPad Pro 13 2025", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPad Pro 11 2025", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPad Air 5", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPad Pro 11 2021", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPad Pro 13 2024", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPad Pro 12.9 2021", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPad Pro 11 2024", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "17", + "device": "iPad Air 6", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPad Pro 12.9 2022", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPad Pro 12.9 2020", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPad Pro 11 2022", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPad 10th", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "14", + "device": "iPad Pro 12.9 2021", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "14", + "device": "iPad Pro 12.9 2020", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "26", + "device": "iPad Air 13 2025", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "18", + "device": "iPad Air 13 2025", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPad Pro 11 2020", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "16", + "device": "iPad 8th", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "ios", + "os_version": "15", + "device": "iPad Mini 2021", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "14", + "device": "iPad 8th", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "13", + "device": "iPad Pro 11 2020", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "ios", + "os_version": "11", + "device": "iPad 6th", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "13.0", + "device": "Samsung Galaxy S23 Ultra", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "13.0", + "device": "Samsung Galaxy S23", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Samsung Galaxy S22 Ultra", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Samsung Galaxy S22 Plus", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Samsung Galaxy S22", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Samsung Galaxy S21", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy S21 Ultra", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy S21", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy S21 Plus", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Samsung Galaxy S20", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Samsung Galaxy S20 Ultra", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Samsung Galaxy S25 Ultra", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Samsung Galaxy S25", + "realMobile": true, + "device_tier": "Tier 1", + "device_limit": 80 + }, + { + "os": "android", + "os_version": "14.0", + "device": "Samsung Galaxy S24 Ultra", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "14.0", + "device": "Samsung Galaxy S24", + "realMobile": true, + "device_tier": "Tier 1", + "device_limit": 80 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy M52", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy M32", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy A52", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Samsung Galaxy Note 20", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Samsung Galaxy A51", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Samsung Galaxy A11", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "9.0", + "device": "Samsung Galaxy S10", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "9.0", + "device": "Samsung Galaxy A10", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "8.1", + "device": "Samsung Galaxy Note 9", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "16.0", + "device": "Google Pixel 9", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "16.0", + "device": "Google Pixel 10 Pro XL", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "16.0", + "device": "Google Pixel 10 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "16.0", + "device": "Google Pixel 10", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Google Pixel 9 Pro XL", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Google Pixel 9 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Google Pixel 9", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Google Pixel 6 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "14.0", + "device": "Google Pixel 8 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "14.0", + "device": "Google Pixel 8", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "13.0", + "device": "Google Pixel 7 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "13.0", + "device": "Google Pixel 7", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "13.0", + "device": "Google Pixel 6 Pro", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Google Pixel 6 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Google Pixel 6", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Google Pixel 5", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "OnePlus 13R", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "14.0", + "device": "OnePlus 12R", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "13.0", + "device": "OnePlus 11R", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "11.0", + "device": "OnePlus 9", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "OnePlus 8", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Vivo Y21", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Vivo V21", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Vivo Y50", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Oppo Reno 6", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Oppo A96", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Oppo Reno 3 Pro", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Xiaomi Redmi Note 11", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Xiaomi Redmi Note 9", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Motorola Moto G71 5G", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Motorola Moto G9 Play", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Huawei Nova 11 SE", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 0 + }, + { + "os": "android", + "os_version": "9.0", + "device": "Huawei P30", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "16.0", + "device": "Samsung Galaxy Tab S11", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "15.0", + "device": "Samsung Galaxy Tab S10 Plus", + "realMobile": true, + "device_tier": "Tier 2", + "device_limit": 40 + }, + { + "os": "android", + "os_version": "14.0", + "device": "Samsung Galaxy Tab A9 Plus", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "13.0", + "device": "Samsung Galaxy Tab S9", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "12.0", + "device": "Samsung Galaxy Tab S8", + "realMobile": true, + "device_tier": "Tier 3", + "device_limit": 16 + }, + { + "os": "android", + "os_version": "11.0", + "device": "Samsung Galaxy Tab S7", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + }, + { + "os": "android", + "os_version": "10.0", + "device": "Samsung Galaxy Tab S7", + "realMobile": true, + "device_tier": "Tier 4", + "device_limit": 5 + } +] \ No newline at end of file From 3720714fbf822011fd584c9e48427d1333885d09 Mon Sep 17 00:00:00 2001 From: anhappdev Date: Mon, 24 Nov 2025 14:25:15 +0700 Subject: [PATCH 2/7] Expand BrowserStack device list in CI configuration --- .../workflows/android-build-test-linux.yml | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/.github/workflows/android-build-test-linux.yml b/.github/workflows/android-build-test-linux.yml index fd3ef31dc..5bc4a48f1 100644 --- a/.github/workflows/android-build-test-linux.yml +++ b/.github/workflows/android-build-test-linux.yml @@ -365,6 +365,88 @@ jobs: device: "Samsung Galaxy S22-12.0" - backend: "samsung" device: "Samsung Galaxy S21-12.0" + - backend: "unknown" + device: "Samsung Galaxy S21 Ultra-11.0" + - backend: "unknown" + device: "Samsung Galaxy S21-11.0" + - backend: "unknown" + device: "Samsung Galaxy S21 Plus-11.0" + - backend: "unknown" + device: "Samsung Galaxy S25 Ultra-15.0" + - backend: "unknown" + device: "Samsung Galaxy S24 Ultra-14.0" + - backend: "unknown" + device: "Samsung Galaxy S24-14.0" + - backend: "unknown" + device: "Samsung Galaxy M52-11.0" + - backend: "unknown" + device: "Samsung Galaxy M32-11.0" + - backend: "unknown" + device: "Samsung Galaxy A52-11.0" + - backend: "unknown" + device: "Google Pixel 9-16.0" + - backend: "unknown" + device: "Google Pixel 10 Pro XL-16.0" + - backend: "unknown" + device: "Google Pixel 10 Pro-16.0" + - backend: "unknown" + device: "Google Pixel 10-16.0" + - backend: "unknown" + device: "Google Pixel 9 Pro XL-15.0" + - backend: "unknown" + device: "Google Pixel 9 Pro-15.0" + - backend: "unknown" + device: "Google Pixel 9-15.0" + - backend: "unknown" + device: "Google Pixel 6 Pro-15.0" + - backend: "unknown" + device: "Google Pixel 8 Pro-14.0" + - backend: "unknown" + device: "Google Pixel 8-14.0" + - backend: "unknown" + device: "Google Pixel 7 Pro-13.0" + - backend: "unknown" + device: "Google Pixel 7-13.0" + - backend: "unknown" + device: "Google Pixel 6 Pro-13.0" + - backend: "unknown" + device: "Google Pixel 6 Pro-12.0" + - backend: "unknown" + device: "Google Pixel 6-12.0" + - backend: "unknown" + device: "Google Pixel 5-11.0" + - backend: "unknown" + device: "OnePlus 13R-15.0" + - backend: "unknown" + device: "OnePlus 12R-14.0" + - backend: "unknown" + device: "OnePlus 11R-13.0" + - backend: "unknown" + device: "OnePlus 9-11.0" + - backend: "unknown" + device: "Vivo Y21-11.0" + - backend: "unknown" + device: "Vivo V21-11.0" + - backend: "unknown" + device: "Oppo Reno 6-11.0" + - backend: "unknown" + device: "Oppo A96-11.0" + - backend: "unknown" + device: "Xiaomi Redmi Note 11-11.0" + - backend: "unknown" + device: "Motorola Moto G71 5G-11.0" + - backend: "unknown" + device: "Huawei Nova 11 SE-12.0" + - backend: "unknown" + device: "Samsung Galaxy Tab S11-16.0" + - backend: "unknown" + device: "Samsung Galaxy Tab S10 Plus-15.0" + - backend: "unknown" + device: "Samsung Galaxy Tab A9 Plus-14.0" + - backend: "unknown" + device: "Samsung Galaxy Tab S8-12.0" + - backend: "unknown" + device: "Samsung Galaxy Tab S7-11.0" env: MAIN_APK_NAME: test-main-unified-${{ github.run_number }}.apk HELPER_APK_NAME: test-helper-unified-${{ github.run_number }}.apk From 0c3d03f0aa7b6bd7bbe251055acb19ec01161df6 Mon Sep 17 00:00:00 2001 From: anhappdev Date: Mon, 24 Nov 2025 14:25:35 +0700 Subject: [PATCH 3/7] Remove conditional check for `EXTENDED_TESTS_ON_PR` in CI workflow --- .github/workflows/android-build-test-linux.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/android-build-test-linux.yml b/.github/workflows/android-build-test-linux.yml index 5bc4a48f1..c16025062 100644 --- a/.github/workflows/android-build-test-linux.yml +++ b/.github/workflows/android-build-test-linux.yml @@ -338,7 +338,6 @@ jobs: needs: - build-android-apk - test-android-apk-unified - if: github.ref == 'refs/heads/master' || vars.EXTENDED_TESTS_ON_PR == 'true' runs-on: ubuntu-22.04 timeout-minutes: 60 strategy: From 1e4f5511467527a874d354b132c26dc278db29ed Mon Sep 17 00:00:00 2001 From: anhappdev Date: Mon, 24 Nov 2025 14:28:45 +0700 Subject: [PATCH 4/7] Comment out accuracy and throughput checks in benchmark test --- flutter/integration_test/utils.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flutter/integration_test/utils.dart b/flutter/integration_test/utils.dart index 5ca3b2f82..3211bc3e4 100644 --- a/flutter/integration_test/utils.dart +++ b/flutter/integration_test/utils.dart @@ -197,8 +197,8 @@ void checkResult(ExtendedResult extendedResult) { expect(benchmarkResult.performanceRun, isNotNull); expect(benchmarkResult.performanceRun!.throughput, isNotNull); - checkAccuracy(benchmarkResult); - checkThroughput(benchmarkResult, extendedResult.environmentInfo); + // checkAccuracy(benchmarkResult); + // checkThroughput(benchmarkResult, extendedResult.environmentInfo); } } From 1811236ae73b04580f26a60ba3a018ab6607582e Mon Sep 17 00:00:00 2001 From: anhappdev Date: Thu, 11 Dec 2025 07:20:36 +0700 Subject: [PATCH 5/7] Reorder `_backendsList` to position `TFLITE_TAG` first --- flutter/lib/backend/list.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter/lib/backend/list.in b/flutter/lib/backend/list.in index 136e3576e..f30031d65 100644 --- a/flutter/lib/backend/list.in +++ b/flutter/lib/backend/list.in @@ -2,10 +2,10 @@ part of 'list.dart'; // Always add new tags before TFLITE_TAG, otherwise your backend will never be used const _backendsList = [ + 'TFLITE_TAG', 'MEDIATEK_TAG', 'PIXEL_TAG', 'QTI_TAG', 'SAMSUNG_TAG', 'APPLE_TAG', - 'TFLITE_TAG', ]; From a99cb50c3d5a60e109234fb2a62ecdc9b937b853 Mon Sep 17 00:00:00 2001 From: anhappdev Date: Thu, 11 Dec 2025 18:53:31 +0700 Subject: [PATCH 6/7] Remove dependency on `test-android-apk-unified` in CI workflow --- .github/workflows/android-build-test-linux.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/android-build-test-linux.yml b/.github/workflows/android-build-test-linux.yml index fec1c8b6d..df12dbc8e 100644 --- a/.github/workflows/android-build-test-linux.yml +++ b/.github/workflows/android-build-test-linux.yml @@ -352,7 +352,6 @@ jobs: name: ${{ matrix.backend }}-${{ matrix.device }} (unified-extended) needs: - build-android-apk - - test-android-apk-unified - computed runs-on: ubuntu-22.04 timeout-minutes: 60 From 7fd60dd21e6600fe6285e334b349bf866abc6ece Mon Sep 17 00:00:00 2001 From: anhappdev Date: Tue, 10 Feb 2026 13:55:17 +0700 Subject: [PATCH 7/7] Adding checks for various EGL calls #1103 --- .../cpp/backend_qti/soc_utility.cc | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/mobile_back_qti/cpp/backend_qti/soc_utility.cc b/mobile_back_qti/cpp/backend_qti/soc_utility.cc index df192bdc7..beccc8b15 100644 --- a/mobile_back_qti/cpp/backend_qti/soc_utility.cc +++ b/mobile_back_qti/cpp/backend_qti/soc_utility.cc @@ -338,7 +338,6 @@ int Socs::soc_num_inits() { } bool Socs::isSnapDragon(const char *manufacturer) { - soc_info_init(); #ifdef __ANDROID__ bool is_qcom = false; if (strncmp("QUALCOMM", manufacturer, 7) == 0) { @@ -357,14 +356,41 @@ bool Socs::isSnapDragon(const char *manufacturer) { /* get an EGL display connection */ display = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (display == EGL_NO_DISPLAY) { + LOG(ERROR) << "Failed to get EGL display"; + return false; + } /* initialize the EGL display connection */ - eglInitialize(display, NULL, NULL); + if (eglInitialize(display, NULL, NULL) == EGL_FALSE) { + LOG(ERROR) << "Failed to initialize EGL"; + eglTerminate(display); + return false; + } /* get an appropriate EGL frame buffer configuration */ - eglChooseConfig(display, attribute_list, &config, 1, &num_config); + if (eglChooseConfig(display, attribute_list, &config, 1, &num_config) == + EGL_FALSE || + num_config == 0) { + LOG(ERROR) << "Failed to choose EGL config"; + eglTerminate(display); + return false; + } /* create an EGL rendering context */ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL); + if (context == EGL_NO_CONTEXT) { + LOG(ERROR) << "Failed to create EGL context"; + eglDestroySurface(display, surface); + eglTerminate(display); + return false; + } /* connect the context to the surface */ - eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, context); + if (eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, context) == + EGL_FALSE) { + LOG(ERROR) << "Failed to make EGL context current"; + eglDestroyContext(display, context); + eglDestroySurface(display, surface); + eglTerminate(display); + return false; + } const unsigned char *vendor = glGetString(GL_VENDOR);