78 lines
3.3 KiB
Markdown
78 lines
3.3 KiB
Markdown
# 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.
|