US03-05: Automate Phase C End-to-End Acceptance (#65)

This commit was merged in pull request #65.
This commit is contained in:
2026-08-15 14:32:11 +02:00
parent 703ed3167d
commit 2d4dd7395c
6 changed files with 420 additions and 8 deletions

View File

@@ -76,3 +76,29 @@ end-to-end suite:
```bash
work_item/scripts/python -m pytest tests/e2e -q
```
### Phase C acceptance gate
Phase C (Epic E03: album evidence, naming policy, versioned proposals, Albums view)
is proven through the real process and browser boundaries. One command runs the
Phase C API and browser (Playwright) suites with the deterministic naming provider:
```bash
work_item/scripts/python -m pytest tests/e2e -m phase_c -q
```
- `tests/e2e/test_phase_c_pipeline.py` drives a real server over HTTP: evidence
aggregation, generation through the deterministic naming fake (asserting the exact
provider inputs and that no file path or asset ID ever reaches it), provider
failure and retry, invalid names, path-separator sanitization, editing with
optimistic versions, stale-evidence approval refusal, valid approval, and
durability across a full restart.
- `tests/e2e/test_albums_ui.py` covers the browser journeys: evidence display,
editing, prompt validation, collision guidance, approval, stale conflict, and
keyboard operation.
- Both suites assert that **no fixture path changes** — Phase C proposes names and
never renames.
The deterministic naming provider is enabled only by test configuration
(`PHOTO_PIPELINE_FAKE_NAMING_LOG`); without it the application falls back to the
offline naming-policy name. Phase A and B suites remain green in the full run above.