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¶
curl -I https://app.daarion.space/health
# Очікуємо: HTTP/2 200
Результат: [ ] ✅ / [ ] ❌
1.2 City Service Health¶
curl https://app.daarion.space/city/health
# Очікуємо: {"status": "healthy", "service": "city-service"}
Результат: [ ] ✅ / [ ] ❌
1.3 Agents Service Health¶
curl https://app.daarion.space/agents/health
# Очікуємо: {"status": "healthy", "service": "agents-service", ...}
Результат: [ ] ✅ / [ ] ❌
1.4 Second Me Service Health¶
curl https://app.daarion.space/secondme/health
# Очікуємо: {"status": "healthy", "service": "secondme-service"}
Результат: [ ] ✅ / [ ] ❌
🏙️ 2. City Rooms API¶
2.1 Get City Rooms¶
curl https://app.daarion.space/city/rooms | jq
# Очікуємо: масив з 5 дефолтних кімнат (general, welcome, builders, science, energy)
Очікуваний output:
[
{
"id": "room_city_general",
"slug": "general",
"name": "General",
"description": "Головна кімната міста...",
"members_online": <number>
},
...
]
Результат: [ ] ✅ / [ ] ❌
Members online count: _
2.2 Get Room Details¶
curl https://app.daarion.space/city/rooms/room_city_general | jq
# Очікуємо: деталі кімнати + messages + online_members
Результат: [ ] ✅ / [ ] ❌
Messages count: _
2.3 City Feed¶
curl https://app.daarion.space/city/feed | jq
# Очікуємо: масив подій (мінімум 1 system event)
Результат: [ ] ✅ / [ ] ❌
🧬 3. Second Me API¶
3.1 Second Me Profile (потрібна авторизація)¶
# Mock user для тестування
curl https://app.daarion.space/secondme/profile
# Очікуємо: профіль з total_interactions, agent_id
Результат: [ ] ✅ / [ ] ❌
3.2 Second Me History¶
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)¶
# Потрібна авторизація, або використати 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)¶
# Викликати 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¶
# Перевірити що немає критичних помилок
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¶
# Перевірити що БД доступна
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¶
# Перевірити 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¶
# Перевірити NATS
docker compose -f docker-compose.all.yml exec nats nats server info
# Очікуємо: статус server, connections, etc.
Результат: [ ] ✅ / [ ] ❌
🔒 8. Security Checks¶
8.1 HTTPS Certificate¶
# Перевірити 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¶
# Перевірити редірект
curl -I http://app.daarion.space
# Очікуємо: 301 або 308 redirect на https://
Результат: [ ] ✅ / [ ] ❌
8.3 Security Headers¶
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¶
# Перевірити що БД не доступна ззовні
nmap -p 5432 app.daarion.space
# Очікуємо: closed або filtered
# Перевірити Redis
nmap -p 6379 app.daarion.space
# Очікуємо: closed або filtered
Результат: [ ] ✅ / [ ] ❌
🎯 9. Performance Baseline¶
9.1 Response Times¶
# 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¶
# 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¶
Записати всі знайдені проблеми:
📚 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