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

Разработка E2E-тестов для мобильного приложения (Maestro) Мы используем Maestro, потому что это самый быстрый способ покрыть приложение E2E-тестами без танцев с сервером. За 5 лет мы автоматизировали более 50 мобильных проектов — от банковских приложений до маркетплейсов. Недавно для финтех-старт

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

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

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

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

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

Часто задаваемые вопросы

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

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

Мы используем Maestro, потому что это самый быстрый способ покрыть приложение E2E-тестами без танцев с сервером. За 5 лет мы автоматизировали более 50 мобильных проектов — от банковских приложений до маркетплейсов. Недавно для финтех-стартапа с 30 экранами написали 15 YAML-флоу за 4 дня. Регресс сократился с двух дней до четырёх часов, заказчик экономит около 400 000 руб. в год на обслуживании тестов. Maestro — black-box инструмент, он общается с устройством через Accessibility API и не требует модификации кода. Это идеально для регресса ключевых пользовательских путей: регистрация, каталог, оформление заказа. Средний проект сокращает время регрессии на 70%, а стоимость поддержки тестов — на 40% по сравнению с Appium. Гарантируем: каждый тест проходит ревью и запускается на реальных устройствах.

Как Maestro упрощает жизнь мобильному разработчику?

Главное — нулевая конфигурация. Установил через curl, написал YAML, запустил maestro test. Не нужно поднимать Appium-сервер, встраивать агент или разбираться с XCUITest. Maestro сам находит элементы по тексту, accessibilityLabel или id. Для типовых приложений это покрывает 80–90% сценариев.

Как написать тест на Maestro: пошаговая инструкция

  1. Создайте YAML-файл в папке flows/.
  2. Укажите appId вашего приложения (bundle ID для iOS, package name для Android).
  3. Напишите последовательность действий: launchApp, tapOn, inputText, assertVisible.
  4. Используйте переменные и runFlow для переиспользования (см. пример ниже).
  5. Запустите тест командой maestro test flows/.

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

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

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

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

- tapOn: text: "Добавить" index: 1 - tapOn: id: "add_to_cart_button" 

id на Android — resource-id, на iOS — accessibilityIdentifier. Maestro определяет платформу автоматически.

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

Без переменных и runFlow большие тест-сьюты превращаются в копипасту. Создаём переиспользуемые блоки:

# 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: "Оформление заказа" 

Переменные переопределяются при запуске: maestro test --env [email protected].

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

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

curl -Ls "https://get.maestro.mobile.dev" | bash maestro test flows/ maestro studio 

maestro studio — браузерный UI для интерактивного выбора элементов.

Maestro Cloud

Для CI без собственных устройств используем Maestro Cloud. В 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 test.

Почему Maestro, а не Appium или Detox?

Мы часто слышим этот вопрос. Сравним в таблицах:

Критерий Maestro Appium Detox
Конфигурация Нет Нужен сервер Встраивание агента
Язык тестов YAML Java/Python/JS JS
Облачные устройства Maestro Cloud AWS Device Farm Firebase
Кастомные жесты Нет Да Да
Доступ к JS Нет Нет Да

Для стандартных CRUD-приложений Maestro выигрывает по скорости написания и поддержки.

Сценарий Срок (дни) Сложность
5–7 флоу (регистрация, каталог, заказ) 3 Низкая
Сложные многоэкранные сценарии 5 Средняя
Полный регресс (20+ флоу) 10 Высокая

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

Maestro не умеет в кастомные жесты: pinch, rotate, multi-touch. Для приложений с картами или галереей, где нужен зум — Appium или Detox. Нет прямого доступа к JavaScript-контексту (в отличие от Detox). Assertions ограничены видимостью (assertVisible, assertNotVisible). Проверить точное значение атрибута или координату элемента — нельзя.

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

Типичные ошибки новичков
  • Использование текста, который меняется (дата, время). Лучше использовать testID.
  • Забыли очистить состояние между тестами — используйте clearState: true.
  • Неправильный appId — проверьте bundle ID или package name.
  • Зависимость от порядка экранов — используйте runFlow с авторизацией.

Что входит в работу под ключ

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

Сроки и стоимость

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

Закажите разработку E2E-тестов — напишите нам, мы ответим в течение 2 часов. Получите консультацию по автоматизации регресса для вашего проекта.