443 lines
11 KiB
Markdown
443 lines
11 KiB
Markdown
# DAARION MVP — Smoke Test Checklist
|
||
|
||
**Мета:** Швидка перевірка що всі критичні компоненти працюють після deployment.
|
||
**Час виконання:** ~15 хвилин
|
||
|
||
---
|
||
|
||
## ✅ Pre-flight Check
|
||
|
||
- [ ] Всі Docker containers запущені: `docker ps | grep daarion`
|
||
- [ ] HTTPS працює: `curl -I https://app.daarion.space`
|
||
- [ ] DNS resolution OK: `dig app.daarion.space +short`
|
||
|
||
---
|
||
|
||
## 🌐 1. API Health Checks
|
||
|
||
### 1.1 Gateway Health
|
||
```bash
|
||
curl -I https://app.daarion.space/health
|
||
# Очікуємо: HTTP/2 200
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 1.2 City Service Health
|
||
```bash
|
||
curl https://app.daarion.space/city/health
|
||
# Очікуємо: {"status": "healthy", "service": "city-service"}
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 1.3 Agents Service Health
|
||
```bash
|
||
curl https://app.daarion.space/agents/health
|
||
# Очікуємо: {"status": "healthy", "service": "agents-service", ...}
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 1.4 Second Me Service Health
|
||
```bash
|
||
curl https://app.daarion.space/secondme/health
|
||
# Очікуємо: {"status": "healthy", "service": "secondme-service"}
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🏙️ 2. City Rooms API
|
||
|
||
### 2.1 Get City Rooms
|
||
```bash
|
||
curl https://app.daarion.space/city/rooms | jq
|
||
# Очікуємо: масив з 5 дефолтних кімнат (general, welcome, builders, science, energy)
|
||
```
|
||
|
||
**Очікуваний output:**
|
||
```json
|
||
[
|
||
{
|
||
"id": "room_city_general",
|
||
"slug": "general",
|
||
"name": "General",
|
||
"description": "Головна кімната міста...",
|
||
"members_online": <number>
|
||
},
|
||
...
|
||
]
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
**Members online count:** _______
|
||
|
||
---
|
||
|
||
### 2.2 Get Room Details
|
||
```bash
|
||
curl https://app.daarion.space/city/rooms/room_city_general | jq
|
||
# Очікуємо: деталі кімнати + messages + online_members
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
**Messages count:** _______
|
||
|
||
---
|
||
|
||
### 2.3 City Feed
|
||
```bash
|
||
curl https://app.daarion.space/city/feed | jq
|
||
# Очікуємо: масив подій (мінімум 1 system event)
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🧬 3. Second Me API
|
||
|
||
### 3.1 Second Me Profile (потрібна авторизація)
|
||
```bash
|
||
# Mock user для тестування
|
||
curl https://app.daarion.space/secondme/profile
|
||
# Очікуємо: профіль з total_interactions, agent_id
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 3.2 Second Me History
|
||
```bash
|
||
curl https://app.daarion.space/secondme/history
|
||
# Очікуємо: [] (порожній масив для нового користувача)
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🖥️ 4. Frontend Tests
|
||
|
||
### 4.1 Homepage Load
|
||
**Дія:** Відкрити `https://app.daarion.space` в браузері
|
||
|
||
**Перевірити:**
|
||
- [ ] Сторінка завантажується без помилок
|
||
- [ ] Немає console errors (F12 → Console)
|
||
- [ ] Немає mixed content warnings
|
||
- [ ] CSS та JS завантажуються коректно
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 4.2 Login/Register Page
|
||
**Дія:** Перейти на сторінку логіну/реєстрації
|
||
|
||
**Перевірити:**
|
||
- [ ] Форма відображається коректно
|
||
- [ ] Inputs працюють
|
||
- [ ] Validation працює
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 4.3 City Rooms Page
|
||
**Дія:** Перейти на `/city/rooms`
|
||
|
||
**Перевірити:**
|
||
- [ ] Список кімнат завантажується
|
||
- [ ] Видно 5 дефолтних кімнат
|
||
- [ ] Online count відображається
|
||
- [ ] Можна клікнути на кімнату
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 4.4 Room View
|
||
**Дія:** Відкрити конкретну кімнату `/city/rooms/room_city_general`
|
||
|
||
**Перевірити:**
|
||
- [ ] Повідомлення завантажуються
|
||
- [ ] Online members відображаються
|
||
- [ ] Input для нових повідомлень працює
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 4.5 Second Me Page
|
||
**Дія:** Перейти на `/secondme`
|
||
|
||
**Перевірити:**
|
||
- [ ] Сторінка завантажується
|
||
- [ ] Chat interface відображається
|
||
- [ ] Input працює
|
||
- [ ] Profile stats показуються
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🔌 5. WebSocket Tests
|
||
|
||
### 5.1 City Room WebSocket
|
||
**Дія:** Відкрити DevTools → Network → WS filter, відкрити кімнату
|
||
|
||
**Перевірити:**
|
||
- [ ] WebSocket connection встановлено
|
||
- [ ] URL: `wss://app.daarion.space/ws/city/rooms/{room_id}`
|
||
- [ ] Connection status: Connected (101 Switching Protocols)
|
||
- [ ] Heartbeat працює (якщо реалізовано)
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 5.2 Presence WebSocket
|
||
**Дія:** Відкрити будь-яку сторінку з PresenceBar
|
||
|
||
**Перевірити:**
|
||
- [ ] WebSocket connection до `/ws/city/presence`
|
||
- [ ] Heartbeat надсилається кожні 20 секунд
|
||
- [ ] Online count оновлюється
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🧪 6. Functional Tests
|
||
|
||
### 6.1 Send Message to Room (Mock)
|
||
```bash
|
||
# Потрібна авторизація, або використати mock user_id
|
||
curl -X POST https://app.daarion.space/city/rooms/room_city_general/messages \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"body": "Test message from smoke test"}'
|
||
|
||
# Очікуємо: 200 або 401 (якщо потрібна авторизація)
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 6.2 Second Me Invoke (Mock)
|
||
```bash
|
||
# Викликати Second Me
|
||
curl -X POST https://app.daarion.space/secondme/invoke \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"prompt": "Hello, Second Me!"}'
|
||
|
||
# Очікуємо: response з reply, tokens_used, latency_ms
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
**Response time:** _______ ms
|
||
|
||
---
|
||
|
||
## 📊 7. Monitoring & Logs
|
||
|
||
### 7.1 Docker Logs
|
||
```bash
|
||
# Перевірити що немає критичних помилок
|
||
docker logs daarion-gateway --tail 50
|
||
docker logs daarion-city-service --tail 50
|
||
docker logs daarion-agents-service --tail 50
|
||
```
|
||
|
||
**Перевірити:**
|
||
- [ ] Немає ERROR рівня логів (допустимі тільки WARN)
|
||
- [ ] Сервіси стартували успішно
|
||
- [ ] З'єднання з БД встановлені
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 7.2 Database Connection
|
||
```bash
|
||
# Перевірити що БД доступна
|
||
docker compose -f docker-compose.all.yml exec postgres \
|
||
psql -U daarion_user -d daarion -c "SELECT COUNT(*) FROM city_rooms;"
|
||
|
||
# Очікуємо: 5 (дефолтні кімнати)
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 7.3 Redis Connection
|
||
```bash
|
||
# Перевірити Redis
|
||
docker compose -f docker-compose.all.yml exec redis redis-cli PING
|
||
# Очікуємо: PONG
|
||
|
||
# Перевірити presence keys (якщо хтось онлайн)
|
||
docker compose -f docker-compose.all.yml exec redis redis-cli KEYS "presence:user:*"
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 7.4 NATS Connection
|
||
```bash
|
||
# Перевірити NATS
|
||
docker compose -f docker-compose.all.yml exec nats nats server info
|
||
# Очікуємо: статус server, connections, etc.
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🔒 8. Security Checks
|
||
|
||
### 8.1 HTTPS Certificate
|
||
```bash
|
||
# Перевірити SSL certificate
|
||
echo | openssl s_client -servername app.daarion.space -connect app.daarion.space:443 2>/dev/null | openssl x509 -noout -dates
|
||
|
||
# Перевірити issuer
|
||
echo | openssl s_client -servername app.daarion.space -connect app.daarion.space:443 2>/dev/null | openssl x509 -noout -issuer
|
||
```
|
||
|
||
**Перевірити:**
|
||
- [ ] Certificate валідний
|
||
- [ ] Expiry date > 30 днів
|
||
- [ ] Issuer: Let's Encrypt або інший trusted CA
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 8.2 HTTP to HTTPS Redirect
|
||
```bash
|
||
# Перевірити редірект
|
||
curl -I http://app.daarion.space
|
||
# Очікуємо: 301 або 308 redirect на https://
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 8.3 Security Headers
|
||
```bash
|
||
curl -I https://app.daarion.space | grep -E "Strict-Transport-Security|X-Content-Type-Options|X-Frame-Options"
|
||
```
|
||
|
||
**Перевірити наявність:**
|
||
- [ ] `Strict-Transport-Security`
|
||
- [ ] `X-Content-Type-Options: nosniff`
|
||
- [ ] `X-Frame-Options: DENY`
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 8.4 Exposed Services Check
|
||
```bash
|
||
# Перевірити що БД не доступна ззовні
|
||
nmap -p 5432 app.daarion.space
|
||
# Очікуємо: closed або filtered
|
||
|
||
# Перевірити Redis
|
||
nmap -p 6379 app.daarion.space
|
||
# Очікуємо: closed або filtered
|
||
```
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🎯 9. Performance Baseline
|
||
|
||
### 9.1 Response Times
|
||
```bash
|
||
# Homepage
|
||
time curl -o /dev/null -s -w "Total: %{time_total}s\n" https://app.daarion.space/
|
||
|
||
# API endpoint
|
||
time curl -o /dev/null -s -w "Total: %{time_total}s\n" https://app.daarion.space/city/rooms
|
||
```
|
||
|
||
**Записати baseline:**
|
||
- Homepage: _______ s
|
||
- City Rooms API: _______ s
|
||
|
||
**Очікувані значення:**
|
||
- < 1s для Homepage
|
||
- < 0.5s для API
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
### 9.2 Resource Usage
|
||
```bash
|
||
# Docker stats
|
||
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
|
||
```
|
||
|
||
**Перевірити:**
|
||
- [ ] CPU usage < 50% на всіх контейнерах
|
||
- [ ] Memory usage в межах allocated limits
|
||
|
||
**Результат:** [ ] ✅ / [ ] ❌
|
||
|
||
---
|
||
|
||
## 🎉 Final Score
|
||
|
||
**Total checks:** _______ / _______
|
||
**Pass rate:** _______ %
|
||
|
||
**Status:** [ ] ✅ READY FOR PRODUCTION / [ ] ❌ ISSUES FOUND
|
||
|
||
---
|
||
|
||
## 📝 Notes & Issues
|
||
|
||
Записати всі знайдені проблеми:
|
||
|
||
1. [ ] _____________________________
|
||
2. [ ] _____________________________
|
||
3. [ ] _____________________________
|
||
|
||
---
|
||
|
||
## 📚 Next Steps
|
||
|
||
Якщо всі тести пройдені:
|
||
1. ➡️ Створити production backup
|
||
2. ➡️ Налаштувати моніторинг alerts
|
||
3. ➡️ Документувати runbook для operations
|
||
4. ➡️ Повідомити команду про готовність
|
||
|
||
Якщо є проблеми:
|
||
1. ➡️ Зафіксувати issues в tracker
|
||
2. ➡️ Prioritize critical vs non-critical
|
||
3. ➡️ Fix & re-run smoke tests
|
||
|
||
---
|
||
|
||
**Виконано:** _______________ (дата/час)
|
||
**Виконавець:** _______________ (ім'я)
|
||
**Версія:** 1.0.0
|