diff --git a/libs/apnos/apnos.py b/libs/apnos/apnos.py index 108b0a339..dadf73cf0 100644 --- a/libs/apnos/apnos.py +++ b/libs/apnos/apnos.py @@ -1,21 +1,17 @@ """ APNOS Library : Used to execute SSH Commands in AP Using Direct-AP-SSH/ Jumphost-Serial Console - Currently Having Methods: 1. Get iwinfo 2. AP Manager Satus 3. Vif Config ssid's 4. Vif State ssid's 5. Get current Firmware - """ - import paramiko - - +from scp import SCPClient +import os class APNOS: - - def __init__(self, credentials=None): + def __init__(self, credentials=None, pwd=os.getcwd()): self.owrt_args = "--prompt root@OpenAp -s serial --log stdout --user root --passwd openwifi" if credentials is None: print("No credentials Given") @@ -27,7 +23,25 @@ class APNOS: self.mode = credentials['jumphost'] # 1 for jumphost, 0 for direct ssh if self.mode: self.tty = credentials['jumphost_tty'] # /dev/ttyAP1 - + client = self.ssh_cli_connect() + cmd = '[ -f ~/cicd-git/ ] && echo "True" || echo "False"' + stdin, stdout, stderr = client.exec_command(cmd) + if str(stdout.read()).__contains__("False"): + cmd = 'mkdir ~/cicd-git/' + client.exec_command(cmd) + cmd = '[ -f ~/cicd-git/openwrt_ctl.py ] && echo "True" || echo "False"' + stdin, stdout, stderr = client.exec_command(cmd) + if str(stdout.read()).__contains__("False"): + print("Copying openwrt_ctl serial control Script...") + with SCPClient(client.get_transport()) as scp: + scp.put(pwd+'openwrt_ctl.py', '~/cicd-git/openwrt_ctl.py') # Copy my_file.txt to the server + cmd = '[ -f ~/cicd-git/openwrt_ctl.py ] && echo "True" || echo "False"' + stdin, stdout, stderr = client.exec_command(cmd) + var = str(stdout.read()) + if var.__contains__("True"): + print("APNOS Serial Setup OK") + else: + print("APNOS Serial Setup Fail") # Method to connect AP-CLI/ JUMPHOST-CLI def ssh_cli_connect(self): client = paramiko.SSHClient() @@ -36,45 +50,50 @@ class APNOS: self.username, self.ip, self.port, self.password)) client.connect(self.ip, username=self.username, password=self.password, port=self.port, timeout=10, allow_agent=False, banner_timeout=200) - return client - + def reboot(self): + client = self.ssh_cli_connect() + cmd = "reboot" + if self.mode: + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + f"cmd --value \"{cmd}\" " + stdin, stdout, stderr = client.exec_command(cmd) + output = stdout.read() + client.close() + return output # Method to get the iwinfo status of AP using AP-CLI/ JUMPHOST-CLI def iwinfo_status(self): client = self.ssh_cli_connect() cmd = 'iwinfo' if self.mode: - cmd = f"cd /home/lanforge/lanforge-scripts/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ f"cmd --value \"{cmd}\" " stdin, stdout, stderr = client.exec_command(cmd) output = stdout.read() client.close() return output - # Method to get the vif_config of AP using AP-CLI/ JUMPHOST-CLI def get_vif_config(self): client = self.ssh_cli_connect() cmd = "/usr/opensync/bin/ovsh s Wifi_VIF_Config -c" if self.mode: - cmd = f"cd /home/lanforge/lanforge-scripts/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ f"cmd --value \"{cmd}\" " stdin, stdout, stderr = client.exec_command(cmd) output = stdout.read() client.close() return output - # Method to get the vif_state of AP using AP-CLI/ JUMPHOST-CLI def get_vif_state(self): client = self.ssh_cli_connect() cmd = "/usr/opensync/bin/ovsh s Wifi_VIF_State -c" if self.mode: - cmd = f"cd /home/lanforge/lanforge-scripts/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ f"cmd --value \"{cmd}\" " stdin, stdout, stderr = client.exec_command(cmd) output = stdout.read() client.close() return output - # Method to get the vif_config ssid's of AP using AP-CLI/ JUMPHOST-CLI def get_vif_config_ssids(self): stdout = self.get_vif_config() @@ -84,7 +103,6 @@ class APNOS: if ssid[0].split(":")[0] == "b'ssid": ssid_list.append(ssid[0].split(":")[1].replace("'", "")) return ssid_list - # Method to get the vif_state ssid's of AP using AP-CLI/ JUMPHOST-CLI def get_vif_state_ssids(self): stdout = self.get_vif_state() @@ -94,14 +112,13 @@ class APNOS: if ssid[0].split(":")[0] == "b'ssid": ssid_list.append(ssid[0].split(":")[1].replace("'", "")) return ssid_list - # Method to get the active firmware of AP using AP-CLI/ JUMPHOST-CLI def get_active_firmware(self): try: client = self.ssh_cli_connect() cmd = '/usr/opensync/bin/ovsh s AWLAN_Node -c | grep FW_IMAGE_ACTIVE' if self.mode: - cmd = f"cd /home/lanforge/lanforge-scripts/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty}" \ + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty}" \ f" --action cmd --value \"{cmd}\" " stdin, stdout, stderr = client.exec_command(cmd) output = stdout.read() @@ -114,21 +131,20 @@ class APNOS: print(e) cli_active_fw = "Error" return cli_active_fw - # Method to get the manager state of AP using AP-CLI/ JUMPHOST-CLI def get_manager_state(self): try: client = self.ssh_cli_connect() cmd = '/usr/opensync/bin/ovsh s Manager -c | grep status' if self.mode: - cmd = f"cd /home/lanforge/lanforge-scripts/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty}" \ + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty}" \ f" --action cmd --value \"{cmd}\" " stdin, stdout, stderr = client.exec_command(cmd) output = stdout.read() status = str(output.decode('utf-8').splitlines()) + # print(output, stderr.read()) client.close() except Exception as e: print(e) status = "Error" return status - diff --git a/libs/perfecto/README.md b/libs/perfecto_libs/README.md similarity index 100% rename from libs/perfecto/README.md rename to libs/perfecto_libs/README.md diff --git a/libs/perfecto/__init__.py b/libs/perfecto_libs/__init__.py similarity index 100% rename from libs/perfecto/__init__.py rename to libs/perfecto_libs/__init__.py diff --git a/libs/perfecto_libs/android_lib.py b/libs/perfecto_libs/android_lib.py new file mode 100644 index 000000000..551c91b0d --- /dev/null +++ b/libs/perfecto_libs/android_lib.py @@ -0,0 +1,34 @@ +# !/usr/local/lib64/python3.8 +""" + Controller Library + 1. controller_data/sdk_base_url + 2. login credentials +""" +from logging import exception +import unittest +import warnings +from perfecto.test import TestResultFactory +import pytest +import sys +import time +from selenium.common.exceptions import NoSuchElementException +from selenium.webdriver.common.by import By +from appium import webdriver +from selenium.common.exceptions import NoSuchElementException + +def openApp(appName, setup_perfectoMobile): + print("Refreshing App: " + appName) + setup_perfectoMobile[1].step_start("Opening App: " + appName) + params = {'identifier': appName} + #Open/Close/Open Action is performed to ensure the app is back to its Original Settings + setup_perfectoMobile[0].execute_script('mobile:application:open', params) + setup_perfectoMobile[0].execute_script('mobile:application:close', params) + setup_perfectoMobile[0].execute_script('mobile:application:open', params) + +def closeApp(appName, setup_perfectoMobile): + print("Closing App.." + appName) + setup_perfectoMobile[1].step_start("Closing App: " + appName) + params = {'identifier': appName} + setup_perfectoMobile[0].execute_script('mobile:application:close', params) + + diff --git a/libs/perfecto_libs/iOS_lib.py b/libs/perfecto_libs/iOS_lib.py new file mode 100644 index 000000000..81faeff4b --- /dev/null +++ b/libs/perfecto_libs/iOS_lib.py @@ -0,0 +1,395 @@ +# !/usr/local/lib64/python3.8 +""" + Controller Library + 1. controller_data/sdk_base_url + 2. login credentials +""" +from logging import exception +import unittest +import warnings +from perfecto.test import TestResultFactory +import pytest +import sys +import time +from selenium.common.exceptions import NoSuchElementException +from selenium.webdriver.common.by import By +from appium import webdriver +from selenium.common.exceptions import NoSuchElementException + +def openApp(appName, setup_perfectoMobile): + #print("Refreshing App: " + appName) + setup_perfectoMobile[1].step_start("Opening App: " + appName) + params = {'identifier': appName} + #Open/Close/Open Action is performed to ensure the app is back to its Original Settings + setup_perfectoMobile[0].execute_script('mobile:application:open', params) + setup_perfectoMobile[0].execute_script('mobile:application:close', params) + setup_perfectoMobile[0].execute_script('mobile:application:open', params) + +def closeApp(appName, setup_perfectoMobile): + #print("Closing App.." + appName) + setup_perfectoMobile[1].step_start("Closing App: " + appName) + params = {'identifier': appName} + setup_perfectoMobile[0].execute_script('mobile:application:close', params) + +def set_APconnMobileDevice_iOS(WifiName, setup_perfectoMobile, connData): + + print("Verifying Wifi/AP Connection Details....") + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + report.step_start("Set Wifi Network to " + WifiName) + + #Open Settings Application + openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) + + try: + # print("Verifying Connected Wifi Connection") + report.step_start("Verifying Connected Wifi Connection") + element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]") + Wifi_AP_Name = element.text + except NoSuchElementException: + print("Exception: Verify Xpath - UpdateXpath") + + #NEED to fail if Wifi AP NAME isn't in the approved list AKA 5g & 2g. + #print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name) + #print("Wifi Name Matches - Already Connected To: " + WifiName) + + if Wifi_AP_Name.__eq__(WifiName): + print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name) + + #Verify if Ap is connected with Wifi + report.step_start("Verify Wifi Connection Status..") + #print("Click Wifi Connection..") + element.click() + + #Verifies if AP is connected to Wifi status + #print("Verify Wifi Connection Status..") + report.step_start("Verify Wifi Connected Status") + WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='"+ Wifi_AP_Name + "']" + elementWifName = driver.find_element_by_xpath(WifiXpath) + + #Check AP Internet Error Msg + print("Checking Internet Connection Error..") + report.step_start("Checking Internet Connection Error..") + + try: + WifiInternetErrMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text + except NoSuchElementException: + report.assertSoft + print("Wifi-AP Connected Successfully: " + Wifi_AP_Name) + + else: + try: + report.step_start("Selecting Wifi...: " + WifiName) + element.click() + except NoSuchElementException: + print("Exception: Selection Wifi Network") + + try: + wifiXpath2 = driver.find_element_by_xpath("//*[@label='"+ WifiName + "']") + wifiXpath2.click() + + except NoSuchElementException: + print("\n Can't find Wifi/AP NAME.....CheckXpath & Wifi Name") + # print (e.message) + + #Set password if Needed + try: + wifiPassword = driver.find_element_by_xpath("//*[@label='Password']") + wifiPassword.send_keys(connData["wifi-SSID-2g-Pwd"]) + except NoSuchElementException: + print("Enter Password Page Not Loaded ") + + try: + joinBTN = driver.find_element_by_xpath("//*[@label='Join']") + joinBTN.click() + except NoSuchElementException: + print("Join Button Not Enabled...Verify if Password is set properly ") + + try: + WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text + except NoSuchElementException: + print("Wifi-AP Connected Successfully: " + WifiName) + +def Toggle_AirplaneMode_iOS(setup_perfectoMobile, connData): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + #Open Settings Application + openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) + + #Toggle Airplane Mode + print("Toggle Airplane Mode..") + report.step_start("Toggle Airplane Mode") + try: + AirplaneMode = driver.find_element_by_xpath("//XCUIElementTypeSwitch[@label='Airplane Mode']") + #Toggle Airplane Mode + AirplaneMode.click() + + #Verify Cellular Mode Text + report.step_start("Verify Cellular Mode") + try: + CellularMsgEle = driver.find_element_by_xpath("//*[@name='Airplane Mode' and @value='Airplane Mode']") + #ssertEqual(CellularMsgEle.text, "Airplane Mode", "Airplane Mode Not Triggerd") + print("Verify Cellular Mode Text: Airplane Mode Success") + except NoSuchElementException: + print("Cellular Mode Not in Airplane Mode: ERROR") + + #Set Airplane Mode Back + AirplaneMode.click() + except NoSuchElementException: + print("Airplane Wifi Button not loaded...") + + #Verify No Sim Card Installed Msg Popup + report.step_start("Verify No Sim Card Installed Msg Popup") + print("Verify No Sim Card Installed Msg Popup..") + try: + NoSimCardErrorMsg = driver.find_element_by_xpath("//*[@value='No SIM Card Installed']") + except NoSuchElementException: + print("No Sim Card AlertMsg") + + #Click ok on No Sim Card Msg Popup + print("Click ok on No Sim Card Msg Popup..") + report.step_start("Click ok on No Sim Card Msg Popup") + try: + NoSimCardErrorMsgOK = driver.find_element_by_xpath("//*[@label='OK']") + NoSimCardErrorMsgOK.click() + except NoSuchElementException: + print("No Sim Card AlertMsg") + +def verify_APconnMobileDevice_iOS(WifiName, setup_perfectoMobile, connData): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + report.step_start("Verifying WifiName: " + WifiName) + + #Refresh Settings Application + openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) + + #Verifies if AP is connected to Wifi status + try: + # print("Verifying Connected Wifi Connection") + report.step_start("Verifying Connected Wifi Connection") + element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]") + Wifi_AP_Name = element.text + + except NoSuchElementException: + print("Exception: Verify Xpath - UpdateXpath") + + try: + if Wifi_AP_Name.__eq__(WifiName): + print("Wifi Name Matched Successful ") + #print("Wifi_AP_ConnName: " + "'"+ Wifi_AP_Name + "'" + " Not Equal To: " + WifiName + "....Check AP Name Syntax") + return True + else: + print ("-- Wifi Don't Match Match -- ") + #print("Wifi_AP_ConnName: " + "'"+ Wifi_AP_Name + "'" + " Not Equal To: " + WifiName + "....Check AP Name Syntax") + return False + except NoSuchElementException: + print("Exception Checking Wifi/AP connection NAME...") + return None + +def Toggle_WifiMode_iOS(setup_perfectoMobile, connData): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + #Open Settings Application + #openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) + + report.step_start("Toggle Wifi Mode") + print("Toggle Wifi Mode..") + try: + WifiMode = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']") + #Toggle Wifi Mode + WifiMode.click() + #Verify Radio Button Mode + try: + WifiDissconnected = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']") + #self.assertEqual(WifiDissconnected.text, "Airplane Mode", "Airplane Mode Not Triggerd") + print("Wifi Radio Button Toggled to Disable") + except NoSuchElementException: + print("Wifi Radio Button Not Disabled...") + + #Set Airplane Mode Back + WifiDissconnected.click() + print("Wifi Radio Button Toggled to Enabled") + except NoSuchElementException: + print("Airplane Wifi Button not loaded...") + +def get_WifiIPAddress_iOS(setup_perfectoMobile, connData): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) + + try: + # print("Verifying Connected Wifi Connection") + report.step_start("Loading Wifi Page") + element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]") + element.click() + except NoSuchElementException: + print("Exception: Verify Xpath - unable to click on Wifi") + + report.step_start("Wifi Page") + WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='"+ connData["Default-SSID-perfecto-b"] + "']" + elementWifName = driver.find_element_by_xpath(WifiXpath) + #Check AP Internet Error Msg + print("Checking Internet Connection Error...") + report.step_start("Checking Internet Connection Error..") + + try: + driver.implicitly_wait(5) + WifiInternetErrMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text + except NoSuchElementException: + #Need to fail test case + driver.implicitly_wait(25) + print("Wifi Connected without any errors: " + connData["Default-SSID-perfecto-b"]) + #Fail TEST CASE + + try: + WifiInternetInfo=driver.find_element_by_xpath("(//XCUIElementTypeButton[@label='More Info'])[1]") + WifiInternetInfo.click() + except NoSuchElementException: + print("Wifi-AP Connected Successfully: " + connData["Default-SSID-perfecto-b"]) + + try: + WifiIPaddress= driver.find_element_by_xpath("(//*[@label='Router']/parent::*/XCUIElementTypeStaticText)[2]").text + return WifiIPaddress + except NoSuchElementException: + print("Wifi-AP Connected Successfully: " + connData["Default-SSID-perfecto-b"]) + + return None + +def ping_deftapps_iOS(setup_perfectoMobile, AP_IPaddress): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + report.step_start("Pinging deftapps....") + try: + pingHost = "//*[@value='']" + element2 = driver.find_element_by_xpath(pingHost) + element2.clear() + #element2.send_keys(AP_IPaddress) + element2.send_keys("8.8.8.8") + + #Ping Enable + report.step_start("Pingin Host") + print("Pingin Host..") + element3 = driver.find_element_by_xpath("//*[@label='go']") + element3.click() + + time.sleep(10) + + #handle any popup + + report.step_start("Stop Ping Host") + print("Stop Ping Host..") + element4 = driver.find_element_by_xpath("//*[@label='Stop']") + element4.click() + + # /* Check Packet Loss */ + report.step_start("Verifying Packet Loss..") + print("Verifying Packet Loss..") + try: + element5 = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='0']") + #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device") + except NoSuchElementException: + print("No Packet Loss Detected 1st Attempt") + + report.step_start("Verifying Packet Sent..") + print("Verifying Packet Sent..") + try: + packetSent = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Sent']/parent::*/XCUIElementTypeStaticText[2]").text + #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device") + except NoSuchElementException: + print("-------Exception: Packet Sent Error, check object ID") + + report.step_start("Verifying Packet Received..") + print("Verifying Packet Received..") + try: + packetReceived = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Received']/parent::*/XCUIElementTypeStaticText[2]").text + #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device") + except NoSuchElementException: + print("-------Exception: Packet Sent Error, check object ID") + + print("Total Packet Sent: " + packetSent + " Packed Recieved: " + packetReceived) + + # Also Check #Sendto: No route to host + print("Verifying No route to host Error Msg....") + report.step_start("Verifying No route to host Error Msg..") + try: + element7 = driver.find_element_by_xpath("(//XCUIElementTypeStaticText[@label='Sendto: No route to host'])[2]") + print("Packet Loss Detected on AP!!!!!: " + AP_IPaddress) + #self.assertNotEqual(element7.text, "Sendto: No route to host", "Packet Loss Exist, Please Check Device AP: " + Wifi_AP_Name) + except NoSuchElementException: + print("\nNo Packet Loss Detected on AP!!!!!: " + AP_IPaddress) + + except NoSuchElementException: + print("Exception while ping Deft App on iOS") + + return None + +def tearDown(setup_perfectoMobile): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + report.step_start("Exception Failure Tear Down....") + + try: + print(" -- Tear Down --") + report.test_stop(TestResultFactory.create_failure) + print('Report-Url: ' + report.report_url() + '\n') + driver.close() + except Exception as e: + print(" -- Exception Not Able To close --") + print (e.message) + finally: + try: + driver.quit() + except Exception as e: + print(" -- Exception Not Able To Quit --") + print (e.message) + + +def verifyUploadDownloadSpeediOS(setup_perfectoMobile, get_APToMobileDevice_data): + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + connData = get_APToMobileDevice_data + + try: + report.step_start("Google Home Page") + driver.get(connData["webURL"]) + elementFindTxt = driver.find_element_by_xpath(connData["lblSearch"]) + elementFindTxt.send_keys("Internet Speed Test") + + try: + elelSearch = driver.find_element_by_xpath(connData["elelSearch"]) + elelSearch.click() + except NoSuchElementException: + print("Enter Not Active...") + + report.step_start("Verify Run Button") + driver.find_element_by_xpath(connData["BtnRunSpeedTest"]).click() + + #Get upload/Download Speed + try: + report.step_start("Get upload/Download Speed") + time.sleep(60) + downloadMbps = driver.find_element_by_xpath(connData["downloadMbps"]) + downloadSpeed = downloadMbps.text + print("Download: " + downloadSpeed + " Mbps") + + UploadMbps = driver.find_element_by_xpath(connData["UploadMbps"]) + uploadSpeed = UploadMbps.text + print("Upload: " + uploadSpeed + " Mbps") + + print("Access Point Verification Completed Successfully") + + except NoSuchElementException: + print("Access Point Verification NOT Completed, checking Connection....") + + currentResult = True + + assert currentResult + except Exception as e: + print (e.message) \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/configuration.py b/tests/configuration.py index dc12ad75c..f962c892e 100644 --- a/tests/configuration.py +++ b/tests/configuration.py @@ -191,4 +191,4 @@ TEST_CASES = { "bridge_ssid_update": 8742, "nat_ssid_update": 8743, "vlan_ssid_update": 8744 -} +} \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index 00b480da3..507bdd680 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -77,6 +77,34 @@ def pytest_addoption(parser): help="Stop using Testrails" ) + #Perfecto Parameters + parser.addini("perfectoURL", "Cloud URL") + parser.addini("securityToken", "Security Token") + parser.addini("platformName-iOS", "iOS Platform") + parser.addini("platformName-android", "Android Platform") + parser.addini("model-iOS", "iOS Devices") + parser.addini("model-android", "Android Devices") + parser.addini("bundleId-iOS", "iOS Devices") + parser.addini("bundleId-iOS-Settings", "iOS Settings App") + parser.addini("appPackage-android", "Android Devices") + parser.addini("wifi-SSID-5gl-Pwd", "Wifi 5g Password") + parser.addini("wifi-SSID-2g-Pwd", "Wifi 2g Password") + parser.addini("Default-SSID-5gl-perfecto-b", "Wifi 5g AP Name") + parser.addini("Default-SSID-2g-perfecto-b", "Wifi 2g AP Name") + parser.addini("Default-SSID-perfecto-b", "Wifi AP Name") + parser.addini("bundleId-iOS-Ping", "Ping Bundle ID") + parser.addini("browserType-iOS", "Mobile Browser Name") + parser.addini("projectName", "Project Name") + parser.addini("projectVersion", "Project Version") + parser.addini("jobName", "CI Job Name") + parser.addini("jobNumber", "CI Job Number") + parser.addini("reportTags", "Report Tags") + parser.addoption( + "--access-points-perfecto", + # nargs="+", + default=["Perfecto"], + help="list of access points to test" + ) """ Test session base fixture diff --git a/tests/e2e/interOp/README.md b/tests/e2e/interOp/README.md new file mode 100644 index 000000000..65ecf4958 --- /dev/null +++ b/tests/e2e/interOp/README.md @@ -0,0 +1,15 @@ +# wlan-testing framework Information + +## pytest uses setup > test > tear_down +#### Fixtures : Code that needs to be part of more than 1 test cases, Setup and teardown is Implemented in Fixtures + + +#pip3 install selenium +#pip3 install perfecto-py37 +#pip3 install Appium-Python-Client + +#### For any Clarifications, regarding Framework, +#### Email : shivam.thakur@candelatech.com + + + diff --git a/tests/e2e/interOp/conftest.py b/tests/e2e/interOp/conftest.py index 073052cee..15a616417 100644 --- a/tests/e2e/interOp/conftest.py +++ b/tests/e2e/interOp/conftest.py @@ -10,37 +10,41 @@ from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestCont import pytest import logging + +sys.path.append( + os.path.dirname( + os.path.realpath(__file__) + ) +) +if "libs" not in sys.path: + sys.path.append(f'../libs') + +from apnos.apnos import APNOS +from controller.controller import Controller +from controller.controller import ProfileUtility +from controller.controller import FirmwareUtility +import pytest +import logging +from configuration import RADIUS_SERVER_DATA +from configuration import TEST_CASES +from configuration import CONFIGURATION +from configuration import FIRMWARE +from testrails.testrail_api import APIClient +from testrails.reporting import Reporting + +sys.path.append( + os.path.dirname( + os.path.realpath(__file__) + ) +) +if "tests" not in sys.path: + sys.path.append(f'../tests') + +from configuration import CONFIGURATION + from urllib3 import exceptions -def pytest_addoption(parser): - parser.addini("perfectoURL", "Cloud URL") - parser.addini("securityToken", "Security Token") - parser.addini("platformName-iOS", "iOS Platform") - parser.addini("platformName-android", "Android Platform") - parser.addini("model-iOS", "iOS Devices") - parser.addini("model-android", "Android Devices") - parser.addini("bundleId-iOS", "iOS Devices") - parser.addini("bundleId-iOS-Settings", "iOS Settings App") - parser.addini("appPackage-android", "Android Devices") - parser.addini("wifi-SSID-5gl-Pwd", "Wifi 5g Password") - parser.addini("wifi-SSID-2g-Pwd", "Wifi 2g Password") - parser.addini("Default-SSID-5gl-perfecto-b", "Wifi 5g AP Name") - parser.addini("Default-SSID-2g-perfecto-b", "Wifi 2g AP Name") - parser.addini("Default-SSID-perfecto-b", "Wifi AP Name") - parser.addini("bundleId-iOS-Ping", "Ping Bundle ID") - parser.addini("browserType-iOS", "Mobile Browser Name") - parser.addini("projectName", "Project Name") - parser.addini("projectVersion", "Project Version") - parser.addini("jobName", "CI Job Name") - parser.addini("jobNumber", "CI Job Number") - parser.addini("reportTags", "Report Tags") - parser.addoption( - "--access-points", - # nargs="+", - default=["Perfecto"], - help="list of access points to test" - ) @pytest.fixture(scope="class") def setup_perfectoMobileWeb(request): @@ -200,336 +204,257 @@ def get_ToggleWifiMode_data(request): } yield passPoint_data -def openApp(appName, setup_perfectoMobile): - #print("Refreshing App: " + appName) - setup_perfectoMobile[1].step_start("Opening App: " + appName) - params = {'identifier': appName} - #Open/Close/Open Action is performed to ensure the app is back to its Original Settings - setup_perfectoMobile[0].execute_script('mobile:application:open', params) - setup_perfectoMobile[0].execute_script('mobile:application:close', params) - setup_perfectoMobile[0].execute_script('mobile:application:open', params) - -def closeApp(appName, setup_perfectoMobile): - #print("Closing App.." + appName) - setup_perfectoMobile[1].step_start("Closing App: " + appName) - params = {'identifier': appName} - setup_perfectoMobile[0].execute_script('mobile:application:close', params) -def set_APconnMobileDevice_iOS(WifiName, setup_perfectoMobile, connData): - - print("Verifying Wifi/AP Connection Details....") - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - report.step_start("Set Wifi Network to " + WifiName) - #Open Settings Application - openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) +@pytest.fixture(scope="function") +def get_lanforge_data(testbed): + lanforge_data = {} + if CONFIGURATION[testbed]['traffic_generator']['name'] == 'lanforge': + lanforge_data = { + "lanforge_ip": CONFIGURATION[testbed]['traffic_generator']['details']['ip'], + "lanforge-port-number": CONFIGURATION[testbed]['traffic_generator']['details']['port'], + "lanforge_2dot4g": CONFIGURATION[testbed]['traffic_generator']['details']['2.4G-Radio'][0], + "lanforge_5g": CONFIGURATION[testbed]['traffic_generator']['details']['5G-Radio'][0], + "lanforge_2dot4g_prefix": CONFIGURATION[testbed]['traffic_generator']['details']['2.4G-Station-Name'], + "lanforge_5g_prefix": CONFIGURATION[testbed]['traffic_generator']['details']['5G-Station-Name'], + "lanforge_2dot4g_station": CONFIGURATION[testbed]['traffic_generator']['details']['2.4G-Station-Name'], + "lanforge_5g_station": CONFIGURATION[testbed]['traffic_generator']['details']['5G-Station-Name'], + "lanforge_bridge_port": CONFIGURATION[testbed]['traffic_generator']['details']['upstream'], + "lanforge_vlan_port": CONFIGURATION[testbed]['traffic_generator']['details']['upstream'] + ".100", + "vlan": 100 + } + yield lanforge_data - try: - # print("Verifying Connected Wifi Connection") - report.step_start("Verifying Connected Wifi Connection") - element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]") - Wifi_AP_Name = element.text - except NoSuchElementException: - print("Exception: Verify Xpath - UpdateXpath") - #NEED to fail if Wifi AP NAME isn't in the approved list AKA 5g & 2g. - #print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name) - #print("Wifi Name Matches - Already Connected To: " + WifiName) +@pytest.fixture(scope="module") +def instantiate_profile(instantiate_controller): + #try: + profile_object = ProfileUtility(sdk_client=instantiate_controller) + #except: + #profile_object = False + yield profile_object - if Wifi_AP_Name.__eq__(WifiName): - print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name) - - #Verify if Ap is connected with Wifi - report.step_start("Verify Wifi Connection Status..") - #print("Click Wifi Connection..") - element.click() - #Verifies if AP is connected to Wifi status - #print("Verify Wifi Connection Status..") - report.step_start("Verify Wifi Connected Status") - WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='"+ Wifi_AP_Name + "']" - elementWifName = driver.find_element_by_xpath(WifiXpath) - - #Check AP Internet Error Msg - print("Checking Internet Connection Error..") - report.step_start("Checking Internet Connection Error..") +@pytest.fixture(scope="session") +def get_equipment_id(instantiate_controller, testbed): + equipment_id = 0 + if len(CONFIGURATION[testbed]['access_point']) == 1: + equipment_id = instantiate_controller.get_equipment_id( + serial_number=CONFIGURATION[testbed]['access_point'][0]['serial']) + yield equipment_id - try: - WifiInternetErrMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text - except NoSuchElementException: - report.assertSoft - print("Wifi-AP Connected Successfully: " + Wifi_AP_Name) - else: - try: - report.step_start("Selecting Wifi...: " + WifiName) - element.click() - except NoSuchElementException: - print("Exception: Selection Wifi Network") +@pytest.fixture(scope="session") +def upload_firmware(should_upload_firmware, instantiate_firmware, get_latest_firmware): + firmware_id = instantiate_firmware.upload_fw_on_cloud(fw_version=get_latest_firmware, + force_upload=should_upload_firmware) + yield firmware_id - try: - wifiXpath2 = driver.find_element_by_xpath("//*[@label='"+ WifiName + "']") - wifiXpath2.click() - - except NoSuchElementException: - print("\n Can't find Wifi/AP NAME.....CheckXpath & Wifi Name") - # print (e.message) - #Set password if Needed - try: - wifiPassword = driver.find_element_by_xpath("//*[@label='Password']") - wifiPassword.send_keys(connData["wifi-SSID-2g-Pwd"]) - except NoSuchElementException: - print("Enter Password Page Not Loaded ") - - try: - joinBTN = driver.find_element_by_xpath("//*[@label='Join']") - joinBTN.click() - except NoSuchElementException: - print("Join Button Not Enabled...Verify if Password is set properly ") - - try: - WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text - except NoSuchElementException: - print("Wifi-AP Connected Successfully: " + WifiName) - -def Toggle_AirplaneMode_iOS(setup_perfectoMobile, connData): - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - - #Open Settings Application - openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) - - #Toggle Airplane Mode - print("Toggle Airplane Mode..") - report.step_start("Toggle Airplane Mode") - try: - AirplaneMode = driver.find_element_by_xpath("//XCUIElementTypeSwitch[@label='Airplane Mode']") - #Toggle Airplane Mode - AirplaneMode.click() - - #Verify Cellular Mode Text - report.step_start("Verify Cellular Mode") - try: - CellularMsgEle = driver.find_element_by_xpath("//*[@name='Airplane Mode' and @value='Airplane Mode']") - #ssertEqual(CellularMsgEle.text, "Airplane Mode", "Airplane Mode Not Triggerd") - print("Verify Cellular Mode Text: Airplane Mode Success") - except NoSuchElementException: - print("Cellular Mode Not in Airplane Mode: ERROR") - - #Set Airplane Mode Back - AirplaneMode.click() - except NoSuchElementException: - print("Airplane Wifi Button not loaded...") - - #Verify No Sim Card Installed Msg Popup - report.step_start("Verify No Sim Card Installed Msg Popup") - print("Verify No Sim Card Installed Msg Popup..") - try: - NoSimCardErrorMsg = driver.find_element_by_xpath("//*[@value='No SIM Card Installed']") - except NoSuchElementException: - print("No Sim Card AlertMsg") - - #Click ok on No Sim Card Msg Popup - print("Click ok on No Sim Card Msg Popup..") - report.step_start("Click ok on No Sim Card Msg Popup") - try: - NoSimCardErrorMsgOK = driver.find_element_by_xpath("//*[@label='OK']") - NoSimCardErrorMsgOK.click() - except NoSuchElementException: - print("No Sim Card AlertMsg") - -def verify_APconnMobileDevice_iOS(WifiName, setup_perfectoMobile, connData): - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - - report.step_start("Verifying WifiName: " + WifiName) - - #Refresh Settings Application - openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) - - #Verifies if AP is connected to Wifi status - try: - # print("Verifying Connected Wifi Connection") - report.step_start("Verifying Connected Wifi Connection") - element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]") - Wifi_AP_Name = element.text - - except NoSuchElementException: - print("Exception: Verify Xpath - UpdateXpath") - - try: - if Wifi_AP_Name.__eq__(WifiName): - print("Wifi Name Matched Successful ") - #print("Wifi_AP_ConnName: " + "'"+ Wifi_AP_Name + "'" + " Not Equal To: " + WifiName + "....Check AP Name Syntax") - return True +@pytest.fixture(scope="session") +def upgrade_firmware(request, instantiate_firmware, get_equipment_id, check_ap_firmware_cloud, get_latest_firmware, + should_upgrade_firmware): + if get_latest_firmware != check_ap_firmware_cloud: + if request.config.getoption("--skip-upgrade"): + status = "skip-upgrade" else: - print ("-- Wifi Don't Match Match -- ") - #print("Wifi_AP_ConnName: " + "'"+ Wifi_AP_Name + "'" + " Not Equal To: " + WifiName + "....Check AP Name Syntax") - return False - except NoSuchElementException: - print("Exception Checking Wifi/AP connection NAME...") - return None + status = instantiate_firmware.upgrade_fw(equipment_id=get_equipment_id, force_upload=False, + force_upgrade=should_upgrade_firmware) + else: + if should_upgrade_firmware: + status = instantiate_firmware.upgrade_fw(equipment_id=get_equipment_id, force_upload=False, + force_upgrade=should_upgrade_firmware) + else: + status = "skip-upgrade" + yield status -def Toggle_WifiMode_iOS(setup_perfectoMobile, connData): - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - #Open Settings Application - #openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) - - report.step_start("Toggle Wifi Mode") - print("Toggle Wifi Mode..") +@pytest.fixture(scope="session") +def check_ap_firmware_cloud(instantiate_controller, get_equipment_id): + yield instantiate_controller.get_ap_firmware_old_method(equipment_id=get_equipment_id) + + +""" + +Profiles Related Fixtures + +""" + + +@pytest.fixture(scope="module") +def get_current_profile_cloud(instantiate_profile): + ssid_names = [] + for i in instantiate_profile.profile_creation_ids["ssid"]: + ssid_names.append(instantiate_profile.get_ssid_name_by_profile_id(profile_id=i)) + yield ssid_names + + +@pytest.fixture(scope="module") +def setup_profiles(request, create_profiles, instantiate_profile, get_equipment_id, get_current_profile_cloud, testbed): + test_cases = {} + mode = str(request.param[0]).lower() try: - WifiMode = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']") - #Toggle Wifi Mode - WifiMode.click() - #Verify Radio Button Mode - try: - WifiDissconnected = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']") - #self.assertEqual(WifiDissconnected.text, "Airplane Mode", "Airplane Mode Not Triggerd") - print("Wifi Radio Button Toggled to Disable") - except NoSuchElementException: - print("Wifi Radio Button Not Disabled...") - - #Set Airplane Mode Back - WifiDissconnected.click() - print("Wifi Radio Button Toggled to Enabled") - except NoSuchElementException: - print("Airplane Wifi Button not loaded...") - -def get_WifiIPAddress_iOS(setup_perfectoMobile, connData): - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - - openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile) - - try: - # print("Verifying Connected Wifi Connection") - report.step_start("Loading Wifi Page") - element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]") - element.click() - except NoSuchElementException: - print("Exception: Verify Xpath - unable to click on Wifi") - - report.step_start("Wifi Page") - WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='"+ connData["Default-SSID-perfecto-b"] + "']" - elementWifName = driver.find_element_by_xpath(WifiXpath) - #Check AP Internet Error Msg - print("Checking Internet Connection Error...") - report.step_start("Checking Internet Connection Error..") - - try: - driver.implicitly_wait(5) - WifiInternetErrMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text - except NoSuchElementException: - #Need to fail test case - driver.implicitly_wait(25) - print("Wifi Connected without any errors: " + connData["Default-SSID-perfecto-b"]) - #Fail TEST CASE - - try: - WifiInternetInfo=driver.find_element_by_xpath("(//XCUIElementTypeButton[@label='More Info'])[1]") - WifiInternetInfo.click() - except NoSuchElementException: - print("Wifi-AP Connected Successfully: " + connData["Default-SSID-perfecto-b"]) - - try: - WifiIPaddress= driver.find_element_by_xpath("(//*[@label='Router']/parent::*/XCUIElementTypeStaticText)[2]").text - return WifiIPaddress - except NoSuchElementException: - print("Wifi-AP Connected Successfully: " + connData["Default-SSID-perfecto-b"]) - - return None - -def ping_deftapps_iOS(setup_perfectoMobile, AP_IPaddress): - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - - report.step_start("Pinging deftapps....") - try: - pingHost = "//*[@value='']" - element2 = driver.find_element_by_xpath(pingHost) - element2.clear() - #element2.send_keys(AP_IPaddress) - element2.send_keys("8.8.8.8") - - #Ping Enable - report.step_start("Pingin Host") - print("Pingin Host..") - element3 = driver.find_element_by_xpath("//*[@label='go']") - element3.click() - + instantiate_profile.push_profile_old_method(equipment_id=get_equipment_id) + except: + print("failed to create AP Profile") + ap_ssh = APNOS(CONFIGURATION[testbed]['access_point'][0]) + get_current_profile_cloud.sort() + # This loop will check the VIF Config with cloud profile + for i in range(0, 18): + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_config.sort() + print(vif_config) + print(get_current_profile_cloud) + if get_current_profile_cloud == vif_config: + test_cases[mode + '_vifc'] = True + break time.sleep(10) + ap_ssh = APNOS(CONFIGURATION[testbed]['access_point'][0]) + # This loop will check the VIF Config with VIF State + for i in range(0, 18): + vif_state = list(ap_ssh.get_vif_state_ssids()) + vif_state.sort() + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_config.sort() + print(vif_config) + print(vif_state) + if vif_state == vif_config: + test_cases[mode + '_vifs'] = True + break + time.sleep(10) + yield test_cases - #handle any popup - report.step_start("Stop Ping Host") - print("Stop Ping Host..") - element4 = driver.find_element_by_xpath("//*[@label='Stop']") - element4.click() +@pytest.fixture(scope="module") +def create_profiles(request, get_security_flags, get_markers, instantiate_profile, setup_profile_data): + profile_id = {"ssid": [], "rf": None, "radius": None, "equipment_ap": None} + mode = str(request.param[0]) + test_cases = {} + if mode not in ["BRIDGE", "NAT", "VLAN"]: + print("Invalid Mode: ", mode) + yield False + instantiate_profile.delete_profile_by_name(profile_name="Equipment-AP-" + mode) + for i in setup_profile_data[mode]: + for j in setup_profile_data[mode][i]: + instantiate_profile.delete_profile_by_name( + profile_name=setup_profile_data[mode][i][j]['profile_name']) + instantiate_profile.delete_profile_by_name(profile_name="Automation-Radius-Profile-" + mode) + instantiate_profile.get_default_profiles() + # if get_markers["wifi5"]: + # # Create RF Profile + # pass + # if get_markers["wifi6"]: + # # Create RF Profile + # pass - # /* Check Packet Loss */ - report.step_start("Verifying Packet Loss..") - print("Verifying Packet Loss..") + # Create RF Profile Here + instantiate_profile.set_rf_profile() + if get_markers["radius"]: + radius_info = RADIUS_SERVER_DATA + radius_info["name"] = "Automation-Radius-Profile-" + mode try: - element5 = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='0']") - #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device") - except NoSuchElementException: - print("No Packet Loss Detected 1st Attempt") - - report.step_start("Verifying Packet Sent..") - print("Verifying Packet Sent..") - try: - packetSent = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Sent']/parent::*/XCUIElementTypeStaticText[2]").text - #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device") - except NoSuchElementException: - print("-------Exception: Packet Sent Error, check object ID") - - report.step_start("Verifying Packet Received..") - print("Verifying Packet Received..") - try: - packetReceived = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Received']/parent::*/XCUIElementTypeStaticText[2]").text - #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device") - except NoSuchElementException: - print("-------Exception: Packet Sent Error, check object ID") - - print("Total Packet Sent: " + packetSent + " Packed Recieved: " + packetReceived) - - # Also Check #Sendto: No route to host - print("Verifying No route to host Error Msg....") - report.step_start("Verifying No route to host Error Msg..") - try: - element7 = driver.find_element_by_xpath("(//XCUIElementTypeStaticText[@label='Sendto: No route to host'])[2]") - print("Packet Loss Detected on AP!!!!!: " + AP_IPaddress) - #self.assertNotEqual(element7.text, "Sendto: No route to host", "Packet Loss Exist, Please Check Device AP: " + Wifi_AP_Name) - except NoSuchElementException: - print("\nNo Packet Loss Detected on AP!!!!!: " + AP_IPaddress) - - except NoSuchElementException: - print("Exception while ping Deft App on iOS") - - return None - -def tearDown(setup_perfectoMobile): - report = setup_perfectoMobile[1] - driver = setup_perfectoMobile[0] - - report.step_start("Exception Failure Tear Down....") + instantiate_profile.create_radius_profile(radius_info=radius_info) + test_cases['radius_profile'] = True + except: + test_cases['radius_profile'] = False + for i in get_security_flags: + if get_markers[i] and i == "open": + if get_markers["twog"]: + profile_data = setup_profile_data[mode]["OPEN"]["2G"] + try: + id = instantiate_profile.create_open_ssid_profile(two4g=True, fiveg=False, + profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_2g_open_' + mode.lower()] = True + except: + test_cases['ssid_2g_open_' + mode.lower()] = False + if get_markers["fiveg"]: + profile_data = setup_profile_data[mode]["OPEN"]["5G"] + try: + id = instantiate_profile.create_open_ssid_profile(two4g=False, fiveg=True, + profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_5g_open_' + mode.lower()] = True + except: + test_cases['ssid_5g_open_' + mode.lower()] = False + if get_markers[i] and i == "wpa": + if get_markers["twog"]: + profile_data = setup_profile_data[mode]["WPA"]["2G"] + try: + id = instantiate_profile.create_wpa_ssid_profile(two4g=True, fiveg=False, profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_2g_wpa_' + mode.lower()] = True + except: + test_cases['ssid_5g_wpa_' + mode.lower()] = False + if get_markers["fiveg"]: + profile_data = setup_profile_data[mode]["WPA"]["5G"] + try: + id = instantiate_profile.create_wpa_ssid_profile(two4g=False, fiveg=True, profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_5g_wpa_' + mode.lower()] = True + except: + test_cases['ssid_5g_wpa_' + mode.lower()] = False + if get_markers[i] and i == "wpa2_personal": + if get_markers["twog"]: + profile_data = setup_profile_data[mode]["WPA2_P"]["2G"] + try: + id = instantiate_profile.create_wpa2_personal_ssid_profile(two4g=True, fiveg=False, + profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_2g_wpa2_' + mode.lower()] = True + except: + test_cases['ssid_2g_wpa2_' + mode.lower()] = False + if get_markers["fiveg"]: + profile_data = setup_profile_data[mode]["WPA2_P"]["5G"] + try: + id = instantiate_profile.create_wpa2_personal_ssid_profile(two4g=False, fiveg=True, + profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_5g_wpa2_' + mode.lower()] = True + except: + test_cases['ssid_5g_wpa2_' + mode.lower()] = False + if get_markers[i] and i == "wpa2_enterprise": + if get_markers["twog"]: + profile_data = setup_profile_data[mode]["WPA2_E"]["2G"] + try: + id = instantiate_profile.create_wpa2_enterprise_ssid_profile(two4g=True, fiveg=False, + profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_2g_eap_' + mode.lower()] = True + except: + test_cases['ssid_2g_eap_' + mode.lower()] = False + if get_markers["fiveg"]: + profile_data = setup_profile_data[mode]["WPA2_E"]["5G"] + try: + id = instantiate_profile.create_wpa2_enterprise_ssid_profile(two4g=False, fiveg=True, + profile_data=profile_data) + profile_id["ssid"].append(profile_data['ssid_name']) + test_cases['ssid_5g_eap_' + mode.lower()] = True + except: + test_cases['ssid_5g_eap_' + mode.lower()] = False + # Create Equipment AP Profile Here + profile_data = { + "profile_name": "Equipment-AP-" + mode + } try: - print(" -- Tear Down --") - report.test_stop(TestResultFactory.create_failure) - print('Report-Url: ' + report.report_url() + '\n') - driver.close() - except Exception as e: - print(" -- Exception Not Able To close --") - print (e.message) - finally: - try: - driver.quit() - except Exception as e: - print(" -- Exception Not Able To Quit --") - print (e.message) \ No newline at end of file + instantiate_profile.set_ap_profile(profile_data=profile_data) + test_cases['ap_' + mode.lower()] = True + except: + test_cases['ap_' + mode.lower()] = False + yield test_cases + + +@pytest.fixture(scope="function") +def update_ssid(request, instantiate_profile, setup_profile_data): + requested_profile = str(request.param).replace(" ", "").split(",") + profile = setup_profile_data[requested_profile[0]][requested_profile[1]][requested_profile[2]] + status = instantiate_profile.update_ssid_name(profile_name=profile["profile_name"], + new_profile_name=requested_profile[3]) + setup_profile_data[requested_profile[0]][requested_profile[1]][requested_profile[2]]["profile_name"] = \ + requested_profile[3] + setup_profile_data[requested_profile[0]][requested_profile[1]][requested_profile[2]]["ssid_name"] = \ + requested_profile[3] + time.sleep(90) + yield status diff --git a/tests/e2e/interOp/iOS/APToMobileDevice/test_APToMobileDevice.py b/tests/e2e/interOp/iOS/APToMobileDevice/test_APToMobileDevice.py index d88cba0ae..caa643ad0 100644 --- a/tests/e2e/interOp/iOS/APToMobileDevice/test_APToMobileDevice.py +++ b/tests/e2e/interOp/iOS/APToMobileDevice/test_APToMobileDevice.py @@ -9,61 +9,52 @@ from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By from appium import webdriver from selenium.common.exceptions import NoSuchElementException -from conftest import tearDown +import sys + +if 'perfecto_libs' not in sys.path: + sys.path.append(f'../libs/perfecto_libs') + +from iOS_lib import closeApp, openApp, verifyUploadDownloadSpeediOS, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown + +@pytest.mark.APToMobileDevice +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles, create_profiles', + [(["NAT"], ["NAT"])], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.usefixtures("create_profiles") class TestVerifyAPToMobileDevice(object): - @pytest.mark.sanity - #@pytest.mark.wpa2_personal - #@pytest.mark.VerifyApTo_MobileDeviceWeb - def test_VerifyApTo_MobileDeviceWeb(self, get_APToMobileDevice_data, setup_perfectoMobileWeb): + def test_VerifyApTo_MobileDeviceWeb(self, setup_profile_data, get_APToMobileDevice_data, setup_perfectoMobileWeb): - try: - report = setup_perfectoMobileWeb[1] - driver = setup_perfectoMobileWeb[0] + profile_data = setup_profile_data["NAT"]["WPA"]["5G"] + ssidName = profile_data["ssid_name"] + security_key = profile_data["security_key"] - try: - report.step_start("Google Home Page") - driver.get(get_APToMobileDevice_data["webURL"]) - elementFindTxt = driver.find_element_by_xpath(get_APToMobileDevice_data["lblSearch"]) - elementFindTxt.send_keys("Internet Speed Test") + profile_data = setup_profile_data["NAT"]["WPA"]["2G"] + ssidPassword = profile_data["ssid_name"] + security_key = profile_data["security_key"] + + print ("SSID_NAME: " + ssidName) + print ("SSID_PASS: " + ssidPassword) - try: - elelSearch = driver.find_element_by_xpath(get_APToMobileDevice_data["elelSearch"]) - elelSearch.click() - except NoSuchElementException: - print("Enter Not Active...") + report = setup_perfectoMobileWeb[1] + driver = setup_perfectoMobileWeb[0] + connData = get_APToMobileDevice_data - report.step_start("Verify Run Button") - driver.find_element_by_xpath(get_APToMobileDevice_data["BtnRunSpeedTest"]).click() + #Set Wifi/AP Mode + set_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobileWeb, connData) - #get_APToMobileDevice_data["BtnRunSpeedTest"] - #get_APToMobileDevice_data["BtnRunSpeedTest"] + #Verify Upload download Speed from device Selection + verifyUploadDownloadSpeediOS(setup_perfectoMobileWeb, connData) - #Get upload/Download Speed - try: - report.step_start("Get upload/Download Speed") - time.sleep(60) - downloadMbps = driver.find_element_by_xpath(get_APToMobileDevice_data["downloadMbps"]) - downloadSpeed = downloadMbps.text - print("Download: " + downloadSpeed + " Mbps") - - UploadMbps = driver.find_element_by_xpath(get_APToMobileDevice_data["UploadMbps"]) - uploadSpeed = UploadMbps.text - print("Upload: " + uploadSpeed + " Mbps") - - print("Access Point Verification Completed Successfully") - - except NoSuchElementException: - print("Access Point Verification NOT Completed, checking Connection....") - - currentResult = True - - assert currentResult - except Exception as e: - print (e.message) - except exception as e: - print (e.message) - tearDown(setup_perfectoMobileWeb) + + \ No newline at end of file diff --git a/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py b/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py index 02a228408..535fa16b3 100644 --- a/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py +++ b/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py @@ -1,3 +1,4 @@ +from logging import exception import unittest import warnings from perfecto.test import TestResultFactory @@ -8,44 +9,52 @@ from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By from appium import webdriver from selenium.common.exceptions import NoSuchElementException -from conftest import closeApp, openApp, ping_deftapps_iOS, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, get_WifiIPAddress_iOS -#from conftest import +import sys + +if 'perfecto_libs' not in sys.path: + sys.path.append(f'../libs/perfecto_libs') + +from iOS_lib import closeApp, openApp, get_WifiIPAddress_iOS, ping_deftapps_iOS, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown + +@pytest.mark.TestPassPointConnectivetyIOS +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles, create_profiles', + [(["NAT"], ["NAT"])], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.usefixtures("create_profiles") class TestPassPointConnectivetyIOS(object): - #@pytest.mark.sanity - #@pytest.mark.wpa2_personal - @pytest.mark.TestPassPointConnectivetyIOS - def test_AccessPointConnection(self, get_AccessPointConn_data, setup_perfectoMobile_iOS): + def test_AccessPointConnection(self, setup_profile_data, get_AccessPointConn_data, setup_perfectoMobile_iOS): - try: - report = setup_perfectoMobile_iOS[1] - driver = setup_perfectoMobile_iOS[0] - connData = get_AccessPointConn_data + profile_data = setup_profile_data["NAT"]["WPA"]["5G"] + ssidName = profile_data["ssid_name"] + security_key = profile_data["security_key"] - #Set Wifi/AP Mode - set_APconnMobileDevice_iOS(connData["Default-SSID-perfecto-b"], setup_perfectoMobile_iOS, connData) + profile_data = setup_profile_data["NAT"]["WPA"]["2G"] + ssidPassword = profile_data["ssid_name"] + security_key = profile_data["security_key"] + + print ("SSID_NAME: " + ssidName) + print ("SSID_PASS: " + ssidPassword) - #Need An ip To ping - wifi_ip = get_WifiIPAddress_iOS(setup_perfectoMobile_iOS, connData) + report = setup_perfectoMobile_iOS[1] + driver = setup_perfectoMobile_iOS[0] + connData = get_AccessPointConn_data - #Open Ping Application - openApp(connData["bundleId-iOS-Ping"], setup_perfectoMobile_iOS) + #Set Wifi/AP Mode + set_APconnMobileDevice_iOS(ssidName, setup_perfectoMobile_iOS, connData) - ping_deftapps_iOS(setup_perfectoMobile_iOS, wifi_ip) + #Need An ip To ping + wifi_ip = get_WifiIPAddress_iOS(setup_perfectoMobile_iOS, connData) + #Open Ping Application + openApp(connData["bundleId-iOS-Ping"], setup_perfectoMobile_iOS) - - #Toggle AirplaneMode - #Toggle_AirplaneMode_iOS(setup_perfectoMobile_iOS, get_ToggleAirplaneMode_data) - - #Verify AP After AirplaneMode - #assert verify_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobile_iOS, get_ToggleAirplaneMode_data) - - - except NoSuchElementException as ex: - self.currentResult = False - #report.test_stop(TestResultFactory.create_failure("NoSuchElementException", ex)) - print (ex.message) - self.currentResult = True - \ No newline at end of file + ping_deftapps_iOS(setup_perfectoMobile_iOS, wifi_ip) diff --git a/tests/e2e/interOp/iOS/AirplaneMode/test_ToggleAirplaneMode.py b/tests/e2e/interOp/iOS/AirplaneMode/test_ToggleAirplaneMode.py index 6996ada00..67fad371f 100644 --- a/tests/e2e/interOp/iOS/AirplaneMode/test_ToggleAirplaneMode.py +++ b/tests/e2e/interOp/iOS/AirplaneMode/test_ToggleAirplaneMode.py @@ -9,33 +9,53 @@ from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By from appium import webdriver from selenium.common.exceptions import NoSuchElementException -from conftest import closeApp, openApp, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, tearDown -#from conftest import +import sys + +if 'perfecto_libs' not in sys.path: + sys.path.append(f'../libs/perfecto_libs') + +from iOS_lib import closeApp, openApp, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown + +@pytest.mark.ToggleAirplaneMode +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles, create_profiles', + [(["NAT"], ["NAT"])], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.usefixtures("create_profiles") class TestToggleAirplaneMode(object): - #@pytest.mark.sanity - #@pytest.mark.wpa2_personal - #@pytest.mark.VerifyApTo_MobileDeviceWeb - #@pytest.mark.parametrize('bundleID-iOS', [net.techet.netanalyzerlite]) - def test_ToogleAirplaneMode(self, get_ToggleAirplaneMode_data, setup_perfectoMobile_iOS): + def test_ToogleAirplaneMode(self, setup_profile_data, get_ToggleAirplaneMode_data, setup_perfectoMobile_iOS): - try: - report = setup_perfectoMobile_iOS[1] - driver = setup_perfectoMobile_iOS[0] - connData = get_ToggleAirplaneMode_data + profile_data = setup_profile_data["NAT"]["WPA"]["5G"] + ssidName = profile_data["ssid_name"] + security_key = profile_data["security_key"] - #Set Wifi/AP Mode - set_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobile_iOS, get_ToggleAirplaneMode_data) + profile_data = setup_profile_data["NAT"]["WPA"]["2G"] + ssidPassword = profile_data["ssid_name"] + security_key = profile_data["security_key"] + + print ("SSID_NAME: " + ssidName) + print ("SSID_PASS: " + ssidPassword) - #Toggle AirplaneMode - Toggle_AirplaneMode_iOS(setup_perfectoMobile_iOS, get_ToggleAirplaneMode_data) - - #Verify AP After AirplaneMode - assert verify_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobile_iOS, get_ToggleAirplaneMode_data) + report = setup_perfectoMobile_iOS[1] + driver = setup_perfectoMobile_iOS[0] + connData = get_ToggleAirplaneMode_data + + #Set Wifi/AP Mode + set_APconnMobileDevice_iOS(ssidName, setup_perfectoMobile_iOS, connData) + + #Toggle AirplaneMode + Toggle_AirplaneMode_iOS(setup_perfectoMobile_iOS, connData) + + #Verify AP After AirplaneMode + assert verify_APconnMobileDevice_iOS(ssidName, setup_perfectoMobile_iOS, connData) - - except exception as e: - print (e.message) - tearDown(setup_perfectoMobile_iOS) + \ No newline at end of file diff --git a/tests/e2e/interOp/iOS/PassPoint/test_PassPointConnection.py b/tests/e2e/interOp/iOS/PassPoint/test_PassPointConnection.py index a0e0dfea3..f08cad899 100644 --- a/tests/e2e/interOp/iOS/PassPoint/test_PassPointConnection.py +++ b/tests/e2e/interOp/iOS/PassPoint/test_PassPointConnection.py @@ -9,36 +9,54 @@ from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By from appium import webdriver from selenium.common.exceptions import NoSuchElementException -from urllib3 import exceptions -from conftest import closeApp, openApp, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, tearDown -#from conftest import +import sys + +from urllib3 import exceptions + +if 'perfecto_libs' not in sys.path: + sys.path.append(f'../libs/perfecto_libs') + +from iOS_lib import closeApp, openApp, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown + +@pytest.mark.PassPointConnection +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles, create_profiles', + [(["NAT"], ["NAT"])], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.usefixtures("create_profiles") class TestPassPointConnection(object): - #@pytest.mark.sanity - #@pytest.mark.wpa2_personal - #@pytest.mark.VerifyApTo_MobileDeviceWeb - #@pytest.mark.parametrize('bundleID-iOS', [net.techet.netanalyzerlite]) - def test_PassPointConnection_Mobile(self, setup_perfectoMobile_iOS, get_PassPointConniOS_data): + def test_PassPointConnection_Mobile(self,setup_profile_data, setup_perfectoMobile_iOS, get_PassPointConniOS_data): - #bundleId-iOS=net.techet.netanalyzerlite - #Wifi-5G or 2G Verification - try: - report = setup_perfectoMobile_iOS[1] - driver = setup_perfectoMobile_iOS[0] - connData = get_PassPointConniOS_data + profile_data = setup_profile_data["NAT"]["WPA"]["5G"] + ssidName = profile_data["ssid_name"] + security_key = profile_data["security_key"] - #Set Wifi Access Mode to #Default-SSID-5gl-perfecto-b/#Default-SSID-2gl-perfecto-b - set_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobile_iOS, get_PassPointConniOS_data) + profile_data = setup_profile_data["NAT"]["WPA"]["2G"] + ssidPassword = profile_data["ssid_name"] + security_key = profile_data["security_key"] + + print ("SSID_NAME: " + ssidName) + print ("SSID_PASS: " + ssidPassword) - #Toggle Airplane Mode and Ensure Wifi Connection. - Toggle_AirplaneMode_iOS(setup_perfectoMobile_iOS, get_PassPointConniOS_data) + report = setup_perfectoMobile_iOS[1] + driver = setup_perfectoMobile_iOS[0] + connData = get_PassPointConniOS_data - #Close Settings App - closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile_iOS) + #Set Wifi Access Mode to #Default-SSID-5gl-perfecto-b/#Default-SSID-2gl-perfecto-b + set_APconnMobileDevice_iOS(ssidName, setup_perfectoMobile_iOS, connData) - except exceptions as e: - print (e.message) - tearDown(setup_perfectoMobile_iOS) - - #except exception as ex \ No newline at end of file + #Toggle Airplane Mode and Ensure Wifi Connection. + Toggle_AirplaneMode_iOS(setup_perfectoMobile_iOS, connData) + + #Close Settings App + closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile_iOS) + + \ No newline at end of file diff --git a/tests/e2e/interOp/iOS/WifiMode/test_ToggleWifiMode.py b/tests/e2e/interOp/iOS/WifiMode/test_ToggleWifiMode.py index 2195494ef..1a09c7a6c 100644 --- a/tests/e2e/interOp/iOS/WifiMode/test_ToggleWifiMode.py +++ b/tests/e2e/interOp/iOS/WifiMode/test_ToggleWifiMode.py @@ -9,35 +9,52 @@ from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By from appium import webdriver from selenium.common.exceptions import NoSuchElementException -from conftest import closeApp, openApp, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown -#from conftest import -class TestToggleAirplaneMode(object): +import sys - #@pytest.mark.sanity - #@pytest.mark.wpa2_personal - #@pytest.mark.VerifyApTo_MobileDeviceWeb - #@pytest.mark.parametrize('bundleID-iOS', [net.techet.netanalyzerlite]) - def test_ToogleWifiMode(self, get_ToggleWifiMode_data, setup_perfectoMobile_iOS): - - try: - report = setup_perfectoMobile_iOS[1] - driver = setup_perfectoMobile_iOS[0] - connData = get_ToggleWifiMode_data +if 'perfecto_libs' not in sys.path: + sys.path.append(f'../libs/perfecto_libs') - #Set Wifi/AP Mode - set_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobile_iOS, get_ToggleWifiMode_data) +from iOS_lib import closeApp, openApp, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown - #Toggle WifiMode - Toggle_WifiMode_iOS(setup_perfectoMobile_iOS, get_ToggleWifiMode_data) - - #Verify AP After AirplaneMode - value = verify_APconnMobileDevice_iOS("Default-SSID-5gl-perfecto-b", setup_perfectoMobile_iOS, connData) - assert value - +@pytest.mark.ToggleWifiMode +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles, create_profiles', + [(["NAT"], ["NAT"])], + indirect=True, + scope="class" +) - except exception as e: - print (e.message) - tearDown(setup_perfectoMobile_iOS) - - \ No newline at end of file +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.usefixtures("create_profiles") +class TestToggleWifiMode(object): + + def test_ToogleWifiMode(self, setup_profile_data, get_ToggleWifiMode_data, setup_perfectoMobile_iOS): + + profile_data = setup_profile_data["NAT"]["WPA"]["5G"] + ssidName = profile_data["ssid_name"] + security_key = profile_data["security_key"] + + profile_data = setup_profile_data["NAT"]["WPA"]["2G"] + ssidPassword = profile_data["ssid_name"] + security_key = profile_data["security_key"] + + print ("SSID_NAME: " + ssidName) + print ("SSID_PASS: " + ssidPassword) + + report = setup_perfectoMobile_iOS[1] + driver = setup_perfectoMobile_iOS[0] + connData = get_ToggleWifiMode_data + + #Set Wifi/AP Mode + set_APconnMobileDevice_iOS(ssidName, setup_perfectoMobile_iOS, connData) + + #Toggle WifiMode + Toggle_WifiMode_iOS(setup_perfectoMobile_iOS, connData) + + #Verify AP After AirplaneMode + value = verify_APconnMobileDevice_iOS(ssidName, setup_perfectoMobile_iOS, connData) + assert value + \ No newline at end of file diff --git a/tests/e2e/interOp/pytest.ini b/tests/e2e/interOp/pytest.ini deleted file mode 100644 index c74750141..000000000 --- a/tests/e2e/interOp/pytest.ini +++ /dev/null @@ -1,50 +0,0 @@ -[pytest] -addopts= --junitxml=test_everything.xml - -# Perfecto Cloud parameters -perfectoURL=tip -securityToken=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw - -# Perfecto CI Report -projectName = TIP-Project -projectVersion = 1.0 -jobName = Tip-CI-Test -jobNumber = 1 -reportTags = TestTag - -# iOS Device Capabilities -platformName-iOS=iOS -#manufacturer-iOS=Apple -model-iOS=iPhone-XR -bundleId-iOS=com.apple.Preferences -#default iOS settings app -bundleId-iOS-Settings=com.apple.Preferences -bundleId-iOS-Ping=com.deftapps.ping -browserType-iOS=safari - -# Android Device Capabilities -platformName-android=Android -model-android=Android.* -appPackage-android=com.android.settings - -wifi-SSID-5gl-Pwd=12345678 -wifi-SSID-2g-Pwd=12345678 - -Default-SSID-5gl-perfecto-b=Default-SSID-5gl-perfecto-b -Default-SSID-2g-perfecto-b=Default-SSID-2g-perfecto-b - -Default-SSID-perfecto-b=Default-SSID-5gl-perfecto-b -# iOS Device Parameters -#testbed-name=nola-ext-03 -##equipment-model=ecw5410 -#sdk-user-id=support@example.com -#sdk-user-password=support - -# Android Device Parameters -#t#estrail-base-url=telecominfraproject.testrail.com -#t#estrail-project=opsfleet-wlan -#testrail-user-id=gleb@opsfleet.com -#testrail-user-password=use_command_line_to_pass_this - - - diff --git a/tests/pytest.ini b/tests/pytest.ini index 18fee8850..d36c0b383 100644 --- a/tests/pytest.ini +++ b/tests/pytest.ini @@ -31,3 +31,38 @@ filterwarnings = markers = sanity: Run the sanity for Client Connectivity test + +#--- Perfecto parameters ----- +perfectoURL=tip +securityToken=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw + +# Perfecto CI Report +projectName = TIP-Project +projectVersion = 1.0 +jobName = Tip-CI-Test +jobNumber = 1 +reportTags = TestTag + +# iOS Device Capabilities +platformName-iOS=iOS +#manufacturer-iOS=Apple +model-iOS=iPhone-XR +bundleId-iOS=com.apple.Preferences +#default iOS settings app +bundleId-iOS-Settings=com.apple.Preferences +bundleId-iOS-Ping=com.deftapps.ping +browserType-iOS=safari + +# Android Device Capabilities +platformName-android=Android +model-android=Android.* +appPackage-android=com.android.settings + +wifi-SSID-5gl-Pwd=12345678 +wifi-SSID-2g-Pwd=12345678 + +Default-SSID-5gl-perfecto-b=Default-SSID-5gl-perfecto-b +Default-SSID-2g-perfecto-b=Default-SSID-2g-perfecto-b + +Default-SSID-perfecto-b=Default-SSID-5gl-perfecto-b +#--- Perfecto parameters ----- \ No newline at end of file