Index: suite_leahi/shared/scripts/configuration/config.py =================================================================== diff -u -ra41aef5f49d9aed41b1d846a4c388459a7c5eed1 -r2973400d6b1fd9c3eb3a585444a3df1d616d5a04 --- suite_leahi/shared/scripts/configuration/config.py (.../config.py) (revision a41aef5f49d9aed41b1d846a4c388459a7c5eed1) +++ suite_leahi/shared/scripts/configuration/config.py (.../config.py) (revision 2973400d6b1fd9c3eb3a585444a3df1d616d5a04) @@ -1,10 +1,3 @@ -# -S, --disable-sd-card-fail-log-stop disable-sd-card-fail-log-stop -# -k, --enable-check-in-log Enables Check-In Log -# -K, --enable-acknow-log Enables Acknowledgment Log - -AUT_NAME = "leahi -k -K -S -q" -AUT_NAME_ONLY = "leahi" # Need only the AUT name for tst_ui_logs, do not add options - # Configuration application_init.py TMP_DIR = "/tmp/" APP_POST_LOG_LOCATION = "".join([str(TMP_DIR),'/post.log']) @@ -24,10 +17,10 @@ "TD Serial Number", "DD Version", "DD FPGA Version", "DD Serial Number", ] #Device Settings Information Version -INFORMATION_SCREEN_TITLE_TEXT = "Information" -INFORMATION_TITLES = ["Information", "Versions"] +INFORMATION_SCREEN_TITLE_TEXT = "Device Information" +INFORMATION_TITLES = ["Versions", "Service"] VERSION_PARAMETERS = [ - "Information", "UI Version", "TD Version", "TD FPGA Version", + "OS Version", "UI Version", "TD Version", "TD FPGA Version", "TD Serial Number", "DD Version", "DD FPGA Version", "DD Serial Number" ] SERVICES_PARAMETERS = [ @@ -36,6 +29,7 @@ ] SERIVCES_TITLE = "Service" WATER_PARAMETERS = ["Water Configuration", "Water Input"] + # General Alarm Requirements Instruction NUM_OF_ALARM_PRIORITIES = 4 # Total number of alarm priorities ALARM_MUTE_FLAG = 0B0000001000000000 @@ -46,24 +40,28 @@ 2 : 'ALARM_PRIORITY_MEDIUM', 3 : 'ALARM_PRIORITY_HIGH', } +MUTE = "Mute" +UMMUTE = "UnMute" +IMAGE_BELLOFF_STATE = "/images/iBellOff" +IMAGE_BELLON_STATE = "/images/iBellOn" +ALARMS_COLORS_HEADER = { + "ALARM_PRIORITY_NONE" : "#438feb", + "ALARM_PRIORITY_LOW" : "#db8f00", + "ALARM_PRIORITY_MEDIUM" : "#db8f00", + "ALARM_PRIORITY_HIGH" : "#c53b33" +} +ALARM_REJECT_NOTIFICATION_TEMPLATE = "No Active Alarm List [{}]" #HeaderBar WiFi WIFI_POPUP_TEXT = "WiFi Connection Error" +WIFI_IMAGE = "/images/iWifi" # Device Settings WiFi WIFI_TEXT = "Wi-Fi" WIFI_PARAMETERS_TEXTS = ["SSID", "IP Address", "Gateway", "Subnet Mask", "DNS"] WIFI_SCREEN_SCAN_BUTTON_TEXT = "SCAN" DISABLED = False -ALARMS_COLORS_HEADER = { - "ALARM_PRIORITY_NONE" : "#438feb", - "ALARM_PRIORITY_LOW" : "#db8f00", - "ALARM_PRIORITY_MEDIUM" : "#db8f00", - "ALARM_PRIORITY_HIGH" : "#c53b33" -} -ALARM_REJECT_NOTIFICATION_TEMPLATE = "No Active Alarm List [{}]" - #Create Rx ACID_CONCENTRATE = ["1.0 K, 2.50 Ca, 1 Mg","2.0 K, 2.50 Ca, 1 Mg","3.0 K, 2.50 Ca, 1 Mg"] DIALYZER_TYPE = ["Diacap Pro 13H","Diacap Pro 16H", "Diacap Pro 19H", "Optiflux F160NRe", "Optiflux F180NRe", "Optiflux F200NRe","Optiflux F250NRe"] @@ -85,16 +83,119 @@ ACTIVE = 'Active' RESUME = 'Resume' COMPLETE = 'Complete' -HEPARIN = "Heparin" -CREATERX = "Rx" -VALIDATE = "Validate" -CONFIRM = "Confirm" -NEXT ="Next" -SYSTOLIC = "Systolic" -DIASTOLIC = "Diastolic" -HEARTRATE = "Heart Rate" +HEPARIN = 'Heparin' +CREATERX = 'Rx' +VALIDATE = 'VALIDATE' +CONFIRM = 'CONFIRM' +NEXT = 'Next' +AUTO_LOAD = 'Auto Load' +WATER_SAMPLE = 'Water Sample' +START = 'Start' +AUTO_EJECT = 'Auto Eject' -MIN_SYSTOLIC = "60" -MIN_DIASTOLIC = "40" -MIN_HEARTRATE = "40" +# Settings Service +DEFAULT_SERVICE_PASSWORD_RAW = "Atal.Matal.22leh" # TODO need to update if we ever change the default +NEW_PASSWORD_RAW = "Test4.Ksah.sk43sa" +MANUFACTURING_SCREEN_TITLE_TEXT = "Manufacturing Setup" +SERVICE_SCREEN_TITLE_TEXT = "Service" +ADVANCED_MODES_SCREEN_TITLE_TEXT = "Advanced Mode" +DATE_AND_TIME_SCREEN_TITLE_TEXT = "Date and Time" +TIME = "Time" +DATE_AND_TIME_PARAMETERS_TEXTS = ["NTP", "(Network Time Protocol)", "Time", "(HH:mm:ss)", "Date", "(MM/dd/yyyy)"] +ENABLE_ROOT_SSH_SCREEN_TITLE_TEXT = "Enable Root SSH" +ENABLE_ROOT_SSH_PARAMETERS_TEXTS = ["Enable SSH Login", "Enable Root Login"] +FACTORY_RESET_SCREEN_TITLE_TEXT = "Factory Reset" +FACTORY_RESET_SCREEN_TEXT = "Do you want to perform the factory reset?" +SET_PASSWORD = "Set Password" +#Blood Set Auto Load +BLOOD_SET_AUTO_LOAD_REJECTION = "[1] Request is not allowed in the current operating mode" +BLOOD_SET_AUTO_EJECT_REJECTION = "[1] Request is not allowed in the current operating mode" +#Feature Options +FEATURE_CONFIGURATIONS_SCREEN_TITLE_TEXT = "Feature Configurations" +FEATURE_CONFIGURATIONS_PARAMETERS_TEXTS = ["Integrated BP Cuff", "Heparin Syringe Pump", "Chemical Disinfection"] +MEASURE_VITALS = "Measure Vitals" + +#Device Settings Options +DEVICE_SETTINGS = "Device Settings" +ADVANCED_MODE = "Advanced Mode" +DEVICE_INFORMATION = "Device Information" +WI_FI = "Wi-Fi" +DEVICE_CLEANING = "Device Cleaning" +SERVICE = "Service" +EXPORT_LOGS = "Export Logs" +VOLUME_AND_BRIGHTNESS = "Volume And Brightness" +FEATURE_CONFIGURATIONS = "Feature Configurations" +ADVANCED_INSTITUTIONAL_SETTINGS = "Advanced Institutional Settings" +FACTORY_RESET = "Factory Reset" +ENABLE_ROOT_SSH = "Enable Root SSH" +INSTITUTIONAL_CONFIGURATIONS = "Institutional Configurations" +DATE_AND_TIME = "Date and Time" +LANGUAGE = "Language" + +#Menu Bar +PRESCRIPTIONS = "Prescriptions" +TREATMENT = "Treatment" +SETTINGS = "Settings" + +# Pre-Treatment Foundation +CONCENTRATES_PAGE_TITLE = "Connect Acid and Bicarbonate Concentrates" +CONCENTRATES_PAGE_CONTENTS = [ + "Remove acid connector and connect to acid concentrate.", + "Connect dry bicarbonate.", +] +INSTALLATION_STEPPER_1_PAGE_TITLE = "Install Blood Tubing Set" +INSTALL_BLOOD_TUBING_SET_CONTENTS = [ + "Open the blood pump door.", + "Insert blood tubing set and ensure it is secure.", + "Push the blood tube into the blood pump.", + "Close the blood pump door.", +] +INSTALLATION_STEPPER_2_PAGE_TITLE = "Install Bloodlines" +INSTALL_BLOODLINES_CONTENTS = [ + "Insert saline line into the first slot.", + "Insert arterial line into the second slot.", + "Ensure the venous line is placed in the bubble detector.", + "Insert the venous line into the third slot.", + "Connect the arterial and venous bloodlines using the recirculation connector.", +] +INSTALLATION_STEPPER_3_PAGE_TITLE = "Install Pressure Lines and Dialyzer" +INSTALL_PRESSURE_LINES_CONTENTS = [ + "Connect the arterial pressure line to the arterial pressure transducer port.", + "Connect the venous pressure line to the venous pressure transducer port.", + "Insert dialyzer into the holder and connect the dialysate lines.", + "Connect the bloodlines to the dialyzer.", + "Clamp the venous chamber line.", + "Clamp the heparin line.", +] +SELF_TESTS_PAGE_CONTENTS = [ + "Auto-Load Blood Tubing", + "Cartridge Install Checks", + "Pressure Leak Check", +] +SALINE_PAGE_TITLE = "Connect Saline Bag" +SALINE_PAGE_CONTENTS = [ + "Hang saline bag on the hook.", + "Clamp saline line.", + "Use the saline line to spike saline bag.", + "Unclamp saline line.", +] +PRIME_PAGE_CONTENTS = ["Blood Tubing Circuit Priming", "Dialysate Circuit Priming"] +CONNECT_PAGE_TITLE = "Connect Bloodlines to the Patient" +CONNECT_PAGE_CONTENTS = [ + "Clamp arterial and venous bloodlines (2 clamps).", + "Remove recirculation connector from the bloodlines.", + "Connect bloodlines to patient access lines.", + "Unclamp arterial and venous bloodlines (2 clamps).", +] +DISCONNECT_PAGE_TITLE = "Remove Concentrates and Blood Tubing Set" +DISCONNECT_PAGE_CONTENTS = [ + "Remove blood tubing set and dialyzer.", + "Remove acid and bicarbonate concentrates.", +] +INSTALLATION_PAGE_TITLE = "Install Concentrates and Blood Tubing Set" +INSTALLATION_PAGE_CONTENTS = [ + "Install acid and bicarbonate concentrates.", + "Install blood tubing set and dialyzer.", +] +START_TREATMENT_REJECTION_NOTIFICATION = "[1] Request is not allowed in the current operating mode" Index: suite_leahi/shared/scripts/configuration/navigation.py =================================================================== diff -u -r5667e686a487da135e622b2ebb0ffacf6a12688f -r2973400d6b1fd9c3eb3a585444a3df1d616d5a04 --- suite_leahi/shared/scripts/configuration/navigation.py (.../navigation.py) (revision 5667e686a487da135e622b2ebb0ffacf6a12688f) +++ suite_leahi/shared/scripts/configuration/navigation.py (.../navigation.py) (revision 2973400d6b1fd9c3eb3a585444a3df1d616d5a04) @@ -1,40 +1,50 @@ import names -import squish import test +import squish from leahi_dialin.ui.td_messaging import TD_Messaging from leahi_dialin.common.td_defs import TDOpModes, TDStandbyStates from configuration import config, utility -from configparser import ConfigParser -from pathlib import Path +from configparser import ConfigParser +from pathlib import Path td_simulator = TD_Messaging() - + def navigate_to_device_settings_screen(): """ - Method to navigate to "Service" screen + Method to navigate to "Device Settings" screen and Compare Device Settings screen title text """ td_simulator.td_operation_mode(TDOpModes.MODE_STAN.value, 0) - settings_menu_object = utility.get_object_from_names( - names.o_Settings_Menu, - error_message="Settings menu object missing", - timeout_ms=1000, - ) - if settings_menu_object is not None: - squish.mouseClick(settings_menu_object) + main_menu_container = squish.waitForObject(names.o_mainMenu_MainMenu, 2000) + squish.mouseClick(utility.findChildByText(main_menu_container, config.SETTINGS)) - device_setting_screen_title_text = utility.get_object_from_names( - names.o_DeviceSettingsTitleText, - error_message="Device Settings Screen title text object missing", - timeout_ms=2000, + headerbar_container = squish.waitForObject(names.o_headerBar_HeaderBar, 2000) + device_setting_screen_headerbar_title_text = utility.findChildByText( + headerbar_container, config.DEVICE_SETTINGS ) - if device_setting_screen_title_text is not None: + if device_setting_screen_headerbar_title_text is not None: test.compare( - device_setting_screen_title_text.text, + device_setting_screen_headerbar_title_text.text, config.DEVICE_SETTINGS_SCREEN_TITLE_TEXT, "{} screen is displayed and Comparison of Device Settings Screen Title text".format( config.DEVICE_SETTINGS_SCREEN_TITLE_TEXT ), ) + +def navigate_to_device_settings_using_service_password(): + td_simulator.td_operation_mode(TDOpModes.MODE_STAN.value, 0) + main_menu_container = squish.waitForObject(names.o_mainMenu_MainMenu, 2000) + squish.mouseClick(utility.findChildByText(main_menu_container, config.SETTINGS)) + + td_simulator.td_operation_mode(TDOpModes.MODE_SERV.value, 0) + grid_container = squish.waitForObject(names.o_DeviceSettingsGrid) + squish.mouseClick(utility.findChildByText(grid_container, config.SERVICE)) + + input_field = squish.waitForObject(names.o_userConfirmation_TextInput, 1000) + + squish.type(input_field, config.DEFAULT_SERVICE_PASSWORD_RAW) + confirm_button = squish.waitForObject(names.o_userConfirmation_ConfirmButton, 1000) + squish.mouseClick(confirm_button) + def get_ini_value(conf_path: str , section: str, key: str): """ Method to get the advanced option from the System.conf file @@ -88,4 +98,5 @@ Nextbutton = utility.setObjectText(obj =names.o_preTreatmentStack_Text, text =config.NEXT) squish.mouseClick(Nextbutton) - test.endSection() \ No newline at end of file + test.endSection() + Index: suite_leahi/shared/scripts/configuration/utility.py =================================================================== diff -u -r5667e686a487da135e622b2ebb0ffacf6a12688f -r2973400d6b1fd9c3eb3a585444a3df1d616d5a04 --- suite_leahi/shared/scripts/configuration/utility.py (.../utility.py) (revision 5667e686a487da135e622b2ebb0ffacf6a12688f) +++ suite_leahi/shared/scripts/configuration/utility.py (.../utility.py) (revision 2973400d6b1fd9c3eb3a585444a3df1d616d5a04) @@ -2,14 +2,69 @@ import test import object import names -from leahi_dialin.ui import utils -from builtins import int as pyInt -from configuration import config,navigation from leahi_dialin.ui.td_messaging import TD_Messaging +from leahi_dialin.common.td_defs import TDOpModes,TDTreatmentStates +from configuration import config, navigation +from leahi_dialin.ui import utils +from builtins import int as pyInt + td =TD_Messaging() -def get_object_from_names(names_dict, error_message = "Missing object", timeout_ms = 200): +def aut(*args): """ + Joins the executable name and argument + into a single command string +* Options: + * -h, --help Displays help on commandline options. + * --help-all Displays help including Qt specific + * options. + * -v, --version Displays version information. + * -c, --canOut Show the Can Frame Output + * -m, --msgOut Show the Message Output + * -l, --logOut Show the Logs Output + * -0, --enable-keep-awake Enable send low priority, empty message + * on the CANBus just to keep UI board CAN + * driver awake + * -i, --fake-interval Test fake message interval(ms) + * -f, --fake-message Test fake message data + * will use default sequenced long fake + * message if set to 00(default) + * will used only if correct integer value + * assigned for interval option + * -b, --fake-message-seq-at-begin Test fake message sequence at the + * beginning of the frame + * -u, --disable-unhandled-report Disable unhandled messages report as an + * error in the log + * -d, --disable-dialin-unhandled Disable the Dialin messages logged as + * unhandled + * -q, --disable-timeout Disables communication timeout + * -a, --disable-alarm-no-minimize Disables alarm no minimize + * -S, --disable-sd-card-fail-log-stop disable-sd-card-fail-log-stop + * -C, --disable-cloudsync-fail-stop disable-cloudsync-fail-stop + * -k, --disable-check-in-log Disables Check-In Log + * -K, --disable-acknow-log Disables Acknowledgment Log + * -D, --enable-dry-demo Enables Dry-Demo Mode + * -A, --active-can-bus Sets the Active CANBus [Shall start with + * 'can' or 'vcan] + * -E, --enable-manufacturing Enables the manufacturing mode to + * configure the system for the first time. + * -R, --use-root-home In case the application is not in + * Manufacturing Setup but needs to use root + * home folder for configurations. + * -U, --enable-update-mode Enables the update mode to update only + * necessary files during the update and + * keep the rest. + * -x, --use-log-long-name Use the log long file name format + * _