OTUS Homework 7: Mobile Testing

Проект содержит мобильные UI-тесты для приложения Wishlist на базе selenide-appium.

Реализованы сценарии:

  • создание и редактирование списка желаний;
  • создание и редактирование подарка;
  • изменение статуса резервирования подарка другого пользователя.

Архитектура

  • Guice для DI.
  • JUnit 5 Extension вместо базового тестового класса.
  • AbsPageObject -> AbsBasePage / BaseMobileComponent.
  • BlockingQueue для распределения тестов по эмуляторам.
  • код инфраструктуры и page object находится в src/main/java;
  • в src/test/java находятся только тестовые классы.

Инфраструктура

docker-compose.yml поднимает:

  • wiremock для раздачи wishlist.apk;
  • android-emulator-1 (Android 13, Appium :4723, VNC :6080);
  • android-emulator-2 (Android 12, Appium :4725, VNC :6081).

Приложение не маунтится в эмулятор и не ставится через ADB. APK скачивается Appium по capability app. Источник APK для Wiremock: файл wishlist-349317-5fd795.apk в корне проекта. Эмулятор запускается без privileged, доступ к аппаратной виртуализации передается через /dev/kvm.

Тестовые аккаунты

Тесты используют заранее созданные аккаунты:

  • user1us / user1us
  • user2us / user2us
  • user3us / user3us
  • user4us / user4us

user4us используется как владелец подарка в тесте резервирования.

Подготовка

Нужно задать доступ к БД, иначе mvn test завершится ошибкой:

$env:DB_URL="jdbc:postgresql://sql.otus.kartushin.su:5432/wishlist"
$env:DB_USER="student"
$env:DB_PASSWORD="student"

Запуск

  1. Поднять окружение:
docker compose up -d
  1. Дождаться статуса healthy у wiremock, android-emulator-1, android-emulator-2:
docker compose ps

Тесты не ждут загрузку эмулятора сами. Готовность окружения проверяется на уровне Docker Compose.

  1. Запустить тесты:
mvn test

По умолчанию тесты запускаются параллельно на уровне классов (2 потока), а сессии распределяются по эмуляторам через BlockingQueue.

Опционально можно явно задать пул эмуляторов:

$env:MOBILE_EMULATORS="android-emulator-1|http://localhost:4723|Android Emulator,android-emulator-2|http://localhost:4725|Android Emulator"

Логи

После выполнения тестов logcat сохраняется в файл logcat.txt в корне проекта через Selenium/Appium logs API.

S
Description
No description provided
Readme 9.2 MiB
Languages
Java 100%