|
|
|
@ -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): |
|
|
|
|