Skip to content

test(web-ui): Playwright E2E — deck creation via chat with stub ACP agent#199

Merged
ShotaroKataoka merged 1 commit into
mainfrom
feat/e2e-playwright
Jul 8, 2026
Merged

test(web-ui): Playwright E2E — deck creation via chat with stub ACP agent#199
ShotaroKataoka merged 1 commit into
mainfrom
feat/e2e-playwright

Conversation

@ShotaroKataoka

Copy link
Copy Markdown
Contributor

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-cli swapped 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 same session/update sequence a real agent produces. Everything else is real code under test:

  • acp-process.ts (process manager), sse-bridge.ts, strandsParser.js
  • useChatStream / ChatPanel (streaming UI), useWorkspace (polling + hash routing)
  • Next.js API routes incl. the preview file server

Changes

  • web-ui/e2e/ — stub agent, global setup (sandbox under e2e/.tmp/), 1 spec
  • web-ui/playwright.config.ts — dev server on port 3199 in Local mode, sandboxed env
  • web-ui/src/lib/local/acp-adapter.ts — new SDPM_ACP_CONFIG_DIR env override (1 line) so tests never touch the developer's real mcp-local/.sdpm/acp-config.json; deck root already sandboxed via existing SDPM_DECK_ROOT
  • CI: new e2e job (chromium only, uploads trace artifact on failure)
  • npm run test:e2e + Testing sections in README (en/ja)
  • package-lock.json regenerated from scratch (same @emnapi optional-deps desync as feat: quality improvements — error visibility, cancel responsiveness, partial-failure recovery #193; verified npm ci → vitest/tsc/playwright all green locally)

Test

  • Playwright: 1 passed (~6s locally)
  • vitest 38 passed / tsc --noEmit clean / build:cloud OK / make lint + make test (260 passed)

Selectors are role/aria-label based (Chat message input, Send message, tab Slides) — the existing a11y work directly stabilizes the E2E.

…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)
@ShotaroKataoka ShotaroKataoka added the blog:skip ブログ対象外 label Jul 8, 2026
@ShotaroKataoka ShotaroKataoka merged commit 72da8c9 into main Jul 8, 2026
13 of 14 checks passed
@ShotaroKataoka ShotaroKataoka deleted the feat/e2e-playwright branch July 8, 2026 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blog:skip ブログ対象外

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant