Plays about 30 s behind live. During a deploy or engine restart, "buffered ahead" drains and then refills; you should not hear a gap.
A few seconds behind live. If the engine itself restarts this reconnects automatically after a short gap. Web app deploys don't affect it.
loading...
The full end-to-end suite signs in, queues and skips tracks, streams a synthetic 1 kHz mic to check it reaches listeners, checks cough mutes it, fires a sound effect, and checks HLS advances. Locally it can also restart the web app and the engine mid-stream to prove listeners and mics stay connected.
npm --prefix web test # unit tests (queue + auto-DJ logic) docker compose up -d && node tests/e2e.mjs --restart # full local run incl. restarts WEB=https://triplec.andrewmcgrath.info ENGINE=https://stream.triplec.andrewmcgrath.info \ ADMIN_USER=... ADMIN_PASSWORD=... node tests/e2e.mjs # against production