every.channel/evolution/proposals/ECP-0045-remote-website-e2e-direct.md
2026-02-15 16:17:27 -05:00

35 lines
1.4 KiB
Markdown

# ECP-0045: Remote Website E2E Test Against Local Direct Publisher
## Why
We ship a static website at `every.channel`, but the critical path is still end-to-end playback:
- a local node publishes a live CMAF stream, and
- the deployed website can connect and play it.
Unit tests and local trunk builds do not validate this “real site + real browser engine” path.
## Proposal
Add an ignored, automated E2E harness that (on macOS using installed Chrome):
1. Generates a short deterministic A/V MPEG-TS fixture (ffmpeg lavfi).
2. Starts `ec-node direct-publish` locally and captures the offer link.
3. Launches headless Chrome via DevTools and opens `https://every.channel`.
4. Pastes the offer link into the UI, triggers “Parse link” and “Tune in”.
5. Extracts the reply link from the UI and feeds it back to the publisher stdin.
6. Asserts the website transitions to “Live” and a `<video>` element is present with a `blob:` src.
This validates:
- deployed asset correctness,
- the web WebRTC answerer path,
- MSE append and playback wiring,
- the direct publisher output framing.
## Scope (initial)
- Rust E2E test using a headless Chrome DevTools client, marked `#[ignore]`.
- Runs in `nix develop` to ensure `ffmpeg` and `cargo` exist; uses the system Chrome app on macOS.
- Default `SITE_URL=https://every.channel`, overridable for staging.
## Reversibility
High. The harness is external to core codepaths and can be removed without protocol impact.