Skip to content

Visual browser smoke: walk through examples/chat CHECKLIST.md in real Chrome #214

@blove

Description

@blove

Context: PR #213 landed the canonical examples/chat demo + smoke generator (Phase 1). All 14 CI checks green. Server-side regenerate-path probe via curl confirmed the demo's wire-shape works against the new graph (state correctly transitions 1u/1a → 1u/0u via as_node='__start__' rollback → 1u/1a with new AI id, the 0.0.29 fix path).

What's still pending: Visual browser sweep through examples/chat/smoke/CHECKLIST.md against the generated ~/tmp/ngaf consumer. The Chrome extension MCP was offline at merge time; only server-side and unit-test validation completed.

Steps to close this issue

  1. Pull latest main: git pull origin main.
  2. Confirm OPENAI_API_KEY in examples/chat/python/.env.
  3. Generate fresh smoke consumer:
    npx nx run examples-chat-smoke:run
    # Accept default: ~/tmp/ngaf, version=latest, install=Y, start=N
  4. Start backend: cd examples/chat/python && uv run langgraph dev --port 2024 --no-browser
  5. Start the smoke consumer: cd ~/tmp/ngaf && npm start
  6. Open http://localhost:4200 in Chrome.
  7. Walk through every section of ~/tmp/ngaf/CHECKLIST.md:
    • Pre-flight, initial render, send & receive, stop mid-stream
    • Markdown surfaces (headings, bullets/ordered, task lists, fenced code, tables, blockquotes, links, HRs, no raw HTML escape) — single most important section since it exercises the partial-markdown render path
    • Streaming-specific markdown checks (incomplete code block / table mid-stream)
    • Regenerate with the 1u/1a server-state assertion via curl /threads/<id>/state
    • Cross-mode persistence
    • Mode switching (route + URL, deep-link, popup/sidebar role checks)
    • Model picker (note: known issue — initial dropdown shows first option gpt-5 instead of the signal value gpt-5-mini; capture as a follow-up if confirmed)
    • Debug overlay mount/unmount
    • Palette UX (collapse/expand persistence)
    • Keyboard & accessibility
    • Error handling (stop python; resume)
    • Lifecycle (reload mid-conversation, "↻ New conversation" reset)
    • Browser hygiene (no console.error, no detached chat-message nodes after 10 mode-switch cycles)
    • Visual polish at 1440 / 1024 / 768 / 480
  8. Capture ~/tmp/ngaf/SMOKE_RUN.md plus any screenshots / HAR exports for failures.
  9. File targeted issues against libs/chat for any regressions (e.g. tables / task-lists are documented known regressions from the 0.0.20 partial-markdown swap — surface them here too if still present).

Done when

  • All Phase 1 sections of CHECKLIST.md walked.
  • SMOKE_RUN.md captured (or note "all green, no capture needed").
  • Any failures filed as separate issues against libs/chat.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions