# План: Інтеграційне тестування GUI за допомогою egui_kittest (Варіант 2)

## Огляд
Цей план передбачає впровадження інтеграційного тестування інтерфейсу користувача. Ми будемо використовувати `egui_kittest` для емуляції дій користувача (введення тексту, натискання кнопок) та перевірки реакції UI без необхідності запуску реального графічного вікна.

## Зміни в архітектурі
1. **Тестове середовище**: Використання `kittest::Harness` для огортання `EguiPinger`.
2. **Залежності**: Додавання `egui_kittest` у `dev-dependencies`.

## Етапи реалізації

### 1. Підготовка інфраструктури тестування
- [x] Додати `egui_kittest = "0.31"` (або сумісну версію) до `Cargo.toml`.
- [x] Винести `EguiPinger::update` та інші UI-методи так, щоб вони були доступні для тестів (за потреби зробити структуру `EguiPinger` та її поля публічними в межах крейту).

### 2. Реалізація базових UI-тестів
- [x] **Тест додавання хоста**:
    - [x] Заповнити поле "Host name".
    - [x] Заповнити поле "Host address".
    - [x] Натиснути кнопку "Add".
    - [x] Перевірити, чи з'явився новий елемент у списку.
    - [x] Перевірити, чи очистилися поля введення.
- [x] **Тест видалення хоста**:
    - [x] Додати хост.
    - [x] Знайти кнопку "x" для цього хоста.
    - [x] Натиснути кнопку.
    - [x] Перевірити, чи зник хост зі списку.
- [x] **Тест валідації**:
    - [x] Спробувати натиснути "Add" з порожньою адресою.
    - [x] Перевірити, що список хостів не змінився.

### 3. Тестування динамічних станів
- [x] **Тест відображення статусів**:
    - [x] Емулювати зміну стану в `SharedState` (наприклад, встановити `latency = 150.0`).
    - [x] Перевірити, чи текст в UI змінився на відповідне значення.
    - [x] Перевірити (якщо можливо через AccessKit), чи змінилися метадані кольору або стилю.

### 4. Верифікація
- [x] Запустити `cargo test` і переконатися, що всі інтеграційні тести проходять успішно.

## Критерії успіху
- Основні сценарії взаємодії користувача з додатком автоматизовані.
- Тести запускаються швидко в CI/CD середовищі без X11/Wayland.
- Виправлення багів у UI можна верифікувати автоматично.
