ML-182: finish audit and subsequent improvements
This commit is contained in:
+37
@@ -0,0 +1,37 @@
|
||||
---
|
||||
id: ML-182.6
|
||||
title: "Wave 6: Chat component streaming tests (send_update/3 blocker)"
|
||||
status: To Do
|
||||
assignee: []
|
||||
created_date: "2026-05-14 22:15"
|
||||
updated_date: "2026-05-23 06:16"
|
||||
labels:
|
||||
- testing
|
||||
- refactoring
|
||||
dependencies: []
|
||||
modified_files:
|
||||
- test/music_library_web/components/chat_test.exs
|
||||
parent_task_id: ML-182
|
||||
priority: medium
|
||||
ordinal: 16000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
|
||||
## Decision: Keep send_update/3 (Accepted Blocker)
|
||||
|
||||
After reviewing the implementation plan against the project's testing conventions, the decision is to **keep `send_update/3`** rather than rewrite the three streaming state-transition tests as SSE pipeline integration tests.
|
||||
|
||||
### Rationale
|
||||
|
||||
The testing skill at `.agents/skills/testing/SKILL.md` already documents `send_update/3` in the "Known Blockers for Full PhoenixTest Migration" table with the workaround: **"Keep `send_update` for these tests."** This is the project's documented convention — `send_update/3` is an accepted escape hatch for unit-level LiveComponent streaming-state testing.
|
||||
|
||||
The proposed SSE integration approach would work technically but carries disproportionate cost (4-6h estimated) for three tests, introduces async timing fragility, requires new DOM selectors in the template, and masks the unit-level coverage of `update/2` clause logic behind a full-pipeline integration test.
|
||||
|
||||
### Action
|
||||
|
||||
Import `send_update/3` explicitly in `chat_test.exs`, keep the three streaming state-transition tests as-is, and close this task. No other changes needed.
|
||||
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: ML-182
|
||||
title: Analyze and plan elimination of LiveViewTest usage in favor of PhoenixTest
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: "2026-05-14 21:40"
|
||||
updated_date: "2026-05-14 22:15"
|
||||
updated_date: "2026-05-23 06:17"
|
||||
labels:
|
||||
- testing
|
||||
- refactoring
|
||||
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
---
|
||||
id: ML-182.6
|
||||
title: "Wave 6: Chat component streaming tests (send_update/3 blocker)"
|
||||
status: To Do
|
||||
assignee: []
|
||||
created_date: "2026-05-14 22:15"
|
||||
labels:
|
||||
- testing
|
||||
- refactoring
|
||||
dependencies: []
|
||||
modified_files:
|
||||
- test/music_library_web/components/chat_test.exs
|
||||
parent_task_id: ML-182
|
||||
priority: medium
|
||||
ordinal: 16000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
|
||||
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.
|
||||
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
Reference in New Issue
Block a user