Разработка E2E-тестов для мобильного приложения (Maestro)

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка E2E-тестов для мобильного приложения (Maestro)
Средний
~3-5 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Разработка E2E-тестов для мобильного приложения (Maestro)

Maestro — самый молодой из E2E-инструментов для мобильных приложений, но уже занял нишу благодаря одному качеству: тесты пишутся на YAML, запускаются одной командой, и не требуют настройки Appium-сервера, XCUITest-раннера или встраивания агента в приложение. Это black-box тестирование в чистом виде — инструмент общается с устройством через Accessibility API и не знает ничего о внутренней архитектуре приложения.

YAML-сценарии: просто, но есть нюансы

Минимальный флоу авторизации:

appId: com.example.myapp
---
- launchApp:
    clearState: true
- tapOn: "Email"
- inputText: "[email protected]"
- tapOn: "Пароль"
- inputText: "password123"
- tapOn: "Войти"
- assertVisible: "Главная"

tapOn ищет элемент по тексту, accessibilityLabel, testID или id. Порядок поиска — слева направо в иерархии Accessibility. Если на экране два элемента с одинаковым текстом — Maestro нажмёт на первый, что может быть не то, что нужно. В таких случаях используем tapOn с уточнением:

- tapOn:
    text: "Добавить"
    index: 1  # второй элемент с этим текстом

Или через id:

- tapOn:
    id: "add_to_cart_button"

Важно: id на Android — это resource-id (com.example.app:id/add_to_cart_button), на iOS — accessibilityIdentifier. Maestro автоматически определяет платформу.

Переменные и подфлоу

Maestro поддерживает переменные и вызов вложенных флоу — без этого большие тест-сьюты превращаются в копипасту:

# flows/login.yaml
appId: com.example.myapp
---
- tapOn: "Email"
- inputText: ${EMAIL}
- tapOn: "Пароль"
- inputText: ${PASSWORD}
- tapOn: "Войти"
# flows/checkout_test.yaml
appId: com.example.myapp
env:
  EMAIL: [email protected]
  PASSWORD: password123
---
- runFlow: flows/login.yaml
- tapOn: "Каталог"
- tapOn: "Купить"
- assertVisible: "Оформление заказа"

runFlow позволяет собирать сложные сценарии из переиспользуемых блоков. Переменные через env переопределяются при запуске: maestro test --env [email protected].

Запуск: локально и в CI

Локальный запуск без лишних настроек — главное преимущество Maestro:

# Установка
curl -Ls "https://get.maestro.mobile.dev" | bash

# Запуск одного теста
maestro test flows/login_test.yaml

# Запуск всей директории
maestro test flows/

# Режим студии (UI с предпросмотром)
maestro studio

maestro studio запускает браузерный UI, который показывает иерархию Accessibility в реальном времени и позволяет интерактивно выбирать элементы. Для написания тестов — быстрее, чем ручной подбор локаторов.

Maestro Cloud

Для CI без собственных устройств — Maestro Cloud (платный сервис от создателей):

maestro cloud --apiKey $MAESTRO_CLOUD_API_KEY flows/

Загружает приложение и флоу-файлы, запускает на реальных устройствах в облаке, возвращает отчёт со скриншотами. Интеграция с GitHub Actions:

- name: Run Maestro tests on Maestro Cloud
  uses: mobile-dev-inc/action-maestro-cloud@v1
  with:
    api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
    app-file: app/build/outputs/apk/debug/app-debug.apk
    flows-file: flows/

Для самостоятельного CI (без Maestro Cloud) — локальный эмулятор + обычный maestro test в pipeline.

Ограничения, которые надо знать

Maestro не умеет в кастомные жесты: pinch, rotate, multi-touch. Для приложений с картами или галереей, где нужен зум — Appium или Detox.

Нет прямого доступа к JavaScript-контексту (в отличие от Detox). Если нужно проверить состояние Redux store или вызвать метод — не получится без обходных путей (например, через deep link с тест-командой).

Assertions ограничены видимостью (assertVisible, assertNotVisible) и наличием текста. Проверить точное значение атрибута или координату элемента — нельзя.

Несмотря на это, для стандартных CRUD-приложений, маркетплейсов, сервисных приложений Maestro покрывает 80–90% нужных E2E-сценариев с минимальными затратами на поддержку.

Что входит в работу

  • Написание YAML-флоу для ключевых пользовательских сценариев
  • Настройка переменных и переиспользуемых подфлоу
  • Интеграция с CI (GitHub Actions / GitLab CI)
  • Настройка запуска через Maestro Cloud или локальный эмулятор
  • Документация по добавлению новых тестов

Сроки

3–5 дней в зависимости от количества сценариев. 5–7 флоу для типичного CRUD-приложения — 3 дня. Сложные многоэкранные сценарии с переменными и вложенными флоу — 5 дней. Стоимость рассчитывается индивидуально.