Паттерны тестирования ui в compose
Use when writing or reviewing Jetpack Compose UI tests, screenshot tests, previews, semantics assertions, fake image loading, keyboard input, focus assertions, interaction state (hover/pressed/focused), or tests for plain state-driven UI composables.
Что делает навык
Набор паттернов для написания UI-тестов в Jetpack Compose, позволяющий проверять поведение интерфейса через минимальные контракты состояния, семантику и визуальные снимки. Решает задачу изоляции тестов от сложной инфраструктуры (DI, навигация, асинхронность) для повышения их надежности и скорости.
Когда применять
- Проверка отображения текста, кнопок, ветвлений загрузки/ошибок и условного контента.
- Тестирование взаимодействия с клавиатурой, навигации фокуса и состояний наведения/нажатия.
- Визуальное тестирование макета, цветов, типографики, теней и композиции изображений через скриншоты.
- Проверка корректности обновления UI при изменении состояния держателя состояния (state holder).
- Имитация загрузки изображений для изоляции тестов от внешних сервисов или проверки запросов моделей.
Как работает
- Определите поведение и конкретный аспект, который необходимо проверить, выбрав минимальный достаточный «шов» (seam) из таблицы паттернов.
- Используйте plain UI Compose тесты с controlled state и колбэками, избегая построения графов зависимостей или ViewModels, если они не являются объектом теста.
- Применяйте утверждения семантики (onNodeWithText, assertIsEnabled, assertDoesNotExist) и тестовые теги для узлов без стабильного текста.
- Для проверки взаимодействия используйте MutableInteractionSource вместо имитации указателя, а для клавиатуры — ввод ключей с проверкой семантики фокуса.
- При скриншот-тестах обеспечьте детерминированность состояния, заменив сетевые изображения фейковыми загрузчиками и заморозив анимации.
- Синхронизируйте Compose через waitForIdle или runOnIdle перед утверждениями, избегая Thread.sleep, и завершайте тест без изменений, если он уже корректен.
Примеры запросов агенту
Что понадобится
- Среда выполнения Jetpack Compose и тестовый фреймворк (composeTestRule)
- Инструменты для создания скриншотов (Screenshot tests)
- Библиотека для загрузки изображений (для настройки фейковых загрузчиков)
Описание составлено по SKILL.md навыка, сверено 05.10.2026.
Как подключить
SKILL.md к навыкам ассистентаНавык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.