test(web-ui): Playwright E2E — deck creation via chat with stub ACP agent#199
Merged
Conversation
…gent Roadmap 2-5b-4. One happy-path E2E: deck list → New Deck → send message → workspace navigation → slide preview. Runs the real Local-mode stack (Next.js API routes, ACP process manager, SSE bridge, strandsParser) against a stub agent (e2e/stub-agent.mjs) that speaks minimal ACP JSON-RPC and writes a deck to disk — no AWS, no kiro-cli. - SDPM_ACP_CONFIG_DIR env override in acp-adapter so the test sandbox (e2e/.tmp/) never touches the developer's real acp-config.json - Deck root sandboxed via existing SDPM_DECK_ROOT - CI: new e2e job (chromium only, trace artifact on failure) - npm run test:e2e + README testing sections (en/ja)
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
Roadmap 2-5b-4: one happy-path E2E test — deck list → New Deck → send chat message → workspace navigation → slide preview.
Cloud mode needs Cognito + AgentCore, so the test runs the Web UI in Local mode with only
kiro-cliswapped for a stub (e2e/stub-agent.mjs, plain Node). The stub speaks minimal ACP JSON-RPC, writes a real deck to disk on prompt, and emits the samesession/updatesequence a real agent produces. Everything else is real code under test:acp-process.ts(process manager),sse-bridge.ts,strandsParser.jsuseChatStream/ChatPanel(streaming UI),useWorkspace(polling + hash routing)Changes
web-ui/e2e/— stub agent, global setup (sandbox undere2e/.tmp/), 1 specweb-ui/playwright.config.ts— dev server on port 3199 in Local mode, sandboxed envweb-ui/src/lib/local/acp-adapter.ts— newSDPM_ACP_CONFIG_DIRenv override (1 line) so tests never touch the developer's realmcp-local/.sdpm/acp-config.json; deck root already sandboxed via existingSDPM_DECK_ROOTe2ejob (chromium only, uploads trace artifact on failure)npm run test:e2e+ Testing sections in README (en/ja)package-lock.jsonregenerated from scratch (same @emnapi optional-deps desync as feat: quality improvements — error visibility, cancel responsiveness, partial-failure recovery #193; verifiednpm ci→ vitest/tsc/playwright all green locally)Test
tsc --noEmitclean /build:cloudOK /make lint+make test(260 passed)Selectors are role/aria-label based (
Chat message input,Send message, tabSlides) — the existing a11y work directly stabilizes the E2E.