# Smoke Test — v0.502 Chat Server Rewrite ## Pre-requisites - [ ] `go build ./...` passes in veza-backend-api - [ ] `go test ./internal/websocket/chat/... -v` passes (15 tests) - [ ] Frontend builds without new errors (`npx tsc --noEmit`) ## Backend Chat WebSocket - [ ] Backend starts without errors (`go run ./cmd/server`) - [ ] POST `/api/v1/chat/token` returns `{token, ws_url: "/api/v1/ws", expires_in}` - [ ] WebSocket connects at `ws://localhost:8080/api/v1/ws?token=` - [ ] Receives `{"type":"ActionConfirmed","action":"connected","success":true}` on connect - [ ] Sending `{"type":"Ping"}` returns `{"type":"Pong"}` - [ ] Missing/invalid token returns 401 ## Message Flow - [ ] JoinConversation -> ActionConfirmed - [ ] SendMessage -> ActionConfirmed + NewMessage broadcast - [ ] EditMessage -> ActionConfirmed + MessageEdited broadcast - [ ] DeleteMessage -> ActionConfirmed + MessageDeleted broadcast - [ ] FetchHistory -> HistoryChunk with messages array ## Real-time Features - [ ] Typing -> UserTyping broadcast to other room members - [ ] MarkAsRead -> ActionConfirmed + MessageRead broadcast - [ ] Delivered -> ActionConfirmed + MessageDelivered broadcast - [ ] AddReaction -> ActionConfirmed + ReactionAdded broadcast - [ ] RemoveReaction -> ActionConfirmed + ReactionRemoved broadcast ## Call Signaling - [ ] CallOffer relayed to target user - [ ] CallAnswer relayed to caller - [ ] ICECandidate relayed to target - [ ] CallHangup relayed to target - [ ] CallReject relayed to caller ## Docker - [ ] `docker-compose up` starts without chat-server service - [ ] Backend still starts and serves WS endpoint ## Frontend - [ ] Chat connects to `/api/v1/ws` instead of old port 8081 - [ ] Messages sent and received correctly - [ ] Typing indicators work