dive/AGENTS.md
Aslan Dukaev 83a648b3ef feat: enhance filetree pane interaction and add tests
- 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.
2026-01-16 12:25:43 +03:00

4.8 KiB
Raw Blame History

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 (стили, верстку, отступы и т.д.):

  1. ОБЯЗАТЕЛЬНО обновите snapshot файлы:

    task unit-update-snapshots
    
  2. ПРОВЕРЬТЕ что изменения визуально корректны:

    go test -v ./cmd/dive/cli/internal/ui/v2/panes/...
    
  3. УБЕДИТЕЛЬНО что все тесты проходят

Правила работы с UI кодом

ДОПУСТИМЫЕ ИЗМЕНЕНИЯ:

  • Изменение логики работы компонента (если визуально ничего не меняется)
  • Оптимизация производительности
  • Рефакторинг (если результат визуально идентичен)
  • Добавление новых фич (с обновлением snapshot)

ЗАПРЕЩЕНО:

  • Вносить изменения в UI БЕЗ запуска тестов
  • Игнорировать падающие snapshot тесты
  • Обновлять snapshot файлы "на всякий случай" (только если есть реальные изменения)

Что делать если тесты падают

  1. Посмотрите на diff - тест покажет что именно изменилось
  2. Если изменениеEXPECTED (вы намеренно меняли дизайн):
    • Обновите snapshot: task unit-update-snapshots
  3. Если изменение НЕОЖИДАНО (случайно сломали верстку):
    • Исправьте код
    • НЕ обновляйте 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! 🎨