Files
kaykayyali 402193e9ab
Some checks failed
test / contract-and-unit (push) Failing after 14s
feat(e2e): P6b Playwright + MCP spec (env indirection + pinned deps) (#24)
2026-06-27 16:38:37 +00:00

3.9 KiB
Raw Permalink Blame History

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 maintests/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:

  1. 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 2933s each).
  2. DAMASCUS_ROOT / DAMASCUS_EVIDENCE_NAME env vars — the test now reads these from the environment instead of hardcoding /root/damascus-orchestrator. Same file is now reusable from a worktree.
  3. 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 -s exits 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_ROOT and DAMASCUS_EVIDENCE_NAME are now read from the environment so the same test is reusable from a worktree without forking it. Also adds tests/e2e/requirements.txt pinning 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 on main).

Notes

  • The P6b kanban task's body describes the test as "outstanding work" but the file has been on main since 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 up stack.