Files
music_library/backlog/tasks/ml-182.6 - Wave-6-Chat-component-streaming-tests-send_update-3-blocker.md
T
2026-05-14 23:25:15 +01:00

1.3 KiB

id, title, status, assignee, created_date, labels, dependencies, modified_files, parent_task_id, priority, ordinal
id title status assignee created_date labels dependencies modified_files parent_task_id priority ordinal
ML-182.6 Wave 6: Chat component streaming tests (send_update/3 blocker) To Do
2026-05-14 22:15
testing
refactoring
test/music_library_web/components/chat_test.exs
ML-182 medium 16000

Description

The hardest file — components/chat_test.exs uses Phoenix.LiveView.send_update(view.pid, Chat, [chunk: ..., done: ..., error: ...]) to drive the Chat component's internal update/2 callback directly with streaming state tuples. This is unit-level LiveComponent testing with no PhoenixTest equivalent — PhoenixTest has no concept of LiveComponent PIDs.

3 tests affected in "update/2 streaming state transitions" describe block:

  • "chunk clause appends to the streaming doc"
  • "done clause finalizes the assistant message and clears loading"
  • "error clause surfaces the error and a retry button"

Workaround: Rewrite as integration tests through the actual SSE streaming pipeline (stub OpenAI.API to emit controlled SSE events, use visit/2 + assert_has/3).

Effort: High (4-6h). Requires understanding the SSE streaming protocol and Chat component internals.