########################################################################### # # Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. # # 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 utils.py # # @author (last) Joseph varghese # @date (last) 15-Jan-2022 # ############################################################################ import sys import test import squish import names from configuration import config from builtins import int as pyInt from builtins import str as pyStr from builtins import float as pyFloat def start_application(app_name): """ Function to start application and verify application status [running] If application does not start or running status is false, test stops Argument: @param app_name : (str) - Name of the application @param app_executable : (str) - Actual application @return: handle for the application if the application is in running state, or error (exist the application) """ counter = 0 while True: try: counter += 1 test.log("Starting {}".format(app_name)) squish.startApplication(config.APPLICATION_NAME) if counter == 1: test.log(f"Application launched at the {counter}'st try.") elif counter == 2: test.log(f"Application launched at the {counter}'nd try.") elif counter == 3: test.log(f"Application launched at the {counter}'rd try.") else: test.log(f"Application launched at the {counter}'th try.") break except RuntimeError: if counter == 1: test.log(f"Application failed to launch after {counter} try - Please refer logs") elif counter == 20: test.log(f"Exiting after {counter} tries..") sys.exit(1) else: test.log(f"Application failed to launch after {counter} tries - Please refer logs") except: logErrorDetails("Failed to start the application") sys.exit(1) def color_verification(exp_val = "Red", act_val = "#c53b33"): """ Function to verify item color verification Argument: exp_val - Expected required value act_val - Color displayed on UI Return: handle the application for log """ test.compare(config.COLOR_CODES[color_name],(act_val.color[name])) def check_if_object_is_within_the_container(obj=None, container=None): """ check if an object is inside a container Arguments: obj - child UI object container - container UI object Return: bool """ container = squish.findObject(container) containerPos = container.mapToGlobal(squish.QPoint(0, 0)) container_x, container_y = pyInt(containerPos.x), pyInt(containerPos.y) container_width, container_height = pyInt(container.width), pyInt(container.height) obj = squish.findObject(obj) objPos = obj.mapToGlobal(squish.QPoint(0, 0)) obj_x, obj_y = pyInt(objPos.x), pyInt(objPos.y) obj_width, obj_height = pyInt(obj.width), pyInt(obj.height) if obj_x >= container_x and obj_y >= container_y: if (obj_x + obj_width) <= (container_x + container_width) and (obj_y + obj_height) <= (container_y + container_height): return True return False def scroll_to_zone(zone=None, screen_object=None): """ scroll to the numeric if object is hidden Arguments: zone - UI object screen_object - UI object (UI Home screen) Return: bool """ counter = 0 while counter <= 100: try: counter += 1 squish.findObject(zone) squish.snooze(0.5) if check_if_object_is_within_the_container(obj=zone, container=screen_object): return True else: raise RuntimeError except RuntimeError: ScreenObj = squish.waitForObject(screen_object) screenHeight = pyInt(ScreenObj.height) screenWidth = pyInt(ScreenObj.width) squish.mouseWheel(ScreenObj, (screenWidth-100), 107, 0, -(screenHeight-460), squish.Qt.NoModifier) raise LookupError("zone object is not in view to the user after " + \ "trying 100 times") def set_slider_value(slider_value, slider_object): """ Method to drag slider to desired value Argument: slider_value : value in which slider should be placed slider_object : object of the slider Return: True - if user able to select slider. else, false """ slider_value = pyFloat(slider_value) actual_value = slider_value counter = 0 while True: squish.mouseDrag(slider_object, 0, 0, slider_value, 0, squish.Qt.NoModifier, squish.Qt.LeftButton) if counter == 25: test.fail("User unable to fix slider slider_value") return False if actual_value == pyFloat(slider_object.value): return True if slider_value >= pyFloat(slider_object.value): slider_value = slider_value + 30 if slider_value <= pyFloat(slider_object.value): slider_value = slider_value - 30 counter = counter + 1