Skip to content

New Release Checklist

Quick function check

  • [ ] Viewer starts
  • [ ] Streamer starts
  • [ ] Direct connection is working
  • [ ] Relay connection is working

In depth check

Most issues should be caught by the extensive test suite, a manual check should still be performed, especially before major releases.

Viewer (Desktop)

  • [ ] Can open menu
  • [ ] Can switch tabs
  • [ ] Can close menu (via [ESC] and back button)
  • [ ] General: Disabling connection info works
  • [ ] General: Fullscreen toggle works via checkbox and [F11] (updates the checkbox correctly)
  • [ ] Input: Detects gamepad for calibration
  • [ ] Input: Can calibrate Gamepad
  • [ ] Input: Saves calibration between restarts
  • [ ] Input: Saves calibration for multiple gampepads/wheels
  • [ ] Input: can map buttons on gamepad
  • [ ] Input: can set deadband on gamepad
  • [ ] Input: can invert axis on gamepad
  • [ ] Input: Can remap Key-bindings
  • [ ] Input: Shows axis input for calibrated gamepad
  • [ ] OSD: elements can be enabled/disabled
  • [ ] OSD: Setting changes are visible without restart
  • [ ] Network: Toggling "Use UDP Relay" checkbox reconnects on "Save" and Back
  • [ ] Network: Spectator Mode connects with valid spectator ID
  • [ ] Streamer: Can start/stop video
  • [ ] Streamer: Can reboot streamer
  • [ ] Streamer: Can shutdown streamer
  • [ ] Streamer: Can start/stop recording via hotkey
  • [ ] Streamer: Can start/stop recording via button on gamepad
  • [ ] Quit button stops the viewer

Main screen

  • [ ] Displays direct connection settings
  • [ ] Keyboard inputs detected
  • [ ] Gamepad inputs detected
  • [ ] Throttle widget updates on input
  • [ ] Steering widget updates on input
  • [ ] Debug widgets are updating correctly
  • [ ] Reception widget is updating correctly
  • [ ] Battery widget is updating correctly
  • [ ] Toggling fullscreen with [F11] works
  • [ ] Fullscreen setting remembered between restarts
  • [ ] Saving settings is working (settings are reloaded after viewer restart)
  • [ ] Debug flag shows additional output
  • [ ] Video from streamer is correctly displayed in viewer
  • [ ] Viewer shows recording indicator when recording has been triggered from viewer
  • [ ] Viewer shows recording indicator when auto recording is enabled on the streamer
  • [ ] Trimming with hotkeys works
  • [ ] Toggling recording works with hotkey

Edge Cases

  • [ ] Reboot streamer while viewer is running, make sure viewer will re-connect

Viewer (Android)

  • [ ] Can open app
  • [ ] Shows warning without session ID
  • [ ] Connects with valid session ID
  • [ ] Shows error with invalid session ID
  • [ ] Allows starting/stopping video from portrait mode
  • [ ] Allows starting/stopping recording from portrait mode
  • [ ] Shuts down from portrait mode
  • [ ] Reboots from portrait mode
  • [ ] Shows latency mode in portrait mode
  • [ ] Shows battery voltage in portrait mode
  • [ ] Shows signal reception in portrait mode
  • [ ] Shows image in landscape mode
  • [ ] Shows battery info in landscape mode
  • [ ] Shows signal info in landscape mode
  • [ ] Touch control works
  • [ ] Motion control works
  • [ ] Pairing gamepad works
  • [ ] Control via gamepad works
  • [ ] OSD elements are shown based on toggled settings
  • [ ] No signal/video is shown when control/video channel are lost
  • [ ] Disconnect works

Streamer

  • [ ] Web interface is accessible in Client mode
  • [ ] Streamer starts in AP mode when no known Host WiFi is nearby
  • [ ] Web interface is accessible in AP mode
  • [ ] Control service auto starts by default
  • [ ] Video service autostarts when configured to do so
  • [ ] Settings are saved between reboots
  • [ ] Remounting to RW works (disables overlay FS and remounts /root/firmeare as RW)
  • [ ] Remounting to RO works (reverse from above)
  • [ ] Shows RO state on login via SSH
  • [ ] Shows connection info on login via SSH

Relay Testing

  • Make sure, viewer, streamer and spectator all connect from the same IP.

Relay Test Button in Viewer Menu

  • [x] Use the test button with an invalid session ID
  • [x] Use the test button with a valid session ID
  • [x] Use the test button with an invalid spectator ID
  • [x] Use the test button with a valid spectator ID

UDP Detailed testing

Verify with the stats dashboard if needed - make sure UDP is used on both ends.

  • [ ] Establish session, make sure the timeouts keep getting updated while both peers are connected
  • [ ] Establish session, restart viewer, make sure session is picked up again.
  • [ ] Establish session, restart streamer, make sure session is picked up again.
  • [ ] Establish session, change ports on viewer, restart viewer, make sure session is picked up again.
  • [ ] Establish session, change ports on streamer, restart streamer, make sure session is picked up again.
  • [ ] Establish session, stop viewer, wait for the session to time out. Make sure session is picked up again when starting the viewer.
  • [ ] Establish session, stop Streamer, wait for the session to time out. Make sure session is picked up again when starting the streamer.
  • [ ] Make sure timeouts are updated while session is fully established
  • [ ] Make sure timeouts are updated when viewer is disconnected and viewer is removed from session
  • [ ] Make sure timeouts are update when streamer is disconnected and streamer is removed from session
  • [ ] Make sure timeouts are updated when streamer and viewer are disconnected and session is removed

