From e318ca09489c84d76b19a0a52ac898410396bf43 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 2 Sep 2024 00:57:00 +0800 Subject: [PATCH] ci: integrate offroad alerts and update notifications to ui report (#33408) add offroad alerts old-commit-hash: db9263d064502000642931742e08a748e586e760 --- .github/workflows/ui_preview.yaml | 12 ++++---- selfdrive/ui/tests/test_ui/run.py | 46 +++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ui_preview.yaml b/.github/workflows/ui_preview.yaml index f0eaaa9038..f46294bf30 100644 --- a/.github/workflows/ui_preview.yaml +++ b/.github/workflows/ui_preview.yaml @@ -76,7 +76,11 @@ jobs: - + + + + + @@ -87,16 +91,12 @@ jobs: - - - - + -
comment_tag: run_id_screenshots diff --git a/selfdrive/ui/tests/test_ui/run.py b/selfdrive/ui/tests/test_ui/run.py index fbdfdca794..cadfd89158 100644 --- a/selfdrive/ui/tests/test_ui/run.py +++ b/selfdrive/ui/tests/test_ui/run.py @@ -13,8 +13,11 @@ import time from cereal import messaging, log from msgq.visionipc import VisionIpcServer, VisionStreamType from cereal.messaging import SubMaster, PubMaster +from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params +from openpilot.common.prefix import OpenpilotPrefix from openpilot.common.transformations.camera import CameraConfig, DEVICE_CAMERAS +from openpilot.selfdrive.controls.lib.alertmanager import set_offroad_alert from openpilot.selfdrive.test.helpers import with_processes from openpilot.selfdrive.test.process_replay.migration import migrate_selfdriveState from openpilot.tools.lib.logreader import LogReader @@ -25,6 +28,7 @@ UI_DELAY = 0.5 # may be slower on CI? TEST_ROUTE = "a2a0ccea32023010|2023-07-27--13-01-19" STREAMS: list[tuple[VisionStreamType, CameraConfig, bytes]] = [] +OFFROAD_ALERTS = ['Offroad_StorageMissing', 'Offroad_IsTakingSnapshot'] DATA: dict[str, capnp.lib.capnp._DynamicStructBuilder] = dict.fromkeys( ["carParams", "deviceState", "pandaStates", "controlsState", "selfdriveState", "liveCalibration", "modelV2", "radarState", "driverMonitoringState", "carState", @@ -42,10 +46,6 @@ def setup_settings_device(click, pm: PubMaster): click(100, 100) -def setup_settings_network(click, pm: PubMaster): - setup_settings_device(click, pm) - click(300, 600) - def setup_onroad(click, pm: PubMaster): setup_common(click, pm) @@ -55,7 +55,7 @@ def setup_onroad(click, pm: PubMaster): vipc_server.start_listener() packet_id = 0 - for _ in range(30): + for _ in range(20): for service, data in DATA.items(): if data: data.clear_write_flag() @@ -108,18 +108,40 @@ def setup_onroad_alert_mid(click, pm: PubMaster): def setup_onroad_alert_full(click, pm: PubMaster): setup_onroad_alert(click, pm, 'Full Alert', 'This is a full alert message', log.SelfdriveState.AlertSize.full) +def setup_offorad_alert(click, pm: PubMaster): + setup_common(click, pm) + for alert in OFFROAD_ALERTS: + set_offroad_alert(alert, True) + + # Toggle between settings and home to refresh the offroad alert widget + setup_settings_device(click, pm) + click(240, 216) + +def setup_update_available(click, pm: PubMaster): + setup_common(click, pm) + Params().put_bool("UpdateAvailable", True) + release_notes_path = os.path.join(BASEDIR, "RELEASES.md") + with open(release_notes_path) as file: + release_notes = file.read().split('\n\n', 1)[0] + Params().put("UpdaterNewReleaseNotes", release_notes + "\n") + + setup_settings_device(click, pm) + click(240, 216) + + CASES = { "homescreen": setup_homescreen, "settings_device": setup_settings_device, - "settings_network": setup_settings_network, "onroad": setup_onroad, "onroad_sidebar": setup_onroad_sidebar, - "onroad_wide": setup_onroad_wide, - "onroad_wide_sidebar": setup_onroad_wide_sidebar, "onroad_alert_small": setup_onroad_alert_small, "onroad_alert_mid": setup_onroad_alert_mid, "onroad_alert_full": setup_onroad_alert_full, - "driver_camera": setup_driver_camera + "onroad_wide": setup_onroad_wide, + "onroad_wide_sidebar": setup_onroad_wide_sidebar, + "driver_camera": setup_driver_camera, + "offroad_alert": setup_offorad_alert, + "update_available": setup_update_available } TEST_DIR = pathlib.Path(__file__).parent @@ -212,8 +234,10 @@ def create_screenshots(): STREAMS.append((VisionStreamType.VISION_STREAM_DRIVER, cam.dcam, driver_img.flatten().tobytes())) t = TestUI() - for name, setup in CASES.items(): - t.test_ui(name, setup) + + with OpenpilotPrefix(): + for name, setup in CASES.items(): + t.test_ui(name, setup) if __name__ == "__main__": print("creating test screenshots")