########################################################################### # # 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) Papiya Mandal # @date (last) 21-Jan-2022 # @author (last) Joseph varghese # @date (last) 15-Jan-2022 # ############################################################################ import object import names import sys import squish import test from squish import * from builtins import int as pyInt from configuration import config from dialin.ui.hd_simulator import HDSimulator #from builtins import str as pyStr #from builtins import float as pyFloat hd = HDSimulator() 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.") squish.snooze(20) 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, screen="Main"): """ scroll to the numeric if object is hidden Arguments: zone - UI object screen_object - UI object 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) if screen == "pop up": squish.mouseWheel(ScreenObj, screenWidth-1250, screenHeight-50, 0, -10, squish.Qt.NoModifier) else: squish.mouseWheel(ScreenObj, screenWidth-1000, screenHeight-10, 0, -50, squish.Qt.NoModifier) raise LookupError("zone object is not in view to the user after " + \ "trying 100 times")