TCP Detailed testing

Verify with the stats dashboard if needed - make sure TCP is used on both ends. * [ ] Establish session, make sure the timeouts keep getting updated while both peers are connected * [ ] Establish session, restart viewer, make sure session is picked up again. * [ ] Establish session, restart streamer, make sure session is picked up again. * [ ] Establish session, change ports on viewer, restart viewer, make sure session is picked up again. * [ ] Establish session, change ports on streamer, restart streamer, make sure session is picked up again. * [ ] Establish session, stop viewer, wait for the session to time out. Make sure session is picked up again when starting the viewer. * [ ] Establish session, stop Streamer, wait for the session to time out. Make sure session is picked up again when starting the streamer. * [ ] Make sure timeouts are updated while session is fully established * [ ] Make sure timeouts are updated when viewer is disconnected and viewer is removed from session * [ ] Make sure timeouts are update when streamer is disconnected and streamer is removed from session * [ ] Make sure timeouts are updated when streamer and viewer are disconnected and session is removed

Mixed Mode Detailed testing 1/3

Verify with the stats dashboard if needed - make sure TCP is used on the streamer, UDP on the viewer. * [ ] Establish session, make sure the timeouts keep getting updated while both peers are connected * [ ] Establish session, restart viewer, make sure session is picked up again. * [ ] Establish session, restart streamer, make sure session is picked up again. * [ ] Establish session, change ports on viewer, restart viewer, make sure session is picked up again. * [ ] Establish session, change ports on streamer, restart streamer, make sure session is picked up again. * [ ] Establish session, stop viewer, wait for the session to time out. Make sure session is picked up again when starting the viewer. * [ ] Establish session, stop Streamer, wait for the session to time out. Make sure session is picked up again when starting the streamer. * [ ] Make sure timeouts are updated while session is fully established * [ ] Make sure timeouts are updated when viewer is disconnected and viewer is removed from session * [ ] Make sure timeouts are update when streamer is disconnected and streamer is removed from session * [ ] Make sure timeouts are updated when streamer and viewer are disconnected and session is removed

Mixed Mode Detailed testing 2/3

Verify with the stats dashboard if needed - make sure UDP is used on the streamer, TCP on the viewer. * [ ] Establish session, make sure the timeouts keep getting updated while both peers are connected * [ ] Establish session, restart viewer, make sure session is picked up again. * [ ] Establish session, restart streamer, make sure session is picked up again. * [ ] Establish session, change ports on viewer, restart viewer, make sure session is picked up again. * [ ] Establish session, change ports on streamer, restart streamer, make sure session is picked up again. * [ ] Establish session, stop viewer, wait for the session to time out. Make sure session is picked up again when starting the viewer. * [ ] Establish session, stop Streamer, wait for the session to time out. Make sure session is picked up again when starting the streamer. * [ ] Make sure timeouts are updated while session is fully established * [ ] Make sure timeouts are updated when viewer is disconnected and viewer is removed from session * [ ] Make sure timeouts are update when streamer is disconnected and streamer is removed from session * [ ] Make sure timeouts are updated when streamer and viewer are disconnected and session is removed

Mixed Mode Detailed testing 3/3

  • [ ] Make sure that switching protocol on the viewer will allow the viewer to reconnect
  • [ ] Make sure that switching protocol on the streamer will allow the streamer to reconnect

Spectator

Make sure the session is established before attempting to connect.

  • [ ] Make sure you can connect to a session as spectator via UDP while streamer is transmitting via UDP
  • [ ] Make sure you can connect to a session as spectator via TCP while streamer is transmitting via UDP
  • [ ] Make sure you can connect to a session as spectator via UDP while streamer is transmitting via TCP
  • [ ] Make sure you can connect to a session as spectator via TCP while streamer is transmitting via TCP
  • [ ] Restart Spectator, make sure you can reconnect via UDP
  • [ ] Restart Spectator, make sure you can reconnect via TCP
  • [ ] Make sure you can switch from TCP to UDP
  • [ ] Make sure you can switch from UDP to TCP
  • [ ] Make sure the timeout is properly updated while connected via UDP
  • [ ] Make sure the timeout is properly updated while connected via TCP
  • [ ] Make sure the timeout is properly updated when disconnected and spectator is removed via UDP
  • [ ] Make sure the timeout is properly updated when disconnected and spectator is removed via TCP

Android

When you reached this point, we can assume that the relay itself is working as it is expected to. This will validate that the android viewer matches the functionality of the Desktop Viewer.

Viewer
  • [ ] Make sure you can establish a new session via UDP
  • [ ] Make sure you can establish a new session via TCP
  • [ ] Make sure you can switch between UDP and TCP
Spectator
  • [ ] Make sure you can join a session via UDP
  • [ ] Make sure you can join session via TCP
  • [ ] Make sure you can switch between UDP and TCP
  • [ ] Make sure timeouts are updated while connected
  • [ ] Make sure spectator is removed when disconnected

Discord bot

  • [ ] Requesting ID works (session ID & spectator id)
  • [ ] Reewing ID works (session ID & spectator id are both changed)
  • [ ] Stats are displayed
  • [ ] Stats are only displayed to users with stats role