- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
11 KiB
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-SecurityX-Content-Type-Options: nosniffX-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
Якщо всі тести пройдені:
- ➡️ Створити production backup
- ➡️ Налаштувати моніторинг alerts
- ➡️ Документувати runbook для operations
- ➡️ Повідомити команду про готовність
Якщо є проблеми:
- ➡️ Зафіксувати issues в tracker
- ➡️ Prioritize critical vs non-critical
- ➡️ Fix & re-run smoke tests
Виконано: _______________ (дата/час)
Виконавець: _______________ (ім'я)
Версія: 1.0.0