35 lines
1.4 KiB
Markdown
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.
|