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