Index: tst_main_treatment_vitals/test.py =================================================================== diff -u -r6bb43117bca2673c5de877f5b70b094da344418a -r5d6a0bb96d04a86cc10936ac3f303c28be3bb249 --- tst_main_treatment_vitals/test.py (.../test.py) (revision 6bb43117bca2673c5de877f5b70b094da344418a) +++ tst_main_treatment_vitals/test.py (.../test.py) (revision 5d6a0bb96d04a86cc10936ac3f303c28be3bb249) @@ -11,14 +11,14 @@ # date 05/31/2022 # author Papiya Mandal -import builtins import names import time from configuration import config, utility +from configuration import application_init as application_init from dialin.ui import utils from dialin.ui.hd_simulator import HDSimulator -from dialin.common.hd_defs import PreTreatmentSubModes, HDOpModes, HDStandbyStates, PreTreatmentSampleWaterStates, PreTreatmentConsumableSelfTestStates, PreTreatmentNoCartSelfTestStates, PreTreatmentCartridgeInstallStates, PreTreatmentDrySelfTestsStates, PreTreatmentPrimeStates, PreTreatmentRecircStates, PreTreatmentPatientConnectionStates, TreatmentStates, UFStates, SalineBolusStates, HeparinStates +from dialin.common.hd_defs import PreTreatmentSubModes, HDOpModes, HDStandbyStates, PreTreatmentSampleWaterStates, PreTreatmentConsumableSelfTestStates, PreTreatmentNoCartSelfTestStates, PreTreatmentCartridgeInstallStates, PreTreatmentDrySelfTestsStates, PreTreatmentPrimeStates, PreTreatmentRecircStates, PreTreatmentPatientConnectionStates, TreatmentStates, UFStates, SalineBolusStates, HeparinStates,PreTreatmentWetSelfTestStates,HDPreTreatmentReservoirMgmtStates, BloodLeakZeroingStates from time import strftime # from dialin.ui.utils import waitForGUI @@ -140,34 +140,6 @@ return start_time -def verify_color_of_entry(entry, vital_parameter, input_field): - """ - Method to verify the color of entry - of systolic, diastolic and heart rate - @param entry: (int) user user entered value - @param vital_parameter - (str) parameter name under which user is entering value (sys/dia/heart rate) - @param input_field - (obj) object of input field - """ - test.startSection("Verify the color of {} value {}".format(vital_parameter, entry)) - input_field_color = input_field.color.name - entry = builtins.int(entry) - if vital_parameter is config.SYSTOLIC_TEXT: - if (entry < config.SYSTOLIC_LOWER_LIMIT) or (entry > config.SYSTOLIC_UPPER_LIMIT): - test.compare(input_field_color, config.OUT_OF_RANGE_COLOR, "systolic value {} is out of range, systolic value should be in range of {} and {}".format(entry, config.SYSTOLIC_LOWER_LIMIT, config.SYSTOLIC_UPPER_LIMIT)) - elif (entry >= config.SYSTOLIC_LOWER_LIMIT) and (entry <= config.SYSTOLIC_UPPER_LIMIT): - test.compare(input_field_color, config.IN_RANGE_COLOR, "systolic value {} is in range of {} and {}".format(entry, config.SYSTOLIC_LOWER_LIMIT, config.SYSTOLIC_UPPER_LIMIT)) - elif vital_parameter is config.DIASTOLIC_TEXT: - if (entry < config.DIASTOLIC_LOWER_LIMIT) or (entry > config.DIASTOLIC_UPPER_LIMIT): - test.compare(input_field_color, config.OUT_OF_RANGE_COLOR, "diastolic value {} is out of range, diastolic value should be in range of {} and {}".format(entry, config.DIASTOLIC_LOWER_LIMIT, config.DIASTOLIC_UPPER_LIMIT)) - elif (entry >= config.DIASTOLIC_LOWER_LIMIT) and (entry <= config.DIASTOLIC_UPPER_LIMIT): - test.compare(input_field_color, config.IN_RANGE_COLOR, "diastolic value {} is in range of {} and {}".format(entry, config.DIASTOLIC_LOWER_LIMIT, config.DIASTOLIC_UPPER_LIMIT)) - elif vital_parameter is config.HEART_RATE_TITLE: - if (entry < config.HEART_RATE_LOWER_LIMIT) or (entry > config.HEART_RATE_UPPER_LIMIT): - test.compare(input_field_color, config.OUT_OF_RANGE_COLOR, "Heart Rate value {} is out of range, Heart Rate value should be in range of {} and {}".format(entry, config.HEART_RATE_LOWER_LIMIT, config.HEART_RATE_UPPER_LIMIT)) - elif (entry >= config.HEART_RATE_LOWER_LIMIT) and (entry <= config.HEART_RATE_UPPER_LIMIT): - test.compare(input_field_color,config.IN_RANGE_COLOR, "Heart Rate value {} is in range of {} and {}".format(entry, config.HEART_RATE_LOWER_LIMIT, config.HEART_RATE_UPPER_LIMIT)) - test.endSection() - def verify_last_read_time(saved_time): """ @@ -176,7 +148,7 @@ """ test.startSection("Verify the last read of blood pressure and heart rate") test.log("Expected last read logs on current date and time") - expected_last_read = "Interval: off , Last Read: {}".format(saved_time) + expected_last_read = "Interval: OFF , Last Read: {}".format(saved_time) expected_interval_status = (str(expected_last_read)).split(",") expected_interval_data = expected_interval_status[0] expected_last_read_data = expected_interval_status[1].split(":") @@ -201,7 +173,6 @@ test.compare(last_read_time_without_sec, expected_last_read_time_without_sec, "Last read time should be {}".format(expected_last_read_time_without_sec)) test.endSection() - def verify_entered_value_in_main_treatment_screen(value, vital, save): """ Method to verify the user entered value in main-treatment screen @@ -237,39 +208,76 @@ test.endSection() -def verify_ranges_of_vital(vital_parameter): +def verify_ranges_of_vital(vital_parameter, + set_single_systolic_value = False, systolic_value_to_set = 0, systolic_value_set = SYSTOLIC_VALUES, + set_single_diastolic_value = False, diastolic_value_to_set = 0, diastolic_value_set = DIASTOLIC_VALUES, + set_single_hr_value = False, hr_value_to_set = 0, hr_value_set = HEART_RATE_VALUES): """ Method to verify the in range value for Blood Pressure Systolic and diastolic and heart rate @param vital_parameter - (str) parameter name under which user is entering value (sys/dia/heart rate) + @param set_single_*_value - indicate whether only setting a single value without traversing list of values + @param *_value_to_set - the single value to set if the set_single_*_value is True, ignored otherwise """ test.startSection("Verify the range of {}".format(vital_parameter)) - if vital_parameter is config.SYSTOLIC_TEXT: - systolic = waitForObject(names.o_pop_up_systolic_input_field) + systolic = waitForObject(names.o_pop_up_systolic_input_field) + diastolic = waitForObject(names.o_pop_up_diastolic_input_field) + hr = waitForObject(names.o_pop_up_heart_rate_input_field) + + is_completed = (str(systolic.text) != "") and (str(diastolic.text) != "") + + test.log(str(is_completed)) + + # HANDLE FOR SYSTOLIC FIELD + if set_single_systolic_value: mouseClick(systolic) - for value in SYSTOLIC_VALUES: + utility.enter_keypad_value(str(systolic_value_to_set)) + verify_entered_value_in_pop_up(value=str(systolic_value_to_set), input_field=systolic, vital=config.SYSTOLIC_TEXT) + + if (vital_parameter is config.SYSTOLIC_TEXT) and (set_single_systolic_value is not True): + mouseClick(systolic) + for value in systolic_value_set: utility.enter_keypad_value(str(value)) verify_entered_value_in_pop_up(value=str(value), input_field=systolic, vital=vital_parameter) - verify_color_of_entry(entry=value, vital_parameter=config.SYSTOLIC_TEXT, input_field=systolic) + is_BP_valid = systolic.text.toInt() >= diastolic.text.toInt() + + #DEBUG test.log(("bp is valid {} comparing {} >= {}").format(is_BP_valid,systolic.text.toInt(),diastolic.text.toInt())) + is_completed = is_completed and is_BP_valid + utility.verify_color_of_entry(entry=value, vital_parameter=config.SYSTOLIC_TEXT, input_field=systolic, is_complete= is_completed) utility.erase_entered_value(input_field=systolic) - elif vital_parameter is config.DIASTOLIC_TEXT: - diastolic = waitForObject(names.o_pop_up_diastolic_input_field) + + # HANDLE FOR DIASTOLIC FIELD: + if set_single_diastolic_value: mouseClick(diastolic) - for value in DIASTOLIC_VALUES: + utility.enter_keypad_value(str(diastolic_value_to_set)) + verify_entered_value_in_pop_up(value=str(diastolic_value_to_set), input_field=diastolic, vital=config.DIASTOLIC_TEXT) + + if (vital_parameter is config.DIASTOLIC_TEXT) and (set_single_diastolic_value is not True): + mouseClick(diastolic) + for value in diastolic_value_set: utility.enter_keypad_value(str(value)) verify_entered_value_in_pop_up(value=str(value), input_field=diastolic, vital=vital_parameter) - verify_color_of_entry(entry=value, vital_parameter=config.DIASTOLIC_TEXT, input_field=diastolic) + is_BP_valid = systolic.text.toInt() >= diastolic.text.toInt() + + test.log(("bp is valid {} comparing {} >= {}").format(is_BP_valid,systolic.text.toInt(),diastolic.text.toInt())) + is_completed = is_completed and is_BP_valid + utility.verify_color_of_entry(entry=value, vital_parameter=config.DIASTOLIC_TEXT, input_field=diastolic, is_complete= is_completed) utility.erase_entered_value(diastolic) - utils.waitForGUI(1) - elif vital_parameter is config.HEART_RATE_TITLE: - hr = waitForObject(names.o_pop_up_heart_rate_input_field) + + # HANDLE FOR HR FIELD + if set_single_hr_value: mouseClick(hr) - for value in HEART_RATE_VALUES: + utility.enter_keypad_value(str(hr_value_to_set)) + verify_entered_value_in_pop_up(value=str(hr_value_to_set), input_field=hr, vital=config.HEART_RATE_TITLE) + + if (vital_parameter is config.HEART_RATE_TITLE) and (set_single_hr_value is not True): + mouseClick(hr) + for value in hr_value_set: utility.enter_keypad_value(str(value)) verify_entered_value_in_pop_up(value=str(value), input_field=hr, vital=vital_parameter) - verify_color_of_entry(entry=value, vital_parameter=config.HEART_RATE_TITLE, input_field=hr) + utility.verify_color_of_entry(entry=value, vital_parameter=config.HEART_RATE_TITLE, input_field=hr, is_complete= is_completed) utility.erase_entered_value(hr) test.endSection() @@ -286,41 +294,7 @@ hr = waitForObject(names.o_PreTreatmentBase_input_TextInput_4) mouseClick(hr) utility.erase_entered_value(hr) - -def verify_the_color_of_out_of_range(vital_parameter): - """ - Method to verify the color of out of range values - @param vital_parameter - (str) parameter name (systolic, diastolic, heart rate) - """ - test.startSection("Verify the color out of range values of {}".format(vital_parameter)) - out_range_val_list = INVALID_VALS[vital_parameter] - if vital_parameter is config.SYSTOLIC_TEXT: - systolic = waitForObject(names.o_pop_up_systolic_input_field) - mouseClick(systolic) - for entry in out_range_val_list: - utility.enter_keypad_value(entry=str(entry)) - verify_entered_value_in_pop_up(value=str(entry), input_field=systolic, vital=vital_parameter) - verify_color_of_entry(entry=entry, vital_parameter=config.SYSTOLIC_TEXT, input_field=systolic) - utility.erase_entered_value(input_field=systolic) - elif vital_parameter is config.DIASTOLIC_TEXT: - diastolic = waitForObject(names.o_pop_up_diastolic_input_field) - mouseClick(diastolic) - for entry in out_range_val_list: - utility.enter_keypad_value(str(entry)) - verify_entered_value_in_pop_up(value=str(entry), input_field=diastolic, vital=vital_parameter) - verify_color_of_entry(entry=entry, vital_parameter=config.DIASTOLIC_TEXT, input_field=diastolic) - utility.erase_entered_value(diastolic) - utils.waitForGUI(1) - elif vital_parameter is config.HEART_RATE_TITLE: - hr = waitForObject(names.o_pop_up_heart_rate_input_field) - mouseClick(hr) - for entry in out_range_val_list: - utility.enter_keypad_value(str(entry)) - verify_entered_value_in_pop_up(value=str(entry), input_field=hr, vital=vital_parameter) - verify_color_of_entry(entry=entry, vital_parameter=config.HEART_RATE_TITLE, input_field=hr) - utility.erase_entered_value(hr) - test.endSection() - + def verify_entered_valid_vital_entries_in_main_treatment_screen(sys_val, dia_val, heart_rate, save): """ @@ -334,25 +308,47 @@ @param save - (bool) True/False """ test.startSection("Verify the entered systolic, diastolic and heart rate value updated in main-treatement screen") - systolic = waitForObject(names.o_pop_up_systolic_input_field) - mouseClick(systolic) - utility.erase_entered_value(systolic) - utility.enter_keypad_value(str(sys_val)) - verify_entered_value_in_pop_up(value=str(sys_val), input_field=systolic, vital=config.SYSTOLIC_TEXT) - verify_color_of_entry(entry=sys_val, vital_parameter=config.SYSTOLIC_TEXT, input_field=systolic) - diastolic = waitForObject(names.o_pop_up_diastolic_input_field) - mouseClick(diastolic) - utility.erase_entered_value(diastolic) - utils.waitForGUI(1) - utility.enter_keypad_value(str(dia_val)) - verify_entered_value_in_pop_up(value=str(dia_val), input_field=diastolic, vital=config.DIASTOLIC_TEXT) - verify_color_of_entry(entry=dia_val, vital_parameter=config.DIASTOLIC_TEXT, input_field=diastolic) + systolic = utility.get_object_from_names(names.o_pop_up_systolic_input_field, "Systolic Input Object missing") + diastolic = utility.get_object_from_names(names.o_pop_up_diastolic_input_field, "Diastolic Input Object missing") + + if systolic is not None: + mouseClick(systolic) + utils.waitForGUI(1) + utility.erase_entered_value(systolic) + mouseClick(systolic) + utils.waitForGUI(1) + utility.enter_keypad_value(str(sys_val)) + verify_entered_value_in_pop_up(value=str(sys_val), input_field=systolic, vital=config.SYSTOLIC_TEXT) + + # the color of the input field text is affected by whether the systolic and diastolic are both filled in or not + isDiastolic_complete = (diastolic is not None) and (diastolic.text != "") + isSystolic_complete = (systolic is not None) and (systolic.text != "") + isBothFields_complete = isDiastolic_complete and isSystolic_complete + + utility.verify_color_of_entry(entry=sys_val, vital_parameter=config.SYSTOLIC_TEXT, input_field=systolic, is_complete = isBothFields_complete) + + if diastolic is not None: + mouseClick(diastolic) + utils.waitForGUI(0.5) + utility.erase_entered_value(diastolic) + utils.waitForGUI(1) + utility.enter_keypad_value(str(dia_val)) + verify_entered_value_in_pop_up(value=str(dia_val), input_field=diastolic, vital=config.DIASTOLIC_TEXT) + + # the color of the input field text is affected by whether the systolic and diastolic are both filled in or not + isDiastolic_complete = (diastolic is not None) and (diastolic.text != "") + isSystolic_complete = (systolic is not None) and (systolic.text != "") + isBothFields_complete = isDiastolic_complete and isSystolic_complete + + utility.verify_color_of_entry(entry=dia_val, vital_parameter=config.DIASTOLIC_TEXT, input_field=diastolic, is_complete=isBothFields_complete) + utils.waitForGUI(0.5) + hr = waitForObject(names.o_pop_up_heart_rate_input_field) mouseClick(hr) utility.erase_entered_value(hr) utility.enter_keypad_value(str(heart_rate)) verify_entered_value_in_pop_up(value=str(heart_rate), input_field=hr, vital=config.HEART_RATE_TITLE) - verify_color_of_entry(entry=heart_rate, vital_parameter=config.HEART_RATE_TITLE, input_field=hr) + utility.verify_color_of_entry(entry=heart_rate, vital_parameter=config.HEART_RATE_TITLE, input_field=hr) if save: test.log("Clicking confirm button") @@ -438,7 +434,7 @@ test.startSection("verification of heparin stop time values") test.compare(waitForObject(names.o_PreTreatmentCreate_heparinStopTime_SliderCreateTreatment).label, config.HEPARIN_STOP_TIME, "Parameter should be -> "+str(config.HEPARIN_STOP_TIME)) - test_custom_treatment_slider(names.o_PreTreatmentCreate_heparinStopTimeSlider_Slider, 10, config.CREATE_TREATMENT_SLIDER_VALUES["heparin_stop_time"], config.HEPARIN_STOP_TIME) + test_custom_treatment_slider(names.o_PreTreatmentCreate_heparinStopTimeSlider_Slider, 0, config.CREATE_TREATMENT_SLIDER_VALUES["heparin_stop_time"], config.HEPARIN_STOP_TIME) test.endSection() @@ -455,7 +451,7 @@ test.compare(waitForObject(names.o_PreTreatmentCreate_heparinTypeRect_GridSelection).labels, config.HEPARIN_TYPE, "Parameter should be -> "+str(config.HEPARIN_TYPE)) mouseClick(waitForObject(names.o_PreTreatmentCreate_heparinTypeRect0_TouchRect)) test.compare(waitForObject(names.o_PreTreatmentCreate_heparinTypeRect0_TouchRect).text.text, config.HEPARIN_TYPE, "heparin text should be :"+ str(config.HEPARIN_TYPE)) - test.compare(waitForObject(names.o_PreTreatmentCreate_heparinTypeRect0_TouchRect).bgColor.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") + test.compare(waitForObject(names.o_PreTreatmentCreate_heparinTypeRect0_TouchRect).color.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") test.endSection() #scroll the screen to the title dialyste rectangle @@ -465,7 +461,7 @@ test.startSection("verification of acid concentrate type") test.compare(waitForObject(names.o_PreTreatmentCreate_acidConcentrateRect_GridSelection).title, config.ACID_CONCENTRATE_TITLE, "Parameter should be -> "+str(config.ACID_CONCENTRATE_TITLE)) mouseClick(names.o_PreTreatmentCreate_acidConcentrateRect0_TouchRect) - test.compare(waitForObject(names.o_PreTreatmentCreate_acidConcentrateRect0_TouchRect).bgColor.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") + test.compare(waitForObject(names.o_PreTreatmentCreate_acidConcentrateRect0_TouchRect).color.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") test.compare(waitForObject(names.o_PreTreatmentCreate_acidConcentrateRect0_TouchRect).text.text, config.ACID_CONCENTRATE[0], "Acid concentrate value should be :"+str(config.ACID_CONCENTRATE[0])) test.endSection() @@ -476,7 +472,7 @@ test.startSection("verification of bicarbonate concentrate rectangle") test.compare(waitForObject(names.o_PreTreatmentCreate_bicarbonateConcentrateRect_GridSelection).title, config.BICARBONATE_CONCENTRATE_TITLE, "Parameter should be -> "+str(config.BICARBONATE_CONCENTRATE_TITLE)) mouseClick(names.o_PreTreatmentCreate_bicarbonateConcentrateRect0_TouchRect) - test.compare(waitForObject(names.o_PreTreatmentCreate_bicarbonateConcentrateRect0_TouchRect).bgColor.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") + test.compare(waitForObject(names.o_PreTreatmentCreate_bicarbonateConcentrateRect0_TouchRect).color.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") test.compare(waitForObject(names.o_PreTreatmentCreate_bicarbonateConcentrateRect0_TouchRect).text.text, config.BICARBONATE_CONCENTRATE, "Bicarbonate concentrate value should be :"+str(config.ACID_CONCENTRATE[0])) test.endSection() @@ -487,7 +483,7 @@ test.startSection("verification of dialysate rectangle") test.compare(waitForObject(names.o_PreTreatmentCreate_dialyzerTypeRect_GridSelection).title, config.DIALYZER_TYPE_TITLE, "Parameter should be -> "+str(config.DIALYZER_TYPE_TITLE)) mouseClick(names.o_PreTreatmentCreate_dialyzerTypeRect0_TouchRect) - test.compare(waitForObject(names.o_PreTreatmentCreate_dialyzerTypeRect0_TouchRect).bgColor.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") + test.compare(waitForObject(names.o_PreTreatmentCreate_dialyzerTypeRect0_TouchRect).color.name, config.TREATMENT_HIGHLIGHTED_COLOR, str(config.HEPARIN_TYPE)+" checkbox should be highlighted") test.compare(waitForObject(names.o_PreTreatmentCreate_dialyzerTypeRect0_TouchRect).text.text, config.DIALYZER_TYPE[0], "Dialyzer type value should be :"+str(config.DIALYZER_TYPE[0])) @@ -502,26 +498,18 @@ test_custom_treatment_slider(names.o_PreTreatmentCreate_dialysateTemperatureSlider_Slider, 35, config.CREATE_TREATMENT_SLIDER_VALUES["dialysate_temperature"], config.DIALYSATE_TEMPERATURE) test.endSection() - #scroll the screen to the title rinseback flow rate - parameter_object = set_parameter_type(text=config.RINSEBACK_FLOW_RATE) - utility.scroll_to_zone(parameter_object, names.o_treatment_create_flickable) - - set_arterial_low_and_high() - set_venous_low_and_high() - test.startSection("verification of blood pressure measurement interval values") + test.compare(waitForObject(names.o_PreTreatmentCreate_BPInterval_OFF_Text).text,"OFF", "Text should be -> "+"OFF") + mouseClick(waitForObject(names.o_PreTreatmentCreate_BPInterval_Switch)) + mouseClick(names.o_PreTreatmentCreate_BPInterval_Switch) + utils.waitForGUI(1) test.compare(waitForObject(names.o_PreTreatmentCreate_bloodPressureMeasurementInterval_SliderCreateTreatment).label, config.BLOOD_PRESSURE_MEASUREMENT_INTERVAL, "Parameter should be -> "+str(config.BLOOD_PRESSURE_MEASUREMENT_INTERVAL)) test_custom_treatment_slider(names.o_PreTreatmentCreate_bloodPressureMeasurementIntervalSlider_Slider, 5, config.CREATE_TREATMENT_SLIDER_VALUES["blood_pressure_measurement_interval"], config.BLOOD_PRESSURE_MEASUREMENT_INTERVAL) test.endSection() + test.endSection() - test.startSection("verification of rinseback flow rate values") - test.compare(waitForObject(names.o_PreTreatmentCreate_rinsebackFlowRate_SliderCreateTreatment).label, config.RINSEBACK_FLOW_RATE, "Parameter should be -> "+str(config.RINSEBACK_FLOW_RATE)) - test_custom_treatment_slider(names.o_PreTreatmentCreate_rinsebackFlowRateSlider_Slider, 50, config.CREATE_TREATMENT_SLIDER_VALUES["rinseback_flow_rate"], config.RINSEBACK_FLOW_RATE) - test.endSection() - test.endSection() - def set_venous_low_and_high(): """ Method to set the venous low and high limits using slider @@ -559,7 +547,7 @@ test.verify(waitForObjectExists(names.o_PreTreatmentBase_bloodPressureSystolic_TextEntry).enabled, "systolic combo box should be enabled.") test.compare(waitForObjectExists(names.o_PreTreatmentBase_bloodPressureSystolic_TextEntry).text, str(sys_val), "systolic value should be : " + str(sys_val)) - verify_color_of_entry(entry=sys_val, vital_parameter=config.SYSTOLIC_TEXT, input_field=waitForObject(names.o_PreTreatmentBase_input_TextInput_2)) + utility.verify_color_of_entry(entry=sys_val, vital_parameter=config.SYSTOLIC_TEXT, input_field=waitForObject(names.o_PreTreatmentBase_input_TextInput_2)) mouseClick(waitForObject(names.o_PreTreatmentBase_input_TextInput_3)) @@ -568,16 +556,15 @@ test.verify(waitForObjectExists(names.o_PreTreatmentBase_bloodPressureDiastolic_TextEntry).enabled, "diastolic value should be enabled.") test.compare(waitForObjectExists(names.o_PreTreatmentBase_bloodPressureDiastolic_TextEntry).text, str(dia_val), "diastolic value should be : "+str(dia_val)) - verify_color_of_entry(entry = dia_val, vital_parameter = config.DIASTOLIC_TEXT, input_field = waitForObject(names.o_PreTreatmentBase_input_TextInput_3)) + utility.verify_color_of_entry(entry = dia_val, vital_parameter = config.DIASTOLIC_TEXT, input_field = waitForObject(names.o_PreTreatmentBase_input_TextInput_3), is_complete = True) - mouseClick(waitForObject(names.o_PreTreatmentBase_input_TextInput_4)) utility.erase_entered_value(names.o_PreTreatmentBase_input_TextInput_4) utility.enter_keypad_value(heart_rate) test.verify(waitForObjectExists(names.o_PreTreatmentBase_heartRate_TextEntry).enabled, "diastolic value should be enabled.") test.compare(waitForObjectExists(names.o_PreTreatmentBase_heartRate_TextEntry).text, str(heart_rate), "diastolic value should be : "+str(dia_val)) - verify_color_of_entry(entry = heart_rate, vital_parameter = config.HEART_RATE_TITLE, input_field = waitForObject(names.o_PreTreatmentBase_input_TextInput_4)) + utility.verify_color_of_entry(entry = heart_rate, vital_parameter = config.HEART_RATE_TITLE, input_field = waitForObject(names.o_PreTreatmentBase_input_TextInput_4)) test.endSection() @@ -589,8 +576,8 @@ test.log("Clearing all fields") clear_BP_and_HR_settings() test.compare(waitForObjectExists(names.o_PreTreatmentBase_BP_HR_Text).text, config.BP_HR_TEXT, "BP/HR title text should be :" + str(config.BP_HR_TEXT)) - test.compare(waitForObjectExists(names.o_PreTreatmentbase_skip_text).text, config.SKIP_TEXT, "BP/HR button text should be " + str(config.SKIP_TEXT)) - test.verify(waitForObjectExists(names.o_PreTreatmentbase_skip_text).enabled, "BP/HR button should enabled.") + test.compare(waitForObjectExists(names.o_PreTreatmentBase_CONFIRM_Text_2).text, config.CONFIRM_TEXT, "BP/HR button text should be " + str(config.CONFIRM_TEXT)) + test.compare(waitForObjectExists(names.o_PreTreatmentBase_CONFIRM_Text_2).enabled, False, "BP/HR button should disabled.") test.compare(waitForObjectExists(names.o_PreTreatmentBase_Blood_Pressure_Text).text, config.BLOOD_PRESSURE_TITLE, "BP title text should be :" + str(config.BLOOD_PRESSURE_TITLE)) test.compare(waitForObjectExists(names.o_PreTreatmentBase_mmHg_Label).text, config.BLOOD_PRESSURE_UNIT, "BP unit should be " + str(config.BLOOD_PRESSURE_UNIT)) test.compare(waitForObjectExists(names.o_PreTreatmentBase_Heart_Rate_Text).text, config.HEART_RATE_TITLE, "HR text should be :" + str(config.HEART_RATE_TITLE)) @@ -661,23 +648,15 @@ hd_simulator.cmd_initiate_treatment_response(response=1, reason=0) hd_simulator.cmd_send_hd_operation_mode(op_mode=HDOpModes.MODE_PRET.value , sub_mode=HDStandbyStates.STANDBY_START_STATE.value) hd_simulator.cmd_send_pre_treatment_state_data(sub_mode=PreTreatmentSubModes.HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE.value, water_sample_state=PreTreatmentSampleWaterStates.SAMPLE_WATER_SETUP_STATE.value,consumables_self_test_state=PreTreatmentConsumableSelfTestStates.CONSUMABLE_SELF_TESTS_INSTALL_STATE.value, - no_cartridge_self_test_state=PreTreatmentNoCartSelfTestStates.NO_CART_SELF_TESTS_START_STATE.value,installation_state=PreTreatmentCartridgeInstallStates.CARTRIDGE_INSTALL_STATE.value, dry_self_test_state=PreTreatmentDrySelfTestsStates.DRY_SELF_TESTS_START_STATE.value, - prime_state=PreTreatmentPrimeStates.HD_PRIME_START_STATE.value,recirculate_state=PreTreatmentRecircStates.PRE_TREATMENT_RECIRC_STATE.value, patient_connection_state=PreTreatmentPatientConnectionStates.PATIENT_CONNECTION_STATE.value) - hd_simulator.cmd_send_uf_treatment_response(accepted=True, reason=0, volume=0.00) - + no_cartridge_self_test_state=PreTreatmentNoCartSelfTestStates.NO_CART_SELF_TESTS_HOME_IDLE_STATE.value,installation_state=PreTreatmentCartridgeInstallStates.CARTRIDGE_INSTALL_STATE.value, dry_self_test_state=PreTreatmentDrySelfTestsStates.DRY_SELF_TESTS_START_STATE.value, + prime_state=PreTreatmentPrimeStates.HD_PRIME_WAIT_FOR_USER_START_STATE.value,recirculate_state=PreTreatmentRecircStates.PRE_TREATMENT_RECIRC_STATE.value, patient_connection_state=PreTreatmentPatientConnectionStates.PRE_TREATMENT_PAT_CONN_WAIT_FOR_USER_CONFIRM_STATE.value, + wet_selftests_state=PreTreatmentWetSelfTestStates.WET_SELF_TESTS_START_STATE.value, + pretreatment_rsrvr_state=HDPreTreatmentReservoirMgmtStates.PRE_TREATMENT_RESERVOIR_MGMT_START_STATE.value) verify_entered_vitals_in_patient_connection_screen() utils.waitForGUI(1) hd_simulator.cmd_send_hd_operation_mode(op_mode=HDOpModes.MODE_TREA.value, sub_mode=TreatmentStates.TREATMENT_DIALYSIS_STATE.value) utils.waitForGUI(1) - hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, uf_state= UFStates.UF_START_STATE.value, saline_state= SalineBolusStates.SALINE_BOLUS_STATE_IDLE.value, heparin_state= HeparinStates.HEPARIN_STATE_OFF.value, - rinseback_state= TreatmentStates.TREATMENT_RINSEBACK_STATE.value, recirculate_state= TreatmentStates.TREATMENT_RECIRC_STATE.value, blood_prime_state= TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, - treatment_end_state= TreatmentStates.TREATMENT_END_STATE.value, treatment_stop_state= TreatmentStates.TREATMENT_STOP_STATE.value, dialysis_state= TreatmentStates.TREATMENT_DIALYSIS_STATE.value) - hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_DIALYSIS_STATE.value, uf_state= UFStates.UF_START_STATE.value, saline_state= SalineBolusStates.SALINE_BOLUS_STATE_IDLE.value, heparin_state= HeparinStates.HEPARIN_STATE_OFF.value, - rinseback_state= TreatmentStates.TREATMENT_RINSEBACK_STATE.value, recirculate_state= TreatmentStates.TREATMENT_RECIRC_STATE.value, blood_prime_state= TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, - treatment_end_state= TreatmentStates.TREATMENT_END_STATE.value, treatment_stop_state= TreatmentStates.TREATMENT_STOP_STATE.value, dialysis_state= TreatmentStates.TREATMENT_DIALYSIS_STATE.value) - mouseClick(waitForObject(names.o_vitals_close_btn)) - utils.waitForGUI(1) verify_vitals_pop_up_is_opened_automatically_after_an_interval(interval=5) test.endSection() @@ -690,13 +669,30 @@ """ hd_simulator.cmd_send_hd_operation_mode(op_mode=HDOpModes.MODE_TREA.value, sub_mode=TreatmentStates.TREATMENT_DIALYSIS_STATE.value) utils.waitForGUI(1) - hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, uf_state= UFStates.UF_START_STATE.value, saline_state= SalineBolusStates.SALINE_BOLUS_STATE_IDLE.value, heparin_state= HeparinStates.HEPARIN_STATE_OFF.value, - rinseback_state= TreatmentStates.TREATMENT_RINSEBACK_STATE.value, recirculate_state= TreatmentStates.TREATMENT_RECIRC_STATE.value, blood_prime_state= TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, - treatment_end_state= TreatmentStates.TREATMENT_END_STATE.value, treatment_stop_state= TreatmentStates.TREATMENT_STOP_STATE.value, dialysis_state= TreatmentStates.TREATMENT_DIALYSIS_STATE.value) - hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_DIALYSIS_STATE.value, uf_state= UFStates.UF_START_STATE.value, saline_state= SalineBolusStates.SALINE_BOLUS_STATE_IDLE.value, heparin_state= HeparinStates.HEPARIN_STATE_OFF.value, - rinseback_state= TreatmentStates.TREATMENT_RINSEBACK_STATE.value, recirculate_state= TreatmentStates.TREATMENT_RECIRC_STATE.value, blood_prime_state= TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, - treatment_end_state= TreatmentStates.TREATMENT_END_STATE.value, treatment_stop_state= TreatmentStates.TREATMENT_STOP_STATE.value, dialysis_state= TreatmentStates.TREATMENT_DIALYSIS_STATE.value) + hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, + uf_state= UFStates.UF_PAUSED_STATE.value, + saline_state= SalineBolusStates.SALINE_BOLUS_STATE_IDLE.value, + heparin_state= HeparinStates.HEPARIN_STATE_OFF.value, + rinseback_state= TreatmentStates.TREATMENT_RINSEBACK_STATE.value, + recirculate_state= TreatmentStates.TREATMENT_RECIRC_STATE.value, + blood_prime_state= TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, + treatment_end_state= TreatmentStates.TREATMENT_END_STATE.value, + treatment_stop_state= TreatmentStates.TREATMENT_STOP_STATE.value, + dialysis_state= TreatmentStates.TREATMENT_DIALYSIS_STATE.value, + bloodLeakZeoringState = BloodLeakZeroingStates.BLD_ZEROING_IDLE_STATE.value) + hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_DIALYSIS_STATE.value, + uf_state= UFStates.UF_PAUSED_STATE.value, + saline_state= SalineBolusStates.SALINE_BOLUS_STATE_IDLE.value, + heparin_state= HeparinStates.HEPARIN_STATE_OFF.value, + rinseback_state= TreatmentStates.TREATMENT_RINSEBACK_STATE.value, + recirculate_state= TreatmentStates.TREATMENT_RECIRC_STATE.value, + blood_prime_state= TreatmentStates.TREATMENT_BLOOD_PRIME_STATE.value, + treatment_end_state= TreatmentStates.TREATMENT_END_STATE.value, + treatment_stop_state= TreatmentStates.TREATMENT_STOP_STATE.value, + dialysis_state= TreatmentStates.TREATMENT_DIALYSIS_STATE.value, + bloodLeakZeoringState = BloodLeakZeroingStates.BLD_ZEROING_IDLE_STATE.value) + def set_parameter_type(text): """ Method to set object property based on text @@ -763,27 +759,69 @@ test.log("Total elapsed time : {}".format(total_elapsed_time)) test.compare(close_btn.visible, config.VISIBLE, "Dialog close button should be visible after the vitals pop up is opened automatically") test.endSection() + + +def verify_ranges_of_vitals_fields_complete(vSystolic_value_set, vDiastolic_value_set, vHr_value_set): + """ + This is for the cases that the fields are complete and we are changing one single value + """ + # complete the fields with valid values: + verify_ranges_of_vital(vital_parameter=config.SYSTOLIC_TEXT, + set_single_systolic_value=True, systolic_value_to_set=config.SYSTOLIC_LOWER_LIMIT, + set_single_diastolic_value=True, diastolic_value_to_set=config.DIASTOLIC_LOWER_LIMIT, + set_single_hr_value=True, hr_value_to_set=config.HEART_RATE_LOWER_LIMIT) + verify_ranges_of_vital(vital_parameter=config.SYSTOLIC_TEXT, systolic_value_set = vSystolic_value_set) # runs the multiple value test + # complete the fields with valid values: + verify_ranges_of_vital(vital_parameter=config.SYSTOLIC_TEXT, + set_single_systolic_value=True, systolic_value_to_set=config.SYSTOLIC_LOWER_LIMIT, + set_single_diastolic_value=True, diastolic_value_to_set=config.DIASTOLIC_LOWER_LIMIT, + set_single_hr_value=True, hr_value_to_set=config.HEART_RATE_LOWER_LIMIT) + verify_ranges_of_vital(vital_parameter=config.DIASTOLIC_TEXT, diastolic_value_set=vDiastolic_value_set)# runs the multiple value test + + # complete the fields with valid values: + verify_ranges_of_vital(vital_parameter=config.SYSTOLIC_TEXT, + set_single_systolic_value=True, systolic_value_to_set=config.SYSTOLIC_LOWER_LIMIT, + set_single_diastolic_value=True, diastolic_value_to_set=config.DIASTOLIC_LOWER_LIMIT, + set_single_hr_value=True, hr_value_to_set=config.HEART_RATE_LOWER_LIMIT) + verify_ranges_of_vital(vital_parameter=config.HEART_RATE_TITLE, hr_value_set = vHr_value_set)# runs the multiple value test + + +def verify_ranges_of_vitals_fields_incomplete(vSystolic_value_set, vDiastolic_value_set, vHr_value_set): + verify_ranges_of_vital(vital_parameter=config.SYSTOLIC_TEXT, systolic_value_set = vSystolic_value_set) + verify_ranges_of_vital(vital_parameter=config.DIASTOLIC_TEXT, diastolic_value_set=vDiastolic_value_set) + verify_ranges_of_vital(vital_parameter=config.HEART_RATE_TITLE, hr_value_set = vHr_value_set) + + def main(): utils.tstStart(__file__) + application_init.setup_post_log_successful_start() startApplication(config.AUT_NAME) hd_simulator.cmd_send_power_on_self_test_version_request() - hd_simulator.cmd_set_treatment_states_data(sub_mode=TreatmentStates.TREATMENT_DIALYSIS_STATE.value, uf_state=TreatmentStates.TREATMENT_START_STATE.value, saline_state=TreatmentStates.TREATMENT_START_STATE.value, heparin_state=TreatmentStates.TREATMENT_START_STATE.value, - rinseback_state=TreatmentStates.TREATMENT_START_STATE.value, recirculate_state=TreatmentStates.TREATMENT_START_STATE.value, blood_prime_state=TreatmentStates.TREATMENT_START_STATE.value, - treatment_end_state=TreatmentStates.TREATMENT_START_STATE.value, treatment_stop_state=TreatmentStates.TREATMENT_START_STATE.value, dialysis_state=TreatmentStates.TREATMENT_START_STATE.value) - + hd_simulator.cmd_set_treatment_states_data(sub_mode=TreatmentStates.TREATMENT_DIALYSIS_STATE.value, + uf_state=TreatmentStates.TREATMENT_START_STATE.value, + saline_state=TreatmentStates.TREATMENT_START_STATE.value, + heparin_state=TreatmentStates.TREATMENT_START_STATE.value, + rinseback_state=TreatmentStates.TREATMENT_START_STATE.value, + recirculate_state=TreatmentStates.TREATMENT_START_STATE.value, + blood_prime_state=TreatmentStates.TREATMENT_START_STATE.value, + treatment_end_state=TreatmentStates.TREATMENT_START_STATE.value, + treatment_stop_state=TreatmentStates.TREATMENT_START_STATE.value, + dialysis_state=TreatmentStates.TREATMENT_START_STATE.value, + bloodLeakZeoringState = BloodLeakZeroingStates.BLD_ZEROING_IDLE_STATE.value) + hd_simulator.cmd_set_treatment_parameter_ranges(min_treatment_duration=0, max_treatment_duration=480, min_uf_volume=0.01, max_uf_volume=8.00, min_dialysate_flow_rate=100, max_dialysate_flow_rate=500) - - verify_vitals_pop_up_automatic_close_functionality() - + + # verify_vitals_pop_up_automatic_close_functionality() + utils.waitForGUI(1) open_vitals_pop_up() verify_entered_valid_vital_entries_in_main_treatment_screen(sys_val=SYSTOLIC_PRESSSURE_120, dia_val=DIASTOLIC_PRESSSURE_80, heart_rate=HEART_RATE_VAL_101, save=True) - + utils.waitForGUI(1) open_vitals_pop_up() verify_entered_value_in_pop_up(value=SYSTOLIC_PRESSSURE_120,input_field=names.o_pop_up_systolic_input_field, vital=config.SYSTOLIC_TEXT) @@ -804,13 +842,25 @@ verify_entered_valid_vital_entries_in_main_treatment_screen(sys_val=SYSTOLIC_PRESSSURE_200,dia_val=DIASTOLIC_PRESSSURE_150, heart_rate=HEART_RATE_VAL_60, save=False) utils.waitForGUI(1) open_vitals_pop_up() - verify_ranges_of_vital(vital_parameter=config.SYSTOLIC_TEXT) - verify_ranges_of_vital(vital_parameter=config.DIASTOLIC_TEXT) - verify_ranges_of_vital(vital_parameter=config.HEART_RATE_TITLE) - - verify_the_color_of_out_of_range(vital_parameter=config.SYSTOLIC_TEXT) - verify_the_color_of_out_of_range(vital_parameter=config.DIASTOLIC_TEXT) - verify_the_color_of_out_of_range(vital_parameter=config.HEART_RATE_TITLE) + utils.waitForGUI(1) + # verify the field colors for valid values + verify_ranges_of_vitals_fields_complete(vSystolic_value_set = SYSTOLIC_VALUES, + vDiastolic_value_set = DIASTOLIC_VALUES, + vHr_value_set = HEART_RATE_VALUES) + utils.waitForGUI(1) + verify_ranges_of_vitals_fields_incomplete(vSystolic_value_set = SYSTOLIC_VALUES, + vDiastolic_value_set = DIASTOLIC_VALUES, + vHr_value_set = HEART_RATE_VALUES) + utils.waitForGUI(1) + # verify the field colors for invalid values + verify_ranges_of_vitals_fields_complete(vSystolic_value_set = INVALID_VALS["systolic"], + vDiastolic_value_set = INVALID_VALS["diastolic"], + vHr_value_set = INVALID_VALS["Heart Rate"]) + utils.waitForGUI(1) + verify_ranges_of_vitals_fields_incomplete(vSystolic_value_set = INVALID_VALS["systolic"], + vDiastolic_value_set = INVALID_VALS["diastolic"], + vHr_value_set = INVALID_VALS["Heart Rate"]) + utils.waitForGUI(1) verify_interval_for_bpm()