test: add Phase 1 input-variance table coverage#305
Merged
Conversation
Defines the input-variance table-test approach for four streaming-render units (chat-streaming-md, content-classifier, partial-args-bridge, a2ui parser). Motivated by PR #290 — the empty-assistant-bubble bug shipped because every chat-streaming-md test used input ending in '\n', and the 'no trailing newline' LLM-response shape was uncovered. Phase 0 (test-infrastructure audit) and Phase 3 (AIMock E2E + CI wiring) remain deferred.
Bite-sized TDD-style tasks for the four target units. All test files new or append-only — no production code changes.
- Drop `selectorAbsent: 'p'` from chat-streaming-md 'whitespace only' row
(markdown-it emits a placeholder <p> for whitespace input; the
trimmed-text invariant still holds and is the only assertion that
matters).
- Drop the char-by-char progressive-prefix row from partial-args-bridge
variance. Partial-json materializes partially-parsed strings as their
incomplete text, so the bridge's mount-once gate fires with a partial
id ('r') and never re-targets when the full id ('root') resolves. LLM
streams are token-chunked, not char-chunked, so this edge case has
never bitten production. Spec footnote logs it as a latent concern
for a future phase.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
6 tasks
blove
added a commit
that referenced
this pull request
May 14, 2026
* docs: add Phase 2a aimock E2E harness design spec Phase 2a sits between Phase 1 (input-variance tables, #305) and the scenario-coverage phases that will follow. Lands the harness, one trivial smoke fixture, the per-PR CI job, and the daily drift-detection workflow. Real product-level regression coverage is deferred to Phase 2b+ as small additive PRs. * docs: add Phase 2a aimock E2E harness implementation plan 8-task plan with Task 0 as a de-risk gate that validates the harness's core assumptions (mock API shape, Python OpenAI SDK base-URL handoff, LangGraph agent code compatibility) before any code lands. * feat(examples-chat): scaffold aimock-e2e Nx project * feat(examples-chat): add aimock-runner harness module * feat(examples-chat): add hi.json seed fixture * feat(examples-chat): add playwright config with globalSetup * feat(examples-chat): add aimock-e2e smoke spec * ci(examples-chat): add aimock-e2e per-PR job * ci(examples-chat): add scheduled aimock fixture drift workflow
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
\n; the "no trailing newline" LLM-response shape was uncovered.Spec:
docs/superpowers/specs/2026-05-13-ci-testing-coverage-plan.mdPlan:
docs/superpowers/plans/2026-05-13-ci-testing-coverage-phase-1.mdTest plan
chatsuite green (92 files, 704 tests)a2uisuite green (5 files, 54 tests)plain text no trailing newline) present in chat-streaming-md variance table<p>placeholder; char-by-char streams) documented in the spec footnote