Files
homework_7/README.md
T

78 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.