---
key: testing.live-e2e-prepush-timing
title: 2026-07-21 — Live-E2E runs BEFORE the push, and downloads are curled, not browsed (#542)
status: active
since: '2026-07-21'
supersedes: none
superseded-by: none
rule: Run live-E2E via `scripts/e2e-local.sh` before pushing a write-path or UI change, and exercise download endpoints with curl, never a browser tab.
signals: 'live E2E timing · pre-push validation · `scripts/e2e-local.sh` · download endpoint · browser tab · paths: `scripts/e2e-local.sh`, `docs/e2e-local.md` · issues: #542'
mechanics: 'Seeding recipe: `docs/e2e-local.md` → "Seeding a local TV library for E2E" (tiny ffmpeg testsrc MKVs + `LibraryPath` SQL rows + scan). The *requirement* itself is `release.live-e2e-required`; this record adds only the timing and the download rule.'
---

Live-E2E after the push wastes a CI run to learn something the local harness would have said first —
and on this Gitea a run cannot be cancelled. Fold E2E findings into the branch while nothing is pushed.

Download endpoints must be curled for the same reason as the Playwright rule: a tab has no page to
settle on and the browser tool hangs.
