← Back to docs

Browser Streaming E2E Testbook

End-to-end test for the full browser streaming path: user opens hydraheadwebstream, selects an experience and district, and gets a WebRTC stream.

Prerequisites


Step 1: Health-check all services

Verify all 8 centrally reachable services are healthy:

# Orchestration
curl -sf http://46.225.210.188/health && echo "hydraheadwebstream: OK"
curl -sf https://hydradistrict.experiencenet.com/api/v1/health && echo "hydradistrict: OK"
curl -sf https://hydraexperiencelibrary.experiencenet.com/api/v1/health && echo "hydraexperiencelibrary: OK"
curl -sf https://hydracluster.experiencenet.com/api/v1/health && echo "hydracluster: OK"

# Stream relay
curl -sf https://hydraneckwebrtc.experiencenet.com/health && echo "hydraneckwebrtc: OK"

# Network
curl -sf https://hydraguard.experiencenet.com/api/v1/health && echo "hydraguard: OK"

# Observability
curl -sf https://hydrabodystatus.experiencenet.com/api/v1/health && echo "hydrabodystatus: OK"
curl -sf https://hydranps.experiencenet.com/api/v1/health && echo "hydranps: OK"

Expected: All return HTTP 200.

Step 2: List districts

curl -s https://hydradistrict.experiencenet.com/api/v1/districts | jq '.[]|.name'

Expected: At least one district returned. Note the district name for step 4.

Step 3: List experiences

curl -s https://hydraexperiencelibrary.experiencenet.com/api/v1/experiences | jq '.[]|.name'

Expected: At least one experience returned. Note the experience name for step 4.

Step 4: Open hydraheadwebstream and start a session

  1. Open browser to http://46.225.210.188
  2. Select an experience from the dropdown
  3. Select a district from the dropdown
  4. Click "Start" / "Connect"

Expected: UI shows connecting state.

Step 5: Verify session on hydraneckwebrtc

curl -s https://hydraneckwebrtc.experiencenet.com/api/v1/sessions | jq '.'

Expected: A session object appears with:

Step 6: Verify Sunshine app on body

If you have access to the body's Sunshine API:

# Replace BODY_IP with the assigned body's IP
curl -sk https://BODY_IP:47990/api/apps

Expected: The UE application is listed as a registered app.

Step 7: Verify WebRTC stream connects

In the browser, open developer console (F12):

Expected: Console shows "Connection Complete" or equivalent WebRTC connection success message. Video frames should be rendering in the browser.

Step 8: Verify hydrabodystatus shows active session

curl -s -H "Authorization: Bearer TOKEN" \
  https://hydrabodystatus.experiencenet.com/api/v1/bodies | jq '.[] | select(.stream_status == "streaming")'

Expected: The assigned body shows:

Step 9: Close browser and verify cleanup

  1. Close the browser tab
  2. Wait 30 seconds (grace period)
  3. Check session is cleaned up:
curl -s https://hydraneckwebrtc.experiencenet.com/api/v1/sessions | jq '.'

Expected: Session no longer listed (or marked as ended). The moonlight-web-stream process should be terminated.


Troubleshooting

| Symptom | Check | |---------|-------| | No districts in dropdown | hydradistrict health, API response | | No experiences in dropdown | hydraexperiencelibrary health, API response | | "No bodies available" | hydracluster health, check node availability | | Stream never connects | hydraneckwebrtc logs, WireGuard connectivity | | Black screen | Sunshine app registration, GPU driver on body | | No audio | hydravoice process on body, VB-Cable device |