3.9 KiB
3.9 KiB
OTUS Homework 7: Mobile Testing
Проект содержит мобильные UI-тесты приложения Wishlist на selenide-appium.
Сценарии:
- создание/редактирование списка желаний;
- создание/редактирование подарка;
- изменение статуса резервирования подарка другого пользователя.
Что реализовано по требованиям
docker-composeподнимаетwiremockи 2 Android-эмулятора (android-emulator-1,android-emulator-2) для параллельного запуска.- APK хранится в
wiremock/__files/wishlist.apkи устанавливается через Appium capabilityapp. - DI на
Guice, запуск черезJUnit 5 Extension, балансировка эмуляторов черезBlockingQueue. - Подготовка тестовых данных выполняется через JDBC перед каждым тестом.
- Логи
logcatсохраняются вlogcat.txtчерез Appium logs API (без ADB-скриптов).
Структура
src/main/java— инфраструктура, конфиги, page/component object.src/test/java— только тестовые классы.wiremock— маппинги и APK.
Запуск
- Поднять окружение:
docker compose up -d
- Убедиться, что сервисы
wiremock,android-emulator-1,android-emulator-2имеют статусhealthy:
docker compose ps
- Подготовить переменные окружения (использовать один из вариантов):
Вариант A: через .env
- скопировать
.env.exampleв.env; - заполнить
.envактуальными значениями вашей среды; - загрузить
.envв текущую shell-сессию.
PowerShell:
Get-Content .env | Where-Object { $_ -match '^[^#].+=.+' } | ForEach-Object {
$name, $value = $_ -split '=', 2
[System.Environment]::SetEnvironmentVariable($name, $value, 'Process')
}
bash:
set -a
source .env
set +a
Вариант B: напрямую в shell-сессии
PowerShell:
$env:DB_URL="jdbc:postgresql://<host>:<port>/<db>"
$env:DB_USER="<db_user>"
$env:DB_PASSWORD="<db_password>"
$env:WISHLISTS_USERNAME="<login_1>"
$env:WISHLISTS_PASSWORD="<password_1>"
$env:GIFTS_USERNAME="<login_2>"
$env:GIFTS_PASSWORD="<password_2>"
$env:RESERVATION_USERNAME="<login_3>"
$env:RESERVATION_PASSWORD="<password_3>"
$env:RESERVATION_OWNER="<login_owner>"
bash:
export DB_URL="jdbc:postgresql://<host>:<port>/<db>"
export DB_USER="<db_user>"
export DB_PASSWORD="<db_password>"
export WISHLISTS_USERNAME="<login_1>"
export WISHLISTS_PASSWORD="<password_1>"
export GIFTS_USERNAME="<login_2>"
export GIFTS_PASSWORD="<password_2>"
export RESERVATION_USERNAME="<login_3>"
export RESERVATION_PASSWORD="<password_3>"
export RESERVATION_OWNER="<login_owner>"
Оба варианта эквивалентны: тесты используют переменные окружения процесса.
Тесты запускаются параллельно по классам (2 потока) и распределяются по эмуляторам через очередь. 4. Запустить тесты:
mvn test
Примечание: если нужен запуск только на одном эмуляторе, можно поднять только wiremock и android-emulator-1, а перед mvn test задать:
PowerShell:
$env:MOBILE_EMULATORS="android-emulator-1|http://127.0.0.1:4723|Android Emulator"
bash:
export MOBILE_EMULATORS="android-emulator-1|http://127.0.0.1:4723|Android Emulator"