# -*- coding: utf-8 -*-" # Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. # copyright # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, # IN PART OR IN WHOLE, # WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # file tst_In_treatment # date 2020/03/18 # author Amrita Debnath # import names from configuration.utility import * from configuration.config import * from dialin.ui import utils, dg_simulator from dialin.ui.hd_simulator import HDSimulator from dialin.ui.dg_simulator import DGSimulator from dialin.common.hd_defs import HDOpModes, HDOpSubModes, PreTreatmentSampleWaterStates, PreTreatmentConsumableSelfTestStates, PreTreatmentNoCartSelfTestsStates, PreTreatmentCartridgeInstallStates, PreTreatmentDrySelfTestsStates, PreTreatmentPrimeStates, PreTreatmentRecircStates, PreTreatmentPatientConnectionStates hd_simulator = HDSimulator() dg_simulator = DGSimulator() PRE_TREATMENT_STEP = 3 NUM_OF_PRETREATMENT_BULLETS = len(PRE_TREATMENT_SCREENS) SCREEN_OBJ = names.o_PreTreatmentStack_preTreatmentDisposablesStack_PreTreatmentDisposablesStack CARTRIDGE_INSTALLATION = 1 HEPARIN_SYRINGE = 2 NUM_OF_CARTRIDGE_INSTALLATION_SCREENS = 4 NUM_OF_HEPARIN_SYRINGE_SCREENS = 5 CARTRIDGE_INSTALLATION_TEXT = "Open the front panel door.\nAnd check the cartridge." HEPARIN_SYRINGE_TEXT = "Connect the cartridge blood and dialysis fluid lines to the dialyzer." def verify_disposables_screen(): """ Method to navigate to disposables and verify 'System Self Test' title is displayed """ test.startSection("Navigating to disposables screen and verifying 'System Self Test' title is displayed") hd_simulator.cmd_set_hd_operation_mode_data(HDOpModes.MODE_PRET.value,PreTreatmentNoCartSelfTestsStates.NO_CART_SELF_TESTS_START_STATE.value) hd_simulator.cmd_send_pre_treatment_state_data(sub_mode=HDOpSubModes.SUBMODE_DG_FLUSH_IN_PROGRESS.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=PreTreatmentNoCartSelfTestsStates.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) test.compare(SYSTEM_SELF_TEST_TITLE, waitForObject(names.o_system_test_text).text, "'{} title should displayed when user is navigated to disposable screen".format(SYSTEM_SELF_TEST_TITLE)) verify_page_step_indicator(SCREEN_OBJ, PRE_TREATMENT_STEP) verify_countdown(SYSTEM_SELF_TEST_TITLE, TIME_OUT_DURATION_100, hd_simulator, dg_simulator) verify_countdown(SYSTEM_SELF_TEST_TITLE, TIME_OUT_DURATION_200, hd_simulator, dg_simulator) verify_countdown(SYSTEM_SELF_TEST_TITLE, TIME_OUT_DURATION_300, hd_simulator, dg_simulator) test.endSection() def verify_right_instruction_navigation(num_of_instruction, screen): """ Method to verify right arrow functionality and verify the status of back, next and confirm button if available @param num_of_instruction - (int) count the number of instructions, @param screen - (int) current screen """ test.startSection("verifying right arrow functionality and verify the status of left, 'BACK', 'NEXT' and 'CONFIRM' button if available") verify_missing_object(names.o_disposable_leftImage_Image) for indicator in range(1, num_of_instruction, 1): verify_bullet_navigation(indicator, num_of_instruction) verify_next_button(DISABLED) if screen == CARTRIDGE_INSTALLATION: verify_back_button(DISABLED) else: verify_back_button(ENABLED) if indicator != num_of_instruction: mouseClick(waitForObject(names.o_disposable_rightImage_Image)) verify_missing_object(names.o_disposable_rightImage_Image) verify_next_button(ENABLED) test.endSection() def verify_left_instruction_navigation(num_of_instruction, screen): """ Method to verify left arrow functionality and verify the status of back, next and confirm button if available @param num_of_instruction - (int) count the number of instructions, @param screen - (int) current screen """ test.startSection("verifying left arrow functionality and verify the status of left, 'BACK', 'NEXT' and 'CONFIRM' button if available") verify_missing_object(names.o_disposable_rightImage_Image) for indicator in range(num_of_instruction, 0, -1): verify_bullet_navigation(indicator, num_of_instruction) if indicator == num_of_instruction: verify_next_button(ENABLED) else: verify_next_button(DISABLED) if screen == CARTRIDGE_INSTALLATION: verify_back_button(DISABLED) else: verify_back_button(ENABLED) if indicator != 1: mouseClick(waitForObject(names.o_disposable_leftImage_Image)) verify_missing_object(names.o_disposable_leftImage_Image) test.endSection() def verify_bullet_navigation(num, num_of_instruction): """ Method to verify the status of bullets based on the number of instruction screen @param num - (int) number of indicator @param num_of_instruction- (int) count the number of instructions """ test.startSection("instruction bullet verification for screens") for instruction in range(1, num_of_instruction): bullet_children = object.children(waitForObjectExists(get_bullet_object(SCREEN_OBJ,(NUM_OF_PRETREATMENT_BULLETS + instruction) - 1))) bullet_circle_color = bullet_children[0].color.name bullet_border_color = bullet_children[0].border.color.name if instruction <= num: test.compare(bullet_circle_color, COMPLETE_COLOR) test.compare(bullet_border_color,COMPLETE_COLOR) test.log(str(instruction) + " Complete bullet") else: test.compare(bullet_circle_color, CURRENT_COLOR) test.compare(bullet_border_color,INCOMPLETE_COLOR) test.log(str(instruction) + " Incomplete bullet") test.endSection() def verify_next_button(condition): """ Method to verify the status 'NEXT' button @param condition - (bool) True/False """ test.startSection("Verifying the status of 'NEXT' button") test.compare(str(waitForObjectExists(names.o_next_button_text).text), NEXT_BUTTON_TEXT, "'NEXT' button text should be {}".format(NEXT_BUTTON_TEXT)) if condition: test.compare(waitForObjectExists(names.o_next_button_text).enabled, condition, "'NEXT' button should be enabled") else: test.compare(waitForObjectExists(names.o_next_button_text).enabled, condition, "'NEXT' button should be disabled") test.endSection() def click_on_next_button(): """ Method to click on 'NEXT' button """ mouseClick(waitForObjectExists(names.o_next_button_text)) def verify_back_button(condition): """ Method to verify the availability of 'BACK' button verify the status of the same @param condition - (bool) True/False """ test.startSection("Verifying the availability of 'BACK' button verify the status of the same") if object.exists(names.o_back_button_text): test.compare(str(waitForObjectExists(names.o_back_button_text).text), BACK_BUTTON_TEXT,"'BACK' button text should be {}".format(BACK_BUTTON_TEXT)) if condition: test.compare(waitForObjectExists(names.o_back_button_text).enabled , condition, "'BACK' button should be enabled") else: test.compare(waitForObjectExists(names.o_back_button_text).enabled , condition, "'BACK' button should be disabled") else: test.passes("'BACK' Button should not exists") test.endSection() def click_on_back_button(): """ Method to click on 'BACK' button """ mouseClick(waitForObjectExists(names.o_back_button_text)) def verify_cartridge_installation_first_screen_displayed(): """ Method to verify the screen 1 of cartridge_installation of instructions is displayed """ test.startSection("Verifying the screen 1 of 'cartridge installation' of instructions is displayed") expected_screen_text = waitForObject(names.o_cartridge_installation_screen1_text) test.compare(expected_screen_text.text, CARTRIDGE_INSTALLATION_TEXT, "{} Should be displayed when navigated to cartridge_installationcartridge_installation by using 'BACK' button".format(CARTRIDGE_INSTALLATION_TEXT)) test.endSection() def verify_heparin_syringe_first_screen_displayed(): """ Method to verify the screen 1 of heparin syringe of instructions is displayed """ test.startSection("Verifying the screen 1 of 'heparin syringe' of instructions is displayed") expected_screen_text = waitForObject(names.o_heparin_syringe_screen1_text) test.compare(expected_screen_text.text, HEPARIN_SYRINGE_TEXT, "{} Should be displayed when navigated to Phase 2 by using BACK button".format(HEPARIN_SYRINGE_TEXT)) test.endSection() def verify_confirm_button(): """ Method to verify the status 'CONFIRM' button """ test.startSection("Verifying the status 'CONFIRM' button") test.compare(str(waitForObjectExists(names.o_confirm_button_text).text), CONFIRM_BUTTON_TEXT,"'CONFIRM' button text should be {}".format(CONFIRM_BUTTON_TEXT)) test.compare(waitForObjectExists(names.o_confirm_button_text).enabled , True, "'CONFIRM' button should be enabled") test.endSection() def verify_functionality_for_cartridge_installation(): """ Method to verify functionality of the cartridge_installation screen's left, right navigation and 'NEXT' button """ test.startSection("Verifying functionality of the cartridge installation screen's left, right navigation and 'NEXT' button") hd_simulator.cmd_set_hd_operation_mode_data(HDOpModes.MODE_PRET.value,PreTreatmentNoCartSelfTestsStates.NO_CART_SELF_TESTS_START_STATE.value) hd_simulator.cmd_send_pre_treatment_state_data(sub_mode=HDOpSubModes.SUBMODE_DG_HEAT_DISINFECT_IN_PROGRESS.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=PreTreatmentNoCartSelfTestsStates.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) verify_right_instruction_navigation(NUM_OF_CARTRIDGE_INSTALLATION_SCREENS, CARTRIDGE_INSTALLATION) verify_left_instruction_navigation(NUM_OF_CARTRIDGE_INSTALLATION_SCREENS, CARTRIDGE_INSTALLATION) verify_right_instruction_navigation(NUM_OF_CARTRIDGE_INSTALLATION_SCREENS, CARTRIDGE_INSTALLATION) click_on_next_button() test.endSection() def verify_functionality_for_heparin_syringe(): """ Method to verify functionality of the heparin syringe screen's left, right navigation and 'NEXT' button """ test.startSection("Verifying functionality of the heparin syringe screen's left, right navigation, 'BACK'and 'NEXT' button") verify_right_instruction_navigation(NUM_OF_HEPARIN_SYRINGE_SCREENS, HEPARIN_SYRINGE) verify_left_instruction_navigation(NUM_OF_HEPARIN_SYRINGE_SCREENS, HEPARIN_SYRINGE) click_on_back_button() verify_cartridge_installation_first_screen_displayed() verify_right_instruction_navigation(NUM_OF_CARTRIDGE_INSTALLATION_SCREENS, CARTRIDGE_INSTALLATION) click_on_next_button() verify_right_instruction_navigation(NUM_OF_HEPARIN_SYRINGE_SCREENS, HEPARIN_SYRINGE) click_on_back_button() verify_cartridge_installation_first_screen_displayed() verify_right_instruction_navigation(NUM_OF_CARTRIDGE_INSTALLATION_SCREENS, CARTRIDGE_INSTALLATION) click_on_next_button() verify_right_instruction_navigation(NUM_OF_HEPARIN_SYRINGE_SCREENS, HEPARIN_SYRINGE) click_on_next_button() verify_confirm_button() test.endSection() def verify_functionality_for_saline_bag(): """ Method to verify functionality of the saline bag screen's left, right navigation and 'NEXT', 'BACK' and 'CONFIRM' button """ test.startSection("Verifying functionality of the saline bag") click_on_back_button() verify_heparin_syringe_first_screen_displayed() click_on_back_button() verify_cartridge_installation_first_screen_displayed() verify_right_instruction_navigation(NUM_OF_CARTRIDGE_INSTALLATION_SCREENS, CARTRIDGE_INSTALLATION) click_on_next_button() verify_right_instruction_navigation(NUM_OF_HEPARIN_SYRINGE_SCREENS, HEPARIN_SYRINGE) click_on_next_button() verify_confirm_button() mouseClick(waitForObject(names.o_confirm_button_text)) hd_simulator.cmd_send_hd_general_response(message_id=173, accepted=config.ACCEPTED, reason=0) test.endSection() def main(): utils.tstStart(__file__) startApplication(AUT_NAME) verify_disposables_screen() verify_functionality_for_cartridge_installation() utils.waitForGUI(1) verify_functionality_for_heparin_syringe() utils.waitForGUI(1) verify_functionality_for_saline_bag() utils.tstDone()