Первый шаг — установка и настройка в условиях ограниченного доступа. Официальная документация предполагает установку через Homebrew (macOS) или curl-скрипт. В случае проблем с доступом к репозиториям, скачайте последний релиз напрямую с GitHub (репозиторий `mobile-dev-inc/maestro`). Это единственный бинарный файл (для Linux/macOS) или .exe (для Windows). Поместите его в папку, прописанную в PATH. Для тестирования iOS-приложений вам потребуется Xcode и симуляторы. Для Android — Android Studio, SDK и эмулятор (или физическое устройство с включенным режимом отладки). Maestro не требует отдельно установленного Appium сервера, что упрощает конфигурацию.
Идеология Maestro — «тестирование как код», но в максимально декларативном виде. Тест — это YAML-файл. Это одновременно и сила, и слабость. Сила — в простоте. Любой QA-инженер или даже проджект-менеджер может прочитать и понять сценарий. Слабость — для сложных, динамичных проверок может потребоваться использование плагинов (через JavaScript/TypeScript), что пока развивается. Стартуем с создания файла `test.yaml`. Базовый сценарий для типичного российского приложения с авторизацией по номеру телефона может выглядеть так.
appId: ru.yourapp.client // Пакет Android или Bundle ID iOS
---
- launchApp
- assertVisible: "Добро пожаловать"
- tapOn: "Войти по номеру телефона"
- inputText: "+7 999 123-45-67" // Ввод тестового номера
- tapOn: "Получить код"
- runFlow: // Под-сценарий для ввода кода из SMS
commands:
- inputText: "0000" // Заглушка для тестового кода
- tapOn: "Подтвердить"
- assertVisible: "Главный экран"
Работа с нативными компонентами и российскими сервисами. При тестировании интеграций с типичными для Рунета сервисами (например, карты 2GIS/Yandex Maps, онлайн-кассы, банковские SDK) важно помнить: Maestro работает на уровне UI. Он не может «замокать» ответ от карт или банковского приложения. Поэтому для e2e-тестов вам потребуется тестовое окружение (stage/development) вашего бэкенда, где платежи и геокодирование работают в режиме заглушек. Для симуляции действий вне вашего приложения (например, возврат из нативного файл-пикера или системного диалога разрешений) используйте команды `back` или `pressKey` (например, `HOME`).
Организация тестовой инфраструктуры. Создайте отдельную директорию `maestro` в корне проекта. Внутри организуйте папки: `flows` (основные сценарии), `utils` (общие под-сценарии, например, `auth.yaml`), `plugins` (для кастомного JS-кода). Запуск тестов осуществляется командой `maestro test `. Для интеграции в CI/CD (например, GitLab CI или Jenkins на российском хостинге) вам нужно будет установить Maestro на раннере, запустить эмулятор/симулятор (через `xcrun simctl` или `emulator`), собрать приложение в тестовом режиме и запустить тесты. Учитывайте, что для iOS-сборки потребуется macOS-раннер.
Генерация отчетов и отладка. Maestro по умолчанию выводит логи в консоль. Для наглядных отчетов используйте команду `maestro test --format junit` для экспорта в JUnit-формат, который понимают многие CI-системы и можно визуализировать. Для отладки неудачных тестов используйте `maestro studio`. Эта команда запустит интерактивный режим на подключенном устройстве, где вы можете просматривать иерархию элементов, записывать действия и сразу видеть сгенерированный YAML-код. Это незаменимый инструмент для написания и починки тестов.
Maestro — это не панацея, а эффективный инструмент, который особенно актуален в текущих условиях. Его низкий порог входа, скорость и независимость от сложных инфраструктурных сервисов позволяют российским командам быстро внедрить стабильное e2e-тестирование. Начните с критических пользовательских сценариев (онбординг, основная покупка), пишите тесты, устойчивые к изменениям через `testID`, и интегрируйте их в процесс сборки. Это значительно повысит надежность вашего мобильного приложения и сэкономит время на ручном тестировании перед каждым релизом.
Комментарии (15)