feat(qa): add transport scenario requirements#97915
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 5:50 PM ET / 21:50 UTC. Summary PR surface: Source +168, Tests +153. Total +321 across 8 files. Reproducibility: not applicable. This PR adds internal QA Lab infrastructure rather than reporting a runtime bug. The relevant confidence path is source review plus the exact-head QA Lab and CI checks. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land the existing Do we have a high-confidence way to reproduce the issue? Not applicable: this PR adds internal QA Lab infrastructure rather than reporting a runtime bug. The relevant confidence path is source review plus the exact-head QA Lab and CI checks. Is this the best way to solve the issue? Yes: the PR keeps scenario requirements on the existing AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 15de9d881a84. Label changesLabel justifications:
Evidence reviewedPR surface: Source +168, Tests +153. Total +321 across 8 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
08c3980 to
090387f
Compare
090387f to
a81723b
Compare
a81723b to
b2e2655
Compare
What Problem This Solves
QA Lab needs a shared foundation for making channel scenarios portable across the existing qa-channel and Crabline suite transports, without introducing a parallel channel-driver abstraction. Today both transports already route through
QaTransportAdapter, but there was no shared way for a scenario to declare which transport capabilities or generic channel actions it needs before a later PR ports Slack, Telegram, and WhatsApp scenarios onto that path.Why This Change Was Made
This PR keeps the existing transport architecture and adds a small scenario-requirements layer on top of it.
QaTransportCapabilitiesis now exported from the existing transport adapter surface, transports advertise supported generic actions, andqa-transport-scenarios.tscan define/filter/assert scenario requirements using existing live standard scenario IDs plusQaTransportAdaptercapabilities/actions.The helper is wired through the existing live transport scenario metadata surface so it is production-reachable QA Lab code, but this PR still does not change runner behavior or port any channel scenarios yet.
User Impact
No end-user behavior changes. QA developers can now build the next stacked PRs around the existing transport adapter contract instead of adding a new driver concept.
Evidence
node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/qa-transport-scenarios.test.ts extensions/qa-lab/src/scenario-runtime-api.test.ts extensions/qa-lab/src/qa-channel-transport.test.ts extensions/qa-lab/src/crabline-transport.test.ts extensions/qa-lab/src/suite-runtime-flow.test.tsnode scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/qa-transport-scenarios.test.ts extensions/qa-lab/src/scenario-runtime-api.test.tspnpm lint --threads=8pnpm run lint:extensions:bundledpnpm run deadcode:dependenciespnpm deadcode:unused-filespnpm check:test-typespnpm tsgo:extensions:testgit diff --check