Skip to content

Sherlock0731/qa-ui-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UI Test Automation Framework

Java JUnit Selenide Allure

Tests
Allure Report

Многопоточный фреймворк для автоматизации 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

# Запустить все тесты
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 и имеет отдельный лог-файл.

CI/CD

Проект интегрирован с 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 тесты

Отчеты

После выполнения тестов генерируются:

  1. Allure Report - подробная визуализация результатов
  2. Логи - детальная информация о выполнении (target/logs/)
  3. Screenshots - скриншоты при падении тестов (target/screenshots/)

Документация

Подробная документация доступна в папке docs/:

License

License: MIT

Authors

  • Vitaliy Popravka - QA Automation Engineer

Контакты

Для вопросов и предложений создавайте Issue в репозитории.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •