diff --git a/selfdrive/ui/tests/test_ui/raylib_screenshots.py b/selfdrive/ui/tests/test_ui/raylib_screenshots.py index 3f3958f9d3..013287aaeb 100755 --- a/selfdrive/ui/tests/test_ui/raylib_screenshots.py +++ b/selfdrive/ui/tests/test_ui/raylib_screenshots.py @@ -19,6 +19,9 @@ from openpilot.selfdrive.test.helpers import with_processes from openpilot.selfdrive.selfdrived.alertmanager import set_offroad_alert from openpilot.system.updated.updated import parse_release_notes +AlertSize = log.SelfdriveState.AlertSize +AlertStatus = log.SelfdriveState.AlertStatus + TEST_DIR = pathlib.Path(__file__).parent TEST_OUTPUT_DIR = TEST_DIR / "raylib_report" SCREENSHOTS_DIR = TEST_OUTPUT_DIR / "screenshots" @@ -126,6 +129,71 @@ def setup_experimental_mode_description(click, pm: PubMaster): click(1200, 280) # expand description for experimental mode +def setup_onroad(click, pm: PubMaster): + ds = messaging.new_message('deviceState') + ds.deviceState.started = True + + ps = messaging.new_message('pandaStates', 1) + ps.pandaStates[0].pandaType = log.PandaState.PandaType.dos + ps.pandaStates[0].ignitionLine = True + + driverState = messaging.new_message('driverStateV2') + driverState.driverStateV2.leftDriverData.faceOrientation = [0, 0, 0] + + for _ in range(5): + pm.send('deviceState', ds) + pm.send('pandaStates', ps) + pm.send('driverStateV2', driverState) + ds.clear_write_flag() + ps.clear_write_flag() + driverState.clear_write_flag() + time.sleep(0.05) + + +def setup_onroad_sidebar(click, pm: PubMaster): + setup_onroad(click, pm) + click(100, 100) # open sidebar + + +def setup_onroad_small_alert(click, pm: PubMaster): + setup_onroad(click, pm) + alert = messaging.new_message('selfdriveState') + alert.selfdriveState.alertSize = AlertSize.small + alert.selfdriveState.alertText1 = "Small Alert" + alert.selfdriveState.alertText2 = "This is a small alert" + alert.selfdriveState.alertStatus = AlertStatus.normal + for _ in range(5): + pm.send('selfdriveState', alert) + alert.clear_write_flag() + time.sleep(0.05) + + +def setup_onroad_medium_alert(click, pm: PubMaster): + setup_onroad(click, pm) + alert = messaging.new_message('selfdriveState') + alert.selfdriveState.alertSize = AlertSize.mid + alert.selfdriveState.alertText1 = "Medium Alert" + alert.selfdriveState.alertText2 = "This is a medium alert" + alert.selfdriveState.alertStatus = AlertStatus.userPrompt + for _ in range(5): + pm.send('selfdriveState', alert) + alert.clear_write_flag() + time.sleep(0.05) + + +def setup_onroad_full_alert(click, pm: PubMaster): + setup_onroad(click, pm) + alert = messaging.new_message('selfdriveState') + alert.selfdriveState.alertSize = AlertSize.full + alert.selfdriveState.alertText1 = "TAKE CONTROL IMMEDIATELY" + alert.selfdriveState.alertText2 = "Calibration Invalid: Remount Device & Recalibrate" + alert.selfdriveState.alertStatus = AlertStatus.critical + for _ in range(5): + pm.send('selfdriveState', alert) + alert.clear_write_flag() + time.sleep(0.05) + + CASES = { "homescreen": setup_homescreen, "homescreen_paired": setup_homescreen, @@ -145,6 +213,11 @@ CASES = { "offroad_alert": setup_offroad_alert, "confirmation_dialog": setup_confirmation_dialog, "experimental_mode_description": setup_experimental_mode_description, + "onroad": setup_onroad, + "onroad_sidebar": setup_onroad_sidebar, + "onroad_small_alert": setup_onroad_small_alert, + "onroad_medium_alert": setup_onroad_medium_alert, + "onroad_full_alert": setup_onroad_full_alert, } @@ -155,7 +228,7 @@ class TestUI: def setup(self): # Seed minimal offroad state - self.pm = PubMaster(["deviceState"]) + self.pm = PubMaster(["deviceState", "pandaStates", "driverStateV2", "selfdriveState"]) ds = messaging.new_message('deviceState') ds.deviceState.networkType = log.DeviceState.NetworkType.wifi for _ in range(5):