Initial commit: MVP structure + Cursor documentation + Onboarding components
This commit is contained in:
273
docs/cursor/07_testing_checklist_mvp.md
Normal file
273
docs/cursor/07_testing_checklist_mvp.md
Normal file
@@ -0,0 +1,273 @@
|
||||
# 07 — Testing Checklist (MVP)
|
||||
|
||||
Цей документ визначає мінімальний набір тестів, необхідних для перевірки MVP MicroDAO.
|
||||
Він створений на основі повного QA Test Plan, але сфокусований на ключових флоу.
|
||||
|
||||
## 1. Environment
|
||||
|
||||
Тестувати на:
|
||||
|
||||
- Desktop ≥1280px
|
||||
- Chrome (останній)
|
||||
- Safari (останній)
|
||||
- Firefox ESR (опціонально)
|
||||
|
||||
Мова інтерфейсу: uk-UA
|
||||
Часовий пояс: Europe/Kyiv
|
||||
|
||||
## 2. Critical End-to-End Tests (обов'язково)
|
||||
|
||||
### E2E-01 — Magic-link login
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Ввести email у форму логіну.
|
||||
2. Отримати код/лінк.
|
||||
3. Авторизуватися.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /auth/login-email → 204`
|
||||
- `POST /auth/exchange → 200`
|
||||
- Користувач потрапляє у `/onboarding`
|
||||
|
||||
### E2E-02 — Створення спільноти
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Onboarding Step 2: ввести назву.
|
||||
2. Натиснути "Продовжити".
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /teams → 201`
|
||||
- Зберігається `teamId`
|
||||
- Перехід до Step 3
|
||||
|
||||
### E2E-03 — Вибір режиму (Public / Confidential)
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. На Step 3 обрати режим.
|
||||
2. Натиснути "Вибрати режим".
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `PATCH /teams/{id} → 200`
|
||||
- У state онбордингу режим оновлено
|
||||
|
||||
### E2E-04 — Створення першого каналу
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Step 4: назва "general".
|
||||
2. Тип: public.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /channels → 201`
|
||||
- `channelId` збережено
|
||||
- Перехід до Step 5
|
||||
|
||||
### E2E-05 — Увімкнення приватного агента
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Step 5 → toggle ON
|
||||
2. Натиснути "Готово"
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /agents → 201`
|
||||
- Агент видимий у списку `/agents`
|
||||
|
||||
### E2E-06 — Фінальний redirect
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Step 6 → "Перейти в чат"
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- Перенаправлення на `/t/:teamId/c/:channelId`
|
||||
- Відображено стрічку повідомлень
|
||||
|
||||
## 3. Chat Tests
|
||||
|
||||
### CHAT-01 — Відправка повідомлення
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Ввести текст.
|
||||
2. Натиснути "Надіслати".
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /channels/{id}/messages → 201`
|
||||
- Повідомлення зʼявляється у стрічці без reload
|
||||
|
||||
### CHAT-02 — Пагінація стрічки (cursor)
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Прокрутити догори.
|
||||
2. Завантаження старих повідомлень.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `GET /messages?cursor=...`
|
||||
- Нові елементи додаються на початок
|
||||
|
||||
### CHAT-03 — Публічний канал для гостей
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Відкрити `/c/:slug` в режимі інкогніто.
|
||||
2. Переглянути стрічку.
|
||||
3. Спробувати відправити повідомлення.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- Read-only режим
|
||||
- Кнопка "Приєднатися до спільноти"
|
||||
|
||||
## 4. Follow-ups Tests
|
||||
|
||||
### FU-01 — Створення follow-up
|
||||
|
||||
**Кроки:**
|
||||
|
||||
1. Клік по меню повідомлення → "Створити follow-up".
|
||||
2. Заповнити форму.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /followups → 201`
|
||||
- Follow-up у списку `/followups`
|
||||
|
||||
### FU-02 — Список follow-ups
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `GET /followups` працює
|
||||
- Фільтрація по статусу
|
||||
|
||||
## 5. Projects & Tasks
|
||||
|
||||
### PRJ-01 — Створення проєкту
|
||||
|
||||
**Кроки:**
|
||||
|
||||
- Натиснути "Новий проєкт".
|
||||
- Ввести назву.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /projects → 201`
|
||||
- Проєкт у списку
|
||||
|
||||
### TASK-01 — Створення задачі
|
||||
|
||||
**Кроки:**
|
||||
|
||||
- Додати нову задачу в Backlog.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `POST /projects/{id}/tasks → 201`
|
||||
- Задача показана у колонці
|
||||
|
||||
### TASK-02 — Зміна статусу задачі
|
||||
|
||||
**Кроки:**
|
||||
|
||||
- Клікнути задачу → змінити статус.
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- Статус змінений у UI
|
||||
- API можна stub (MVP)
|
||||
|
||||
## 6. Agents
|
||||
|
||||
### AG-01 — Список агентів
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- `GET /agents` ще до онбордингу повертає 0
|
||||
- Після Step 5 → ≥1
|
||||
|
||||
### AG-02 — Чат із агентом (stub)
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- Агент відповідає на повідомлення
|
||||
- Історія залишається до reload
|
||||
|
||||
## 7. Error Handling
|
||||
|
||||
### ERR-01 — 400 Bad Request
|
||||
|
||||
**Наприклад:**
|
||||
- порожнє поле назви спільноти
|
||||
- некоректний email
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- toast з повідомленням
|
||||
- API не падає в консоль
|
||||
|
||||
### ERR-02 — 403 Forbidden
|
||||
|
||||
**Наприклад:**
|
||||
- спроба писати в приватний канал без доступу
|
||||
|
||||
**Очікування:**
|
||||
|
||||
- toast: "Недостатньо прав"
|
||||
|
||||
### ERR-03 — 404 Not Found
|
||||
|
||||
- неправильний канал
|
||||
- неправильний проєкт
|
||||
|
||||
Очікування:
|
||||
|
||||
- зрозуміла сторінка 404
|
||||
- ніяких uncaught errors
|
||||
|
||||
## 8. Performance (MVP)
|
||||
|
||||
### PERF-01 — Chat latency
|
||||
|
||||
Очікування:
|
||||
|
||||
- p95 ≤ 300 мс для `GET /messages` та `POST /messages`.
|
||||
|
||||
### PERF-02 — WebSocket stability
|
||||
|
||||
Очікування:
|
||||
|
||||
- Нові повідомлення з'являються ≤100 мс після відправки.
|
||||
- З'єднання не падає при простому використанні.
|
||||
|
||||
## 9. Accessibility (basic)
|
||||
|
||||
### A11Y-01 — Keyboard navigation
|
||||
|
||||
- Усі кнопки фокусуються
|
||||
- Enter / Space працюють
|
||||
|
||||
### A11Y-02 — Контрасти
|
||||
|
||||
- Текст контрастний (WCAG 2.1 AA)
|
||||
|
||||
## 10. Успішність MVP (визначення)
|
||||
|
||||
MVP вважається стабільним, якщо:
|
||||
|
||||
- **Усі критичні E2E проходять.**
|
||||
- **Немає P0/P1 багів** (блокуючих).
|
||||
- **Менше 5 P2 багів.**
|
||||
- **Чат та онбординг працюють стабільно.**
|
||||
- **2 реальні команди використовують систему кілька днів без критичних помилок.**
|
||||
Reference in New Issue
Block a user