3.9 KiB
P6b — Playwright + MCP integration spec
Branch: feat/p6b-playwright-e2e
Status: SHIPPED (this branch)
Worktree: /root/damascus-orchestrator-p6b
Base: main @ acec3ea (P6a merged)
Background
PR #20 (cfcd571, "Damascus Entry Points P6: E2E verification") already shipped
the P6b deliverables on main — tests/e2e/test_entry_points_e2e.py (667
lines, 4-phase Playwright + MCP test) and tests/e2e/conftest.py. The P6b
kanban card was drafted before the P6 split landed, so the body overlaps with
P6 instead of complementing it.
P6b's contribution on this branch is therefore a re-verification plus a few small improvements:
- Re-verification against post-PR-#21 main — the test runs end-to-end against the stack as it exists after the Ask-Hermes UX PR (#21) merged, and it still passes (3 back-to-back clean runs at 29–33s each).
DAMASCUS_ROOT/DAMASCUS_EVIDENCE_NAMEenv vars — the test now reads these from the environment instead of hardcoding/root/damascus-orchestrator. Same file is now reusable from a worktree.tests/e2e/requirements.txt— pinned deps for a fresh venv.
Changes on this branch vs main
docs/P6B.md | new (this file)
tests/e2e/requirements.txt | new (pinned deps)
tests/e2e/test_entry_points_e2e.py | 6-line patch: env-var indirection
The patched test runs identically against main (where the env vars default
to the original paths). Run from the worktree with:
cd /root/damascus-orchestrator-p6b
DAMASCUS_ROOT=/root/damascus-orchestrator-p6b DAMASCUS_EVIDENCE_NAME=p6b \
python3 -m pytest tests/e2e/test_entry_points_e2e.py -q -s
Evidence (on disk, gitignored)
.hermes/evidence/p6b/
├── README.md (run instructions + AC checklist)
├── pytest.log (3rd consecutive green run, 29.35s)
└── screenshots/
├── 01_dashboard.png
├── 01_ingest.png
├── 02_build.png
├── 03_review.png
├── 04_merged.png
├── 05_awaiting_human_drawer.png
└── 06_answered.png
7 screenshots + pytest.log prove the test ran green against the live stack
on 2026-06-26 14:29 UTC. The .hermes/evidence/ tree is gitignored
(see .gitignore line 46), so evidence is intentionally not committed — it
regenerates from the test.
Acceptance criteria
pytest tests/e2e/test_entry_points_e2e.py -q -sexits 0 (last run:1 passed in 29.35s).- All 7 screenshots present in
.hermes/evidence/p6b/screenshots/. - MCP stdio subprocess communicates cleanly (no init-error logs).
- Spec uses live stack (api at
127.0.0.1:9110, MCP launched in stdio against the api container). - No browser console errors during Phase 2 / 3.
PR description (draft)
Damascus Entry Points — P6b: Playwright + MCP integration spec
Re-verifies the existing P6 e2e test (
tests/e2e/test_entry_points_e2e.py, shipped via PR #20) against the post-PR-#21 stack and adds a tiny ergonomic improvement:DAMASCUS_ROOTandDAMASCUS_EVIDENCE_NAMEare now read from the environment so the same test is reusable from a worktree without forking it. Also addstests/e2e/requirements.txtpinning the test deps.Three back-to-back clean runs at ~30s each against the live stack. Evidence (screenshots + pytest.log) regenerated on the worktree at
.hermes/evidence/p6b/(gitignored by design).Complements P6a (
scripts/verify.sh, bash recipe) and P6 itself (the test file already onmain).
Notes
- The P6b kanban task's body describes the test as "outstanding work" but
the file has been on
mainsince 2026-06-25 via PR #20. The body was drafted before the P6 split, so this branch documents the overlap and ships the small improvement. - CI is intentionally out of scope per the task body. The spec runs locally
against a live
docker compose upstack.