Многопоточный фреймворк для автоматизации UI-тестирования веб-приложений с использованием современного стека технологий.
- Java 17 - язык программирования
- Maven - система сборки и управления зависимостями
- JUnit 5 - фреймворк для тестирования
- Selenide - удобная обертка над Selenium WebDriver
- Selenium WebDriver - автоматизация браузеров
- WebDriverManager - автоматическое управление драйверами браузеров
- AssertJ - fluent assertions библиотека
- Allure Report - система отчетности
- Lombok - уменьшение boilerplate кода
- SLF4J/Logback - логирование с поддержкой многопоточности
- Owner - управление конфигурациями
- Docker - контейнеризация
- GitHub Actions - CI/CD pipeline
qa-ui-framework/
├── src/
│ ├── main/
│ │ ├── java/qa/autotest/
│ │ │ ├── app/dto/ # Data Transfer Objects
│ │ │ ├── pages/ # Page Object Model
│ │ │ └── framework/ # Core framework
│ │ │ ├── drivers/ # WebDriver management
│ │ │ └── config/ # Configuration
│ │ └── resources/
│ │ ├── config/ # Environment configs
│ │ └── logback.xml # Logging config
│ └── test/
│ ├── java/examples/ # Test cases
│ │ ├── login/ # Login tests
│ │ ├── inventory/ # Inventory tests
│ │ ├── cart/ # Cart tests
│ │ ├── checkout/ # Checkout tests
│ │ └── navigation/ # Navigation tests
│ └── resources/
├── docker/ # Docker configs
│ ├── Dockerfile
│ └── docker-compose.yml
├── .github/workflows/ # CI/CD pipelines
│ ├── test-all.yml
│ ├── test-login.yml
│ ├── test-inventory.yml
│ ├── test-cart.yml
│ ├── test-checkout.yml
│ └── test-navigation.yml
├── docs/ # Documentation
└── pom.xml # Maven config
- Java 17 или выше
- Maven 3.8+
- Docker (опционально)
# Клонировать репозиторий
git clone <repository-url>
cd qa-ui-framework
# ======================================
# ПОСЛЕДОВАТЕЛЬНОЕ ВЫПОЛНЕНИЕ (по умолчанию)
# ======================================
# Запустить все тесты (один тест за раз, один браузер)
mvn clean test
# Явно указать последовательный режим
mvn clean test -Psequential
# ======================================
# ПАРАЛЛЕЛЬНОЕ ВЫПОЛНЕНИЕ
# ======================================
# Запустить тесты с 3 потоками (3-4 браузера одновременно)
mvn clean test -Pparallel -Dthread.count=3
# Запустить тесты с 5 потоками (5-6 браузеров одновременно)
mvn clean test -Pparallel -Dthread.count=5
# Запустить тесты с 10 потоками (10-11 браузеров одновременно)
mvn clean test -Pparallel -Dthread.count=10
# ВАЖНО: может быть N±1 браузеров кратковременно (это нормально!)
# ======================================
# ЗАПУСК ПО ГРУППАМ ТЕСТОВ
# ======================================
# Запустить только login тесты
mvn clean test -Plogin
# Запустить только inventory тесты
mvn clean test -Pinventory
# Запустить только cart тесты
mvn clean test -Pcart
# Запустить только checkout тесты
mvn clean test -Pcheckout
# Запустить только navigation тесты
mvn clean test -Pnavigation
# Запустить smoke тесты
mvn clean test -Psmoke
# Smoke тесты параллельно в 3 потока
mvn clean test -Psmoke,parallel -Dthread.count=3
# ======================================
# ALLURE ОТЧЕТЫ
# ======================================
# Сгенерировать и открыть Allure отчет
mvn allure:serveВажно:
- По умолчанию тесты запускаются последовательно (один браузер за раз)
- Для параллельного запуска обязательно используйте профиль
-Pparallel - Параметр
-Dthread.countработает только с профилем-Pparallel - Без
-Pparallelбудет открываться только один браузер, независимо от-Dthread.count - При параллельном запуске может быть N±1 браузеров кратковременно (это нормальное поведение JUnit 5)
# Chrome (default)
mvn clean test -Pbrowser=chrome
# Firefox
mvn clean test -Pbrowser=firefox
# Edge
mvn clean test -Pbrowser=edge
# Safari (только macOS)
mvn clean test -Pbrowser=safari
# Headless mode
mvn clean test -Pheadless# Запустить все тесты
docker-compose -f docker/docker-compose.yml up
# Запустить с параметрами
THREAD_COUNT=4 TEST_GROUPS=login docker-compose -f docker/docker-compose.yml upСоздайте файл .env в корне проекта:
# Application URL
SAUCEDEMO_BASE_URL=[нужное значение]
# User Credentials
USER_STANDARD_USERNAME=[нужное значение]
USER_STANDARD_PASSWORD=[нужное значение]
USER_LOCKED_USERNAME=[нужное значение]
USER_LOCKED_PASSWORD=[нужное значение]
# Checkout Information
CHECKOUT_FIRSTNAME=[нужное значение]
CHECKOUT_LASTNAME=[нужное значение]
CHECKOUT_ZIPCODE=[нужное значение]
# Browser Configuration
BROWSER=chrome
BROWSER_HEADLESS=false
THREAD_COUNT=1- ✅ Chrome (Windows, Linux, macOS)
- ✅ Firefox (Windows, Linux, macOS)
- ✅ Edge (Windows, macOS)
- ✅ Safari (macOS)
Фреймворк полностью поддерживает многопоточное выполнение тестов:
# Запустить с 8 потоками
mvn clean test -Pparallel -Dthread.count=8Каждый поток создает свой экземпляр WebDriver и имеет отдельный лог-файл.
Проект интегрирован с GitHub Actions для автоматического запуска тестов:
- test-all.yml - запуск всех тестов
- test-login.yml - только login тесты
- test-inventory.yml - только inventory тесты
- test-cart.yml - только cart тесты
- test-checkout.yml - только checkout тесты
- test-navigation.yml - только navigation тесты
После выполнения тестов генерируются:
- Allure Report - подробная визуализация результатов
- Логи - детальная информация о выполнении (target/logs/)
- Screenshots - скриншоты при падении тестов (target/screenshots/)
Подробная документация доступна в папке docs/:
- Архитектура
- Примеры команд
- Инструкция по запуску
- Параллельное выполнение тестов
- Настройка WebDriver
- Матрица тест-кейсов
- Vitaliy Popravka - QA Automation Engineer
Для вопросов и предложений создавайте Issue в репозитории.