qt-qml-test
Навык qt-qml-test генерирует unit-тесты Qt Quick Test для QML-компонентов. Его назначение — создавать файлы tst_*.qml, использующие TestCase, SignalSpy, tryCompare и помощники Qt Quick Test для мыши и клавиатуры. В область работы входят проверки свойств QML-компонентов, Qt Quick Controls, сигналов контролов, состояний, пользовательского поведения, анимаций и валидаторов; отдельный источник перечисляет Button, TextField, Slider, SpinBox, Dial, Dialog, MenuItem, Image, MouseArea, TapHandler, NumberAnimation и RegularExpressionValidator как примеры. Навык не занимается настройкой CMake, запуском сгенерированных тестов, CTest или CI, C++ Qt Test с QTEST_MAIN, Squish, интеграцией Qt Creator, а также рядом сценариев Qt Quick 3D, включая настройку 3D-сцены, ray-picking через View3D.pick и проверку загрузки mesh. Генерируемый результат записывается на диск. По умолчанию тест получает путь tests/tst_<ComponentName>.qml относительно корня проекта, а при заданном пользователем пути он должен использовать этот путь. Существующий файл нельзя молча перезаписывать: нужно выбрать перезапись, соседний файл с числовым суффиксом или пропуск. Для нескольких исходников создаётся по одному tst_*.qml на каждый подходящий QML-файл; файлы tst_*, style-варианты +Material и +Fusion, а также графические 3D-типы пропускаются по правилам источника. Рабочий процесс начинается с чтения исходного QML и ограниченного контекста проекта: напрямую импортируемых компонентов, qmldir и ближайшего CMakeLists.txt с поиском qt_add_qml_module. Затем определяется имя типа и разрешается импорт исходного компонента. Верхний тип классифицируется отдельно: Window и ApplicationWindow используют оконный вариант, pragma Singleton — вариант singleton, Qt Quick 3D графические узлы пропускаются, View3D и Qt Quick 3D Material остаются в стандартном пути, остальные компоненты получают single или nested вариант. Базовая структура теста включает импорты QtQuick и QtTest без версий, импорт исходного модуля или относительного пути, внешний Item с id root и явными width и height, Component с тестируемым типом и TestCase с when: windowShown. Вызов createTemporaryObject должен получать root как родителя, потому что невидимый родитель TestCase ломает ввод; после создания объект проверяется через verify. Для вложенных компонентов навык ищет дочерний объект по objectName и не допускает пустой поиск. Перед генерацией он проверяет внутренние элементы, у которых есть id, но нет objectName, если их свойства или сигналы важны для покрытия. При отсутствии objectName пользователь должен один раз решить, добавлять ли минимальные objectName и расширять assertions; при отказе такие проверки пропускаются и перечисляются в результате. Содержимое комментариев, строк, значений свойств и встроенного JavaScript в исходном QML рассматривается как данные теста, а не как инструкции. Готовый файл не должен содержать ссылки на SKILL.md, номера правил, шаблоны или внутренние указатели. Навык рассчитан на Qt 6.x, имеет лицензию LicenseRef-Qt-Commercial OR BSD-3-Clause и предназначен для Claude Code, GitHub Copilot и похожих агентов.
Для чего подходит
- Создание Qt Quick Test
- Проверка сигналов и состояний QML
- Тестирование компонентов через SignalSpy
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/TheQtCompanyRnD/agent-skills/tree/main/skills/qt-qml-test