test(canvas): add FilesTab + tree pure-function coverage — 36 cases #879

Closed
fullstack-engineer wants to merge 3 commits from feat/canvas-untested-components-coverage into staging

3 Commits

Author SHA1 Message Date
719c56d132 test(canvas): add FilesTab + tree pure-function coverage — 36 cases
Some checks failed
qa-review / approved (pull_request) Failing after 18s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 34s
gate-check-v3 / gate-check (pull_request) Successful in 38s
sop-tier-check / tier-check (pull_request) Successful in 25s
security-review / approved (pull_request) Failing after 31s
CI / Detect changes (pull_request) Successful in 1m3s
sop-checklist-gate / gate (pull_request) Successful in 30s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 23s
CI / Platform (Go) (pull_request) Failing after 4m2s
CI / Python Lint & Test (pull_request) Successful in 7m33s
CI / Canvas (Next.js) (pull_request) Successful in 12m53s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Successful in 7s
sop-checklist / all-items-acked (pull_request) [info tier:low] acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, l
audit-force-merge / audit (pull_request) Has been skipped
Add tree.test.ts (25 cases): buildTree and getIcon pure functions from
FilesTab/tree.ts. buildTree: empty input, single file/dir, sorting,
nested files, intermediate dirs, duplicate dir prevention, deep nesting.
getIcon: all 9 extensions, case-insensitivity, default fallback.

Add FilesTab.test.tsx (11 cases): NotAvailablePanel rendering (external
runtime), api.get gating, loading/empty/file-count states, Refresh
button reload, upload guard (no error on /configs dragover).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 19:22:35 +00:00
c7350da23c Merge branch 'feat/canvas-tab-test-coverage-2' into staging 2026-05-13 18:28:31 +00:00
a2117ec8ac test(canvas): add ChannelsTab + TracesTab coverage — 34 cases
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 16s
sop-tier-check / tier-check (pull_request) Successful in 18s
CI / Detect changes (pull_request) Successful in 59s
sop-checklist-gate / gate (pull_request) Successful in 24s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 13s
CI / Python Lint & Test (pull_request) Successful in 17s
CI / Platform (Go) (pull_request) Failing after 5m49s
CI / Canvas (Next.js) (pull_request) Failing after 16m33s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
sop-checklist / all-items-acked (pull_request) [info tier:low] acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, l
CI / all-required (pull_request) Failing after 6s
audit-force-merge / audit (pull_request) Has been skipped
Add vitest unit tests for ChannelsTab (16 cases) and TracesTab (18 cases).
ChannelsTab: SUPPORTS_DETECT_CHATS, loading/empty/error states, channel
list rendering (enabled/disabled), toggle labels, message count, allowed
users, Test/Remove buttons, header and Connect form flow.
TracesTab: loading/empty/error states, trace list, expand/collapse,
aria-expanded attribute, latency formatting (ms/s), token usage, cost
display, Refresh button.
Fix error state assertions in ChannelsTab — component renders generic
"Failed to load connected channels/platforms" not raw error text.
Fix TracesTab cost test — use regex to handle locale variation in
toFixed(6).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 18:26:56 +00:00