Files
unraid-docker-manager/.planning/phases/16-api-migration/16-UAT.md
T
Lucas Berger 07aeace1fd fix(16): resolve 3 UAT issues — update flow, batch cancel, text commands
- Fix update sub-workflow: remove unsupported GraphQL filter arg, fix node
  reference (Format Pull Error → Format Update Error), fix field case
  (data.image → data.Image)
- Fix batch cancel: connect Route Callback output 20 (batchcancel) to
  Prepare Batch UI Input (was empty connection array)
- Fix text commands: change .item.json to .first().json for paired item
  breakage after GraphQL chain expansion; convert Send Batch Confirmation
  from Telegram node to HTTP Request to fix double-serialized reply_markup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 12:28:21 -05:00

110 lines
5.4 KiB
Markdown

---
status: diagnosed
phase: 16-api-migration
source: 16-01-SUMMARY.md, 16-02-SUMMARY.md, 16-03-SUMMARY.md, 16-04-SUMMARY.md, 16-05-SUMMARY.md, 16-06-SUMMARY.md
started: 2026-02-09T16:00:00Z
updated: 2026-02-09T16:20:00Z
---
## Current Test
<!-- OVERWRITE each test - shows where we are -->
[testing complete]
## Tests
### 1. View Container List
expected: Send a status/list command to the bot. You see a list of containers with names and states (running/stopped). Response completes within a few seconds.
result: pass
### 2. View Container Status Submenu
expected: Tap a container from the list. You see a detail submenu showing the container's name, state, and action buttons (Start/Stop/Restart/Update).
result: pass
### 3. Start a Stopped Container
expected: From a stopped container's submenu, tap Start. You see a success message confirming the container was started.
result: pass
### 4. Stop a Running Container
expected: From a running container's submenu, tap Stop. You see a success message confirming the container was stopped.
result: pass
### 5. Restart a Container
expected: From a container's submenu, tap Restart. You see a success message confirming the container was restarted (internally this is a stop + start sequence).
result: pass
### 6. Start an Already-Running Container
expected: From an already-running container's submenu, tap Start. You see a message like "already started" (NOT an error). This is idempotent behavior.
result: pass
note: UI correctly hides Start button when container is already running — no idempotent case possible via UI
### 7. Update a Single Container
expected: From a container's submenu, tap Update. The bot begins updating the container. You see a result message indicating success (updated) or "already up to date" if no update was available.
result: issue
reported: "This does not work. It gets past the confirmation window but then there are execution errors on the main flow and container update flows"
severity: blocker
### 8. Batch Container Selection UI
expected: Trigger the batch selection flow (e.g. batch/update-all command). You see an inline keyboard listing containers with checkboxes. You can toggle containers on/off and navigate pages if many containers exist.
result: issue
reported: "Batch selection works, but the cancel button on the batch confirmation does not work"
severity: major
### 9. Text Command: Action on Container
expected: Send a text command like "start plex" or "stop sonarr". The bot performs the action and returns a success/error message — same behavior as the inline keyboard path.
result: issue
reported: "Start and stop text commands do not work, and additionally batch text command confirmation dialog has no actionable buttons to proceed"
severity: blocker
## Summary
total: 9
passed: 6
issues: 3
pending: 0
skipped: 0
## Gaps
- truth: "User can update a single container via inline keyboard and see success/up-to-date message"
status: fixed
reason: "User reported: This does not work. It gets past the confirmation window but then there are execution errors on the main flow and container update flows"
severity: blocker
test: 7
root_cause: "3 bugs in n8n-update.json: (1) Query Single Container used unsupported filter argument, (2) Return Error referenced nonexistent Format Pull Error node, (3) Capture Pre-Update State had case mismatch data.image vs data.Image"
artifacts:
- path: "n8n-update.json"
issue: "GraphQL filter argument not supported by Unraid API; node reference and field case bugs"
missing:
- "Remove filter from GraphQL query, filter client-side in normalizer"
- "Fix node reference to Format Update Error"
- "Fix field case to data.Image"
debug_session: ".planning/debug/update-flow-errors.md"
- truth: "Cancel button on batch confirmation returns user to previous state"
status: fixed
reason: "User reported: Batch selection works, but the cancel button on the batch confirmation does not work"
severity: major
test: 8
root_cause: "Route Callback switch node output index 20 (batchcancel) wired to empty connection array [] — dead end. All other batch outputs (14-19) correctly connected to Prepare Batch UI Input."
artifacts:
- path: "n8n-workflow.json"
issue: "Route Callback output 20 (batchcancel) had empty connection array"
missing:
- "Connect output 20 to Prepare Batch UI Input matching other batch outputs"
debug_session: ".planning/debug/batch-cancel-broken.md"
- truth: "Text commands (start/stop) perform actions and batch text command shows actionable confirmation"
status: fixed
reason: "User reported: Start and stop text commands do not work, and additionally batch text command confirmation dialog has no actionable buttons to proceed"
severity: blocker
test: 9
root_cause: "Two bugs: (1) Phase 16-06 GraphQL chain expansion breaks paired item tracking — $('NodeName').item.json fails after Execute Match sub-workflow. (2) Send Batch Confirmation Telegram node double-serializes reply_markup, Telegram silently ignores malformed buttons."
artifacts:
- path: "n8n-workflow.json"
issue: "Prepare Text Action Input and Prepare Batch Execution use .item.json which fails after paired item break; Send Batch Confirmation uses Telegram node that double-serializes reply_markup"
missing:
- "Change .item.json to .first().json in Prepare Text Action Input and Prepare Batch Execution"
- "Convert Send Batch Confirmation from Telegram node to HTTP Request node"
debug_session: ".planning/debug/text-commands-broken.md"