Фреймворк для автоматизированного тестирования Qt/QML десктопного приложения Startcolor Desktop с использованием WinAppDriver, Selenium WebDriver, JUnit 5 и Allure Reports.
- Автозапуск WinAppDriver - не нужно запускать вручную
- Автопереключение раскладки на английскую через Windows API (JNA)
- Page Object Model для UI автоматизации
- Логирование в файлы с меткой времени (
target/logs/) - Allure отчёты для визуализации результатов
- Поддержка тегов для группировки тестов
- Java 17+
- Maven 3.8+
- WinAppDriver (устанавливается отдельно)
- Windows 10/11 с включённым Developer Mode
- Скачайте с GitHub Releases
- Установите в
C:\Program Files (x86)\Windows Application Driver\ - Включите Developer Mode:
- Settings → Update & Security → For developers → Developer mode
# Клонировать репозиторий
git clone <repository-url>
cd qt-desktop-autotests
# Проверить/изменить путь к приложению в config.properties
# src/test/resources/config.properties# Запустить все тесты (WinAppDriver запустится автоматически)
mvn clean test
# Запустить конкретную группу
mvn test -Dgroups=smoke
mvn test -Dgroups=critical
# Запустить конкретный тест-класс
mvn test -Dtest=ConnectionSettingsTests
mvn test -Dtest=LoginTests# Сгенерировать и открыть Allure отчёт
mvn allure:serve
# Логи находятся в target/logs/
# - latest.log - последний запуск
# - yyyy-MM-dd_HH-mm-ss-SSS.log - с меткой времени| Тег | Описание | Кол-во тестов |
|---|---|---|
smoke |
Критические smoke тесты | 5 |
critical |
Высокоприоритетные тесты | 10 |
settings |
Тесты настроек подключения | 12 |
login |
Тесты страницы логина | 5 |
persistence |
Тесты сохранения настроек | 3 |
# Один тег
mvn test -Dgroups=smoke
# Несколько тегов (логика ИЛИ)
mvn test -Dgroups="settings | login"
# Исключение тегов
mvn test -Dgroups="!persistence"# Путь к тестируемому приложению
app.path=C:\\StartcolorDesktop\\startcolor-desktop.exe
# WinAppDriver настройки
winappdriver.url=http://127.0.0.1:4723
winappdriver.timeout.implicit=10
# Опционально: путь к WinAppDriver.exe
# winappdriver.exe.path=C:\\Program Files (x86)\\Windows Application Driver\\WinAppDriver.exeqt-desktop-autotests/
├── docs/ # Документация
│ ├── ARCHITECTURE.md # Архитектура фреймворка
│ ├── RUN_INSTRUCTIONS.md # Детальные инструкции
│ └── TEST_CASES_MATRIX.md # Матрица тест-кейсов
├── src/
│ ├── main/
│ │ ├── java/com/yourcompany/
│ │ │ ├── config/ # Конфигурация
│ │ │ ├── driver/ # DriverFactory
│ │ │ ├── pages/ # Page Objects
│ │ │ ├── helpers/ # Хелперы
│ │ │ └── utils/ # Утилиты
│ │ └── resources/
│ │ └── logback.xml # Настройки логирования
│ └── test/
│ ├── java/com/yourcompany/
│ │ ├── tests/ # Тестовые классы
│ │ └── listeners/ # JUnit listeners
│ └── resources/
│ └── config.properties # Конфигурация
├── target/
│ ├── logs/ # Лог-файлы
│ └── allure-results/ # Результаты Allure
├── pom.xml
└── README.md
Логи записываются в target/logs/:
- latest.log - всегда содержит логи последнего запуска
- yyyy-MM-dd_HH-mm-ss-SSS.log - лог с меткой времени запуска
Формат лога:
2026-02-06 09:30:45.123 [main] INFO c.y.pages.ConnectionSettingsPage - Page loaded
Qt/QML элементы могут иметь нестандартные атрибуты:
- Name может быть пустым
- Текст часто в FullDescription
- Используем ClassName или AutomationId
// Пример: поле IP имеет пустое Name
private final By ipAddressFieldByClass = By.className("SCTextField_QMLTYPE_32");String state = element.getAttribute("Toggle.ToggleState");
boolean isOn = "1".equals(state) || "On".equalsIgnoreCase(state);- Запустите Inspect.exe (Windows SDK)
- Наведите на элемент
- Проверьте атрибуты: Name, ClassName, AutomationId
- Обновите локатор в Page Object
# Проверить установку
dir "C:\Program Files (x86)\Windows Application Driver"
# Запустить вручную для диагностики
"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe"| Документ | Описание |
|---|---|
| README.md | Обзор и быстрый старт |
| docs/ARCHITECTURE.md | Архитектура фреймворка |
| docs/RUN_INSTRUCTIONS.md | Детальные инструкции |
| docs/TEST_CASES_MATRIX.md | Матрица тест-кейсов |
| Компонент | Версия | Назначение |
|---|---|---|
| Java | 17+ | Язык программирования |
| Maven | 3.8+ | Сборка и зависимости |
| Selenium | 4.8.3 | WebDriver API |
| WinAppDriver | 1.2.1 | Windows UI автоматизация |
| JUnit 5 | 5.10.1 | Тестовый фреймворк |
| AssertJ | 3.25.1 | Fluent assertions |
| Allure | 2.25.0 | Отчётность |
| Logback | 1.4.14 | Логирование |
| JNA | 5.14.0 | Windows API |
| Lombok | 1.18.30 | Уменьшение boilerplate |
- Vitaliy Popravka - QA Automation Engineer