mirror of
https://github.com/wagoodman/dive
synced 2026-03-14 22:35:50 +01:00
- Improved mouse event handling in the filetree pane to correctly account for content offsets, ensuring proper scrolling and item selection. - Added comprehensive unit tests for the filetree pane, covering various states including empty tree, tree with items, focused state, and different dimensions. - Updated tree traversal logic to improve visual representation of nodes. - Introduced new test utilities for loading test image data and managing layout messages. - Added snapshot tests for image and layers panes to ensure consistent rendering across different states.
4.8 KiB
4.8 KiB
AGENTS.md
Инструкции для AI агентов, работающих с этим репозиторием.
🔥 КРИТИЧЕСКИ ВАЖНО: Snapshot тесты для UI
Почему это важно
В этом проекте используется snapshot тестирование для UI компонентов (TUI). Это критически важно для предотвращения случайных изменений в визуальной части приложения.
ВАЖНО: Любые изменения в коде UI могут сломать верстку. Snapshot тесты гарантируют, что дизайн останется стабильным.
Что делать ПЕРЕД внесением изменений в UI
НЕОБХОДИМО запустить snapshot тесты:
# Запустить тесты файлового дерева (ОБЯЗАТЕЛЬНО)
go test -v ./cmd/dive/cli/internal/ui/v2/panes/filetree
# Или все UI тесты сразу
go test -v ./cmd/dive/cli/internal/ui/v2/panes/...
Что делать ПОСЛЕ внесения изменений в UI
Если вы изменили что-то в UI (стили, верстку, отступы и т.д.):
-
ОБЯЗАТЕЛЬНО обновите snapshot файлы:
task unit-update-snapshots -
ПРОВЕРЬТЕ что изменения визуально корректны:
go test -v ./cmd/dive/cli/internal/ui/v2/panes/... -
УБЕДИТЕЛЬНО что все тесты проходят
Правила работы с UI кодом
✅ ДОПУСТИМЫЕ ИЗМЕНЕНИЯ:
- Изменение логики работы компонента (если визуально ничего не меняется)
- Оптимизация производительности
- Рефакторинг (если результат визуально идентичен)
- Добавление новых фич (с обновлением snapshot)
❌ ЗАПРЕЩЕНО:
- Вносить изменения в UI БЕЗ запуска тестов
- Игнорировать падающие snapshot тесты
- Обновлять snapshot файлы "на всякий случай" (только если есть реальные изменения)
Что делать если тесты падают
- Посмотрите на diff - тест покажет что именно изменилось
- Если изменениеEXPECTED (вы намеренно меняли дизайн):
- Обновите snapshot:
task unit-update-snapshots
- Обновите snapshot:
- Если изменение НЕОЖИДАНО (случайно сломали верстку):
- Исправьте код
- НЕ обновляйте snapshot файлы
Структура snapshot тестов
cmd/dive/cli/internal/ui/v2/panes/
├── filetree/
│ ├── pane.go
│ ├── pane_test.go # Тесты
│ └── __snapshots__/
│ └── pane_test.snap # Golden файлы (эталоны)
├── layers/
│ ├── pane.go
│ ├── pane_test.go
│ └── __snapshots__/
│ └── pane_test.snap
├── details/
│ ├── pane.go
│ ├── pane_test.go
│ └── __snapshots__/
│ └── pane_test.snap
└── image/
├── pane.go
├── pane_test.go
└── __snapshots__/
└── pane_test.snap
Дополнительные ресурсы
- Документация по snapshot тестам:
cmd/dive/cli/internal/ui/v2/panes/README.md - go-snaps documentation
Другие важные инструкции
Запуск всех тестов
# Все unit тесты
task unit
# Все тесты (unit + CLI)
task test
Проверка качества кода
# Форматирование
task format
# Линтинг
task lint
# Все проверки
task pr-validations
🚨 CHECKLIST для агента
Перед тем как сказать "я закончил", агент ДОЛЖЕН:
- Запустил
go test -v ./cmd/dive/cli/internal/ui/v2/panes/filetree - Если тесты падают → понял почему (случайное изменение или реальное)
- Если вносил изменения в UI → обновил snapshot файлы
- Все тесты проходят SUCCESSFULLY
НЕ ЗАБУДЬТЕ ПРО СNAPSHOT ТЕСТЫ! Это критически важно для стабильности UI! 🎨