Skip to content

Commit 849f696

Browse files
authored
docs(qa): web UI manual QA pass + fix grid column overflow (closes #28) (#34)
* docs(qa): web UI manual QA pass + fix grid column overflow (closes #28) Documents and verifies the web UI against all 10 acceptance criteria from issue #28, plus one visual bug surfaced during the pass and fixed in the same PR. Bug fix: * `.main-content` grid column was overflowing the viewport on the right whenever a bubble contained an unbreakable child (long code block, long URL, long tool-call output). Header + title rendered fine because they live outside the grid. Cause: grid items default to `min-width: auto`, which refuses to shrink below intrinsic min-content. Fix: add `.main-content { min-width: 0 }` so the existing `overflow-x: auto` on `.prose pre` and `word-break: break-all` on `.tool-call-content` can take over inside the bubble. QA artifacts: * `tests/web-ui-qa-checklist.md` — 9 sections covering: environment, server launch, 5 major views (home, workspace, conversation, search, config), exports, cross-browser parity, regression notes, sign-off. Every check that could be answered backend-side is filled in with the actual probe / inspection result. * `tests/web-ui-smoke.sh` — boots app.py on an alt port and probes 11 routes (page routes + JSON API + workspace-scoped routes). Exits non-zero on any unexpected status. * `samples/qa/*.png` — 10 screenshots, Chrome + Firefox for home, workspace detail, conversation view, search results, and config. Verification highlights: - 11/11 smoke probes pass - All 5 export formats download from both Chrome and Firefox - .md / .html / .json / .csv are byte-identical across browsers (proves the JS pipeline in static/js/download.js is portable) - PDF is a valid 153-page document (Chrome + Firefox both produce valid 153-page PDFs; bytes differ because the server embeds a fresh /CreationDate on each /api/generate-pdf call) - Backend data shape verified: a sampled conversation tab carries 387 bubbles, including toolCalls (name="glob_file_search", status="completed") and thinking blocks (durationMs=3569) * review: CodeRabbit fixes — MD040 fence + curl timeouts on smoke Two CodeRabbit follow-ups on PR #34: * tests/web-ui-qa-checklist.md: the fenced block describing the /api/generate-pdf probe was missing a language hint and tripped markdownlint MD040. Tagged as `text`. * tests/web-ui-smoke.sh: every curl call now goes through CURL_FLAGS=(--silent --show-error --connect-timeout 2 --max-time 5) so a stalled socket can't hang the script indefinitely. The boot-wait loop also redirects stderr to /dev/null because connection-refused during the polling phase is expected; if the wait times out, the final fall-through check re-runs with stderr visible so the failure reason is preserved. Verified: bash tests/web-ui-smoke.sh — 11/11 pass, no noise on stdout. * review: fail smoke on /api/workspaces parse error (CodeRabbit) The WS_ID extraction was suppressing python3's stderr with `2>/dev/null` and treating a missing parse result the same as "no non-global workspace exists". So /api/workspaces returning 200 with malformed JSON would silently skip the three workspace-scoped probes and the script would still exit 0 — a false green. Wrapped the parse in `if ... ; then ... else fail=$((fail+1)); fi` so python3's non-zero exit (raised by json.load on bad input) routes through the FAIL printf, the workspace block is skipped explicitly, and the script exits non-zero with the rest of the failures. Happy path: 11/11 probes still pass. * review: address 5 Brad findings on the QA checklist + smoke script Five PR #34 review findings closed in one commit. All polish; no behaviour change on the happy path. Checklist (tests/web-ui-qa-checklist.md): * §6 export-frontmatter table was citing the CLI export schema (log_id / workspace / created_at / updated_at). The web UI pipeline in static/js/download.js actually emits title / created / conversation_id (plus optional models_used / token / cost). Fixed, with an inline NOTE so a future reader doesn't swap them back. * §7 cross-browser-parity table was unfinished AND tested phantom features (per-bubble copy button + arrow-key sidebar nav don't exist in the codebase). Replaced with the four checks that target features actually shipped today; phantom rows documented as enhancement ideas. * §8 post-fix screenshot row was an unticked TODO even though the workspace + conversation screenshots in samples/qa/ were captured after the .main-content fix landed. Flipped to [x] with explicit evidence pointer. * §9 sign-off table was empty rows. Filled in with this PR's state (4 of 5 rows resolved; reviewer-approval row stays pending). * Added a verification-method legend at the top so a reviewer can tell visual vs probe vs code-inferred vs deferred (⏳) ticks apart. The default is "visual"; deviations carry an explicit tag. Smoke script (tests/web-ui-smoke.sh): * Page-route probes now sniff the body for the expected `<title>` string in addition to the 200 status, so an "empty 200" template regression can no longer slip through. * Workspace-scoped probes no longer skip silently when /api/workspaces returns no non-global rows — the message is now a loud [WARN] block in the output, and the new env var CLAW_QA_REQUIRE_WORKSPACE=1 converts the skip into a hard failure for CI runs that seed fixture data. Documented in the script header. Verified: bash tests/web-ui-smoke.sh — 11/11 pass with body sniff; negative test (fake needle) correctly exits 1 with the missing-needle message; empty-workspace test with CLAW_QA_REQUIRE_WORKSPACE=1 exits 1 as expected. * fix(ui): sidebar-item-time truncation for fixed 280px sidebar Brad's review on PR #34 flagged that .sidebar-item-title already truncates with overflow: hidden + text-overflow: ellipsis + white-space: nowrap, but the .sidebar-item-time row beneath it had no overflow handling. A long model badge or localised timestamp would overflow the fixed 280px .sidebar column horizontally. Mirrored the title row's three properties on .sidebar-item-time so the truncation is symmetric. Invisible on current data (timestamps + model names fit today) — forward-looking guard against a future sidebar-child addition. §8 of tests/web-ui-qa-checklist.md updated to list both this and the .main-content overflow fix as regression notes for PR #34.
1 parent 1a0410d commit 849f696

13 files changed

Lines changed: 479 additions & 1 deletion

samples/qa/config-chrome.png

97.5 KB
Loading

samples/qa/config-firefox.png

72.9 KB
Loading

samples/qa/conversation-chrome.png

200 KB
Loading
169 KB
Loading

samples/qa/home-chrome.png

152 KB
Loading

samples/qa/home-firefox.png

132 KB
Loading
208 KB
Loading
187 KB
Loading

samples/qa/workspace-chrome.png

283 KB
Loading

samples/qa/workspace-firefox.png

250 KB
Loading

0 commit comments

Comments
 (0)