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")