autoqa heisenbug demo
Проект дополняет доклад "UI-автоматизация тестирования мобильных приложений и интеграция их в CI-процесс" и демонстрирует возможную архитектуру проекта автотестов для мобильного приложения.
https://heisenbug-moscow.ru/2021/msk/talks/7ezu7wuwrkz1ryfzlzftgi/
Автор: Мирошниченко Михаил
email: hikari.no.mikem@gmail.com
LinkedIn: https://www.linkedin.com/in/miroshnichenkomichael/
Проект содержит Page Factory структуру для мобильного приложения с описанием двух экранов, и тест, использующий эти экраны. Присутствует библиотека с основными действиями над элементами и логгер для вывода сообщений в консоль. Также включены функции управления драйверами для локальной работы и в облаке, и команды для отправки сообщения с результатами тестирования в Slack.
Чтобы подготовить проект к использованию с реальынм кросс-платформенным приложением, следует:
- Реализовать удобное переключение Android/iOS версия приложения и соответсвующих драверов. Можно через параметр в suite
- Содать удобный способ хранения свойств приложения (имена пакетов, activity) и тестовых данных (например, пользователи)
- Подготовить Slack канал
- Зарегистрировать BrowserStack (или его аналог) облачный аккаунт и подключить его к проекту: https://www.browserstack.com
- Реализовать более удобное управлени Appium сервером при локальном тестировании
- Реализвать удобынй способ хранения информации об устройствах, на которых запускать тесты (модель, версия ОС)
- Больше информации с логах и сообщениях Slack
- Конфигурация пайплайнов сборки приложения с шагами прогона тестов: пример реализации есть в докладе
- Конфигурация GitHub Actions для сборки обраа и загрузки: пример в докладе
- Аккаунт BrowserStack: триал-доступ можно получить бесплатно на сайте.
- Шаги тестов содержат повторяющиеся блоки кода для вывода текстового лога и проверки результата действия над элементом. В проекте это сделано в демонстрационных целях для презентации. В реальном проекте можно автоматизировать вывод в лог имени текущего метода и подстановки его в сообщение об ошибке.
- В текущем варианте фреймворк выбирает, для какой платформы (Android или iOS) создавать драйвер, ориентируясь на параметр "deviceName". Если в нем присуствует слово "iphone" или "ipad", запустится iOS драйвер, в противном случае - Android. Для парктического применения можно добавить логику выбора драйвера в зависимости от продукта, а не имени устройства.