fixes
Some checks failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
Some checks failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
This commit is contained in:
@@ -1,14 +1,87 @@
|
||||
# Testing Progress Report
|
||||
|
||||
## Текущий статус: Фаза 1.3 завершена! 🎉
|
||||
## Текущий статус: Фаза 1.6 завершена! 🎉
|
||||
|
||||
Дата: 2026-01-28 (обновлено #2)
|
||||
Все UI snapshot тесты готовы. Можно переходить к integration тестам.
|
||||
|
||||
Дата: 2026-01-28 (обновлено #4)
|
||||
|
||||
---
|
||||
|
||||
## ✅ Что сделано
|
||||
|
||||
### Фаза 1.3: Modals Snapshot Tests (100%) ✅
|
||||
### Фаза 1.4: Input Field Snapshot Tests (100%) ✅
|
||||
|
||||
**Файл**: `tests/input_field.rs` (7 тестов)
|
||||
|
||||
#### Snapshot тесты для поля ввода:
|
||||
- ✅ `snapshot_empty_input` — пустое поле ввода с плейсхолдером
|
||||
- ✅ `snapshot_input_with_text` — поле с текстом и курсором █
|
||||
- ✅ `snapshot_input_long_text_2_lines` — длинный текст на 2 строки
|
||||
- ✅ `snapshot_input_long_text_max_lines` — очень длинный текст (максимум 10 строк)
|
||||
- ✅ `snapshot_input_editing_mode` — режим редактирования с превью оригинального сообщения
|
||||
- ✅ `snapshot_input_reply_mode` — режим ответа с превью сообщения
|
||||
- ✅ `snapshot_input_search_mode` — поле поиска с query
|
||||
|
||||
#### Результаты:
|
||||
- **7 новых snapshot тестов** — все проходят ✅
|
||||
- **7 snapshots приняты** через `cargo insta accept`
|
||||
- **Все тесты проходят**: 90 тестов (21 chat_list + 19 input_field + 30 messages + 20 modals)
|
||||
|
||||
---
|
||||
|
||||
### Фаза 1.6: Screens Snapshot Tests (100%) ✅
|
||||
|
||||
**Файл**: `tests/screens.rs` (7 тестов)
|
||||
|
||||
#### Snapshot тесты для полных экранов:
|
||||
- ✅ `snapshot_loading_screen_default` — экран загрузки (дефолтный)
|
||||
- ✅ `snapshot_loading_screen_with_status` — экран загрузки со статусом
|
||||
- ✅ `snapshot_auth_screen_phone` — экран авторизации (ввод телефона)
|
||||
- ✅ `snapshot_auth_screen_code` — экран авторизации (ввод кода)
|
||||
- ✅ `snapshot_auth_screen_password` — экран авторизации (ввод пароля 2FA)
|
||||
- ✅ `snapshot_main_screen_empty` — главный экран (пустой список чатов)
|
||||
- ✅ `snapshot_main_screen_terminal_too_small` — предупреждение о маленьком терминале
|
||||
|
||||
#### Обновления TestAppBuilder:
|
||||
- ✅ Добавлен метод `status_message(message)` — установить статус для loading screen
|
||||
- ✅ Добавлен метод `auth_state(state)` — установить состояние авторизации
|
||||
- ✅ Добавлен метод `phone_input(phone)` — установить phone input
|
||||
- ✅ Добавлен метод `code_input(code)` — установить code input
|
||||
- ✅ Добавлен метод `password_input(password)` — установить password input
|
||||
- ✅ Добавлены поля: `status_message`, `auth_state`, `phone_input`, `code_input`, `password_input`
|
||||
- ✅ Обновлен `build()` — применяет auth состояние и inputs
|
||||
|
||||
#### Результаты:
|
||||
- **7 новых snapshot тестов** — все проходят ✅
|
||||
- **7 snapshots приняты** через `cargo insta accept`
|
||||
- **Все тесты проходят**: 127 тестов (21 chat_list + 19 input_field + 30 messages + 20 modals + 18 footer + 19 screens)
|
||||
|
||||
---
|
||||
|
||||
### Фаза 1.5: Footer Snapshot Tests (100%) ✅
|
||||
|
||||
**Файл**: `tests/footer.rs` (6 тестов)
|
||||
|
||||
#### Snapshot тесты для нижней панели:
|
||||
- ✅ `snapshot_footer_chat_list` — footer в списке чатов
|
||||
- ✅ `snapshot_footer_open_chat` — footer в открытом чате
|
||||
- ✅ `snapshot_footer_network_waiting` — footer с "⚠ Нет сети"
|
||||
- ✅ `snapshot_footer_network_connecting_proxy` — footer с "⏳ Прокси..."
|
||||
- ✅ `snapshot_footer_network_connecting` — footer с "⏳ Подключение..."
|
||||
- ✅ `snapshot_footer_search_mode` — footer в режиме поиска
|
||||
|
||||
#### Изменения:
|
||||
- ✅ Сделан `footer` модуль публичным в `src/ui/mod.rs`
|
||||
|
||||
#### Результаты:
|
||||
- **6 новых snapshot тестов** — все проходят ✅
|
||||
- **6 snapshots приняты** через `cargo insta accept`
|
||||
- **Все тесты проходят**: 96 тестов (21 chat_list + 19 input_field + 30 messages + 20 modals + 18 footer)
|
||||
|
||||
---
|
||||
|
||||
### Фаза 1.4: Input Field Snapshot Tests (100%) ✅
|
||||
|
||||
**Файл**: `tests/modals.rs` (8 тестов)
|
||||
|
||||
@@ -134,29 +207,35 @@
|
||||
|
||||
## 📊 Метрики
|
||||
|
||||
**Создано файлов**: 10
|
||||
**Создано файлов**: 13
|
||||
- 5 helpers
|
||||
- 4 test files (chat_list.rs, messages.rs, modals.rs)
|
||||
- 7 test files (chat_list.rs, messages.rs, modals.rs, input_field.rs, footer.rs, screens.rs)
|
||||
- 1 mod.rs
|
||||
|
||||
**Строк кода**: ~2200+
|
||||
**Строк кода**: ~2900+
|
||||
- test_data.rs: ~250 строк
|
||||
- fake_tdclient.rs: ~300 строк
|
||||
- snapshot_utils.rs: ~100 строк
|
||||
- app_builder.rs: ~280 строк (обновлён)
|
||||
- app_builder.rs: ~320 строк
|
||||
- chat_list.rs: ~150 строк
|
||||
- messages.rs: ~430 строк (обновлён)
|
||||
- messages.rs: ~430 строк
|
||||
- modals.rs: ~220 строк
|
||||
- input_field.rs: ~150 строк
|
||||
- footer.rs: ~120 строк
|
||||
- screens.rs: ~130 строк
|
||||
|
||||
**Тестов написано**: 35 snapshot + 12 helper = 47 тестов
|
||||
- All tests: 71 (включая helper tests internal)
|
||||
**Тестов написано**: 55 snapshot + 12 helper = 67 тестов
|
||||
- All tests: 127 (включая helper tests)
|
||||
|
||||
**Покрытие**:
|
||||
- Фаза 0: 8/8 ✅ (100%)
|
||||
- Фаза 1.1: 9/10 (90%)
|
||||
- Фаза 1.2: 18/19 (95%) ✅
|
||||
- Фаза 1.3: 8/8 ✅ (100%)
|
||||
- **Общий прогресс: 35/151 (23%)**
|
||||
- Фаза 1.2: 18/18 (100%) ✅
|
||||
- Фаза 1.3: 8/8 (100%) ✅
|
||||
- Фаза 1.4: 7/7 (100%) ✅
|
||||
- Фаза 1.5: 6/6 (100%) ✅
|
||||
- Фаза 1.6: 7/7 (100%) ✅
|
||||
- **Общий прогресс: 55/151 (36%)**
|
||||
|
||||
---
|
||||
|
||||
@@ -227,17 +306,33 @@ assert_eq!(client.sent_messages().len(), 1);
|
||||
|
||||
## 🚀 Следующие шаги
|
||||
|
||||
### Фаза 1.4: Input Field snapshots (7 тестов)
|
||||
- [ ] Пустое поле ввода
|
||||
- [ ] Поле ввода с текстом и курсором █
|
||||
- [ ] Поле ввода с длинным текстом (2 строки)
|
||||
- [ ] Поле ввода с длинным текстом (10 строк)
|
||||
- [ ] Режим редактирования (с превью)
|
||||
- [ ] Режим reply (с превью сообщения)
|
||||
- [ ] Режим поиска (с query)
|
||||
### Фаза 2: Integration Tests для логики (Приоритет: ВЫСОКИЙ)
|
||||
|
||||
### Фаза 2: Integration тесты
|
||||
После завершения всех snapshot тестов начать писать интеграционные тесты для логики.
|
||||
Все UI snapshot тесты завершены! Теперь можно переходить к интеграционным тестам:
|
||||
|
||||
#### 2.1 Send Message Flow (6 тестов)
|
||||
- [ ] Отправка текстового сообщения
|
||||
- [ ] Отправка сообщения обновляет UI
|
||||
- [ ] Отправка пустого сообщения игнорируется
|
||||
- [ ] Отправка с markdown форматированием
|
||||
- [ ] Счётчик непрочитанных обнуляется при открытии чата
|
||||
- [ ] Новое сообщение появляется в реальном времени
|
||||
|
||||
#### 2.2 Edit Message Flow (6 тестов)
|
||||
- [ ] ↑ при пустом инпуте активирует режим выбора
|
||||
- [ ] Enter в режиме выбора начинает редактирование
|
||||
- [ ] Изменение текста и Enter сохраняет
|
||||
- [ ] Esc отменяет редактирование
|
||||
- [ ] Редактирование только своих сообщений
|
||||
- [ ] Индикатор ✎ появляется после редактирования
|
||||
|
||||
#### 2.3 Delete Message Flow (6 тестов)
|
||||
- [ ] d в режиме выбора открывает модалку
|
||||
- [ ] y в модалке удаляет сообщение
|
||||
- [ ] n в модалке отменяет удаление
|
||||
- [ ] Esc отменяет удаление
|
||||
- [ ] Сообщение исчезает из списка после удаления
|
||||
- [ ] Удаление только своих сообщений
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user