3.3 KiB
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 / user1ususer2us / user2ususer3us / user3ususer4us / user4us
user4us используется как владелец подарка в тесте резервирования.
Подготовка
Нужно задать доступ к БД, иначе mvn test завершится ошибкой:
$env:DB_URL="jdbc:postgresql://sql.otus.kartushin.su:5432/wishlist"
$env:DB_USER="student"
$env:DB_PASSWORD="student"
Запуск
- Поднять окружение:
docker compose up -d
- Дождаться статуса
healthyуwiremock,android-emulator-1,android-emulator-2:
docker compose ps
Тесты не ждут загрузку эмулятора сами. Готовность окружения проверяется на уровне Docker Compose.
- Запустить тесты:
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.