0 Environment —
Can this browser do WebRTC, data channels, stats, WebSocket, OPFS? Runs on load.
1 ICE candidates —
The key diagnostic. Shows the addresses this browser will offer a peer, and flags .local (mDNS) host candidates and a missing srflx (STUN failed).
2 Loopback —
Two peers in this one tab, wired directly (no signaling). If this fails, WebRTC itself is broken; if it passes, the stack works and any real-peer failure is signaling or reachability.
3 Signaling —
Tests the WebSocket relay in isolation. Connect, announce into the room, watch raw messages in the log.
4 Real peers —
Full offer/answer over signaling (symmetric handshake, non-trickle). Open this page with the same room in another tab, browser, or device. The table shows each peer's ICE state and the selected candidate pair — i.e. how it connected (host/srflx/relay) or where it's stuck.
5 TURN relay —
Fetches short-lived credentials from a TURN REST endpoint (e.g. the JSS turn plugin), then forces a loopback through the relay only — no host/srflx shortcuts. Passing means peers behind hostile NATs will connect. Fetched credentials are used by every layer for the rest of this session (they expire on their own).