import os import sys import unittest import warnings import urllib3 import argparse from perfecto.model.model import Job, Project from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestContext, TestResultFactory) #from appium import webdriver from selenium import webdriver class TestConf(unittest.TestCase): projectname = 'TIP Project' projectversion = '1.0' jobname = 'Tip-CI-Regression' jobnumber = 1 tags = 'TestTag' def __init__(self, *args, **kwargs): #Suppress InsecureRequestWarning: Unverified HTTPS request is being made urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) self.securityToken = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw' self.host = 'tip.perfectomobile.com' self.driver = None self.reporting_client = None self.running = False self.suitesetup = False self.setupclient = None self.tags = '' self.testCaseName = 'VerifyAPToMobileDeviceAndroid' super(TestConf, self).__init__(*args, **kwargs) def init_listener(self, projectname=None, projectversion=None, jobname=None, jobnumber=None): """ This key word helps to initialize the listener with proper project info :param projectname: current project name :param projectversion: current project version :param jobname: the CI job name :param jobnumber: the CI job number :return: """ if projectname != None: self.projectname = projectname if projectversion != None: self.projectversion = projectversion if jobname != None: self.jobname = jobname if jobnumber != None: self.jobnumber = int(float(jobnumber)) def setUp(self): warnings.simplefilter("ignore", ResourceWarning) capabilities = { 'platformName': 'Android', 'securityToken' : 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw', #browserName Chrome/Safari/MobileOS/MobileDefault/PerfectoMobile 'browserName': 'MobileOS' #'bundleId': 'com.apple.mobilesafari', #'enableAppiumBehavior': True, # Enable new architecture of Appium # 'autoLaunch': True, # To work with hybrid applications, install the iOS/Android application as instrumented. #'OS': 'Android.*' } #self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) self.driver = webdriver.Remote('https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) self.driver.implicitly_wait(30) self.create_reporting_client() self.reporting_client.test_start(self.testCaseName, TestContext([], 'TipCustomTag')) def run(self, result=None): self.currentResult = True # remember result for use in tearDown unittest.TestCase.run(self, result) # call superclass run method def tearDown(self): warnings.simplefilter("ignore", ResourceWarning) try: print("-------------------------------------------") print(" -- Tear Down --") self.reporting_client.test_stop(TestResultFactory.create_success()) #if self.currentResult.wasSuccessful(): # self.reporting_client.test_stop(TestResultFactory.create_success()) # else: # self.reporting_client.test_stop(TestResultFactory.create_failure('failure 4096' * 1000)) # self.reporting_client.test_stop(TestResultFactory.create_failure(self.currentResult.errors, # self.currentResult.failures)) # Print report's url print('Report-Url: ' + self.reporting_client.report_url() + '\n') except Exception as e: print (e.message) try: self.driver.close() except Exception as e: print(" -- Exception Not Able To close --") print (e.message) finally: try: self.driver.quit() except Exception as e: print(" -- Exception Not Able To Quit --") print (e.message) def create_reporting_client(self): perfecto_execution_context = PerfectoExecutionContext(self.driver, self.tags, Job(self.jobname, self.jobnumber), Project(self.projectname, self.projectversion)) #perfecto_execution_context = PerfectoExecutionContext(self.driver, ['execution tag1', 'execution tag2']) self.reporting_client = PerfectoReportiumClient(perfecto_execution_context)