Skip to content

Sherlock0731/qt-desktop-autotests

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Фреймворк автотестирования Qt Desktop приложения

Java JUnit Selenium Allure

Фреймворк для автоматизированного тестирования 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

Установка WinAppDriver

  1. Скачайте с GitHub Releases
  2. Установите в C:\Program Files (x86)\Windows Application Driver\
  3. Включите Developer Mode:
    • Settings → Update & Security → For developers → Developer mode

Быстрый старт

1. Клонирование и настройка

# Клонировать репозиторий
git clone <repository-url>
cd qt-desktop-autotests

# Проверить/изменить путь к приложению в config.properties
# src/test/resources/config.properties

2. Запуск тестов

# Запустить все тесты (WinAppDriver запустится автоматически)
mvn clean test

# Запустить конкретную группу
mvn test -Dgroups=smoke
mvn test -Dgroups=critical

# Запустить конкретный тест-класс
mvn test -Dtest=ConnectionSettingsTests
mvn test -Dtest=LoginTests

3. Просмотр отчётов

# Сгенерировать и открыть 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"

Конфигурация

config.properties

# Путь к тестируемому приложению
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.exe

Структура проекта

qt-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 приложений

Поиск элементов

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);

Отладка

Если элемент не находится

  1. Запустите Inspect.exe (Windows SDK)
  2. Наведите на элемент
  3. Проверьте атрибуты: Name, ClassName, AutomationId
  4. Обновите локатор в Page Object

Если WinAppDriver не запускается

# Проверить установку
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

Лицензия

License: MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages