← Back to docs

Native Kiosk E2E Testbook

End-to-end test for the native Moonlight kiosk streaming path via hydrahead and hydraheadwindows.

Prerequisites


Step 1: Verify hydrahead has stream config

# Check stream config for the test head device
curl -s https://hydrahead.experiencenet.com/api/v1/heads | jq '.[] | select(.name == "TEST_HEAD")'

Expected: A head config exists with:

Step 2: Verify hydraheadwindows agent running

On the kiosk machine:

Get-Service hydraheadwindows

Or check via task manager for the hydraheadwindows process.

Expected: Service is running.

Step 3: Verify hydraheadwindows picks up config

Check hydraheadwindows logs for config poll:

Get-Content C:\ProgramData\hydraheadwindows\logs\hydraheadwindows.log -Tail 20

Expected: Logs show successful config fetch from hydrahead within the poll interval.

Step 4: Verify Moonlight pairs with Sunshine

hydraheadwindows auto-pairs with Sunshine using PIN pairing via WTS session:

  1. Check hydraheadwindows logs for pairing status
  2. On the body, check Sunshine paired clients:
curl -sk https://BODY_IP:47990/api/clients

Expected: The kiosk machine appears as a paired client.

Step 5: Verify fullscreen stream

On the kiosk machine, observe:

  1. Moonlight launches in fullscreen mode
  2. Resolution: 1920x1080 at 60fps
  3. Bitrate: 150 Mbps
  4. No visible UI chrome or taskbar

Expected: Fullscreen UE application stream at 1080p60.

Step 6: Test stream interruption and auto-reconnect

  1. Briefly disconnect the kiosk from the network (unplug ethernet or disable WiFi)
  2. Wait 5-10 seconds
  3. Reconnect the network

Expected: hydraheadwindows detects the disconnection and automatically re-establishes the Moonlight stream within 30 seconds of network restoration.

Step 7: Test config change

  1. Update the stream config in hydrahead:
curl -X PUT https://hydrahead.experiencenet.com/api/v1/heads/TEST_HEAD \
  -H "Content-Type: application/json" \
  -d '{"stream_url": "NEW_BODY_URL", "experience": "new-experience"}'
  1. Wait for the next poll interval

Expected: hydraheadwindows detects the config change, disconnects from the current body, and connects to the new body with the updated experience.


Troubleshooting

| Symptom | Check | |---------|-------| | Agent not running | Service status, Windows event log | | Config not updating | hydrahead API, poll interval, network | | Pairing fails | Sunshine PIN config, WTS session, firewall | | Black screen | GPU driver, Sunshine app registration | | Low FPS/quality | Bitrate setting, network bandwidth, GPU load | | No auto-reconnect | hydraguard tunnel, reconnect timeout |