Skip to content

# 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