Native Kiosk E2E Testbook
End-to-end test for the native Moonlight kiosk streaming path via hydrahead and hydraheadwindows.
Prerequisites
- A kiosk machine running hydraheadwindows
- hydrahead service running with a stream config for the test device
- Body available in the target district with Sunshine running
- WireGuard connectivity (hydraguard)
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:
stream_url: points to a body's Sunshine instanceexperience: the configured experiencedistrict: the target district
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:
- Check hydraheadwindows logs for pairing status
- 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:
- Moonlight launches in fullscreen mode
- Resolution: 1920x1080 at 60fps
- Bitrate: 150 Mbps
- No visible UI chrome or taskbar
Expected: Fullscreen UE application stream at 1080p60.
Step 6: Test stream interruption and auto-reconnect
- Briefly disconnect the kiosk from the network (unplug ethernet or disable WiFi)
- Wait 5-10 seconds
- 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
- 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"}'
- 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 |