Налаштування тестування на реальних пристроях через Firebase Test Lab
Емулятор брехає. Не злобно, але систематично: GPU-рендеринг інший, Bluetooth недоступний, камера симульована, поведінка пам'яті відрізняється від реального пристрою. Firebase Test Lab дає доступ до фізичних пристроїв — Pixel 8, Samsung Galaxy S24, планшетів, старих Xiaomi з кастомними прошивками. Тест, який пройшов на емуляторі, може упасти на Samsung One UI через кастомний WebView або змінену систему розрешень.
Що вміє Firebase Test Lab
Два режими тестування:
Instrumentation Tests — запускає ваші Espresso / XCUITest тесты на обраних пристроях. Повний контроль над тим, що перевіряється.
Robo Test — автоматичний краулер. Запускаєте APK без жодного написаного тесту, Robo самостійно обходить інтерфейс по Accessibility-дереву, натискає кнопки, заповнює поля випадковими даними, ищет крєші. Корисний для швидкої перевірки нових збірок перед релізом.
Підтримка платформ: Android (Espresso, UI Automator, Appium) та iOS (XCUITest). Firebase Test Lab для iOS — окрема історія з меншим парком пристроїв, але реальні iPhone та iPad все одно цінніші, ніж симулятор.
Налаштування: від завантаження білда до результатів
Android
Збірка APK та тест-APK:
./gradlew assembleDebug assembleAndroidTest
Завантаження та запуск через gcloud:
gcloud firebase test android run \
--type instrumentation \
--app app/build/outputs/apk/debug/app-debug.apk \
--test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
--device model=Pixel8,version=34,locale=uk,orientation=portrait \
--device model=a54xnsxx,version=13,locale=uk,orientation=portrait \
--results-bucket gs://my-project-test-results \
--results-dir "run_$(date +%Y%m%d_%H%M%S)"
model=a54xnsxx — це Samsung Galaxy A54. Список доступних моделей: gcloud firebase test android models list.
Матриця пристроїв
Вибір матриці — окрема аналітична задача. Немає сенсу гонити тесты на 50 пристроях. Принцип:
| Критерій | Що включаємо |
|---|---|
| Топ-5 пристроїв з аналітики | По даних Firebase Analytics / Crashlytics |
| Мінімальна поддерживаемая версія ОС | minSdkVersion / deployment target |
| Поточна версія ОС | Android 14 / iOS 17 |
| Samsung (One UI) | Окремо — через кастомізації |
| Планшет | Якщо підтримується форм-фактор |
Реалістична матриця для більшості проектів: 3–5 пристроїв. Більше — дорожче й довше, але не обов'язково інформативніше.
iOS
Для iOS потрібна .ipa з development-підписом (не distribution). Завантаження:
gcloud firebase test ios run \
--test MyAppTests.zip \
--device model=iphone15pro,version=17.4,locale=uk_UA,orientation=portrait
MyAppTests.zip — архив з .xctestrun файлом та тест-продуктами. Збирається через xcodebuild build-for-testing.
Robo Test з кастомним скриптом
Чистий Robo-краулер іноді застряє на екрані логіну — не знає учетні дані. Robo Script дозволяє задати початкові дії:
[
{
"eventType": "VIEW_TEXT_CHANGED",
"replacementText": "[email protected]",
"elementDescriptors": [{"resourceName": "com.example.app:id/email_input"}]
},
{
"eventType": "VIEW_CLICKED",
"elementDescriptors": [{"resourceName": "com.example.app:id/login_button"}]
}
]
Після авторизації Robo продовжує обхід вже авторизованої частини додатку. Це швидкий спосіб перевірити регресії без написання тестів.
Інтеграція у CI
GitHub Actions:
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v2
with:
service_account_key: ${{ secrets.GCLOUD_SERVICE_ACCOUNT_KEY }}
project_id: my-firebase-project
- name: Run tests on Firebase Test Lab
run: |
gcloud firebase test android run \
--app app-debug.apk \
--test app-debug-androidTest.apk \
--device model=Pixel8,version=34 \
--timeout 10m
Service account повинен мати роль Firebase Test Lab Admin. Результати автоматично зберігаються у Cloud Storage — скриншоти, відео, logcats, XML-звіт.
Аналіз результатів
У консолі Firebase Test Lab для кожного запуску доступні:
- Відеозапис прохідження тесту
- Logcat з фільтром по тегам
- Скриншоти у ключових точках
- Звіт про покриття (якщо включений
jacoco) - XML-результаты в форматі JUnit (для Allure / Jenkins)
Строки
2–3 дні — налаштування Firebase Test Lab, конфігурація матриці пристроїв, інтеграція у CI, налаштування Robo Script для авторизації. Плюс час на першу аналіз результатів та усунення проблем, специфічних для пристроїв. Вартість розраховується індивідуально.







