ngcp-csc-ui/t/selenium/testrun.py

2076 lines
104 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import unittest
import os
import traceback
from multiprocessing import Value
import nose2
import time
import functions.Collections as Collections
import functions.Functions as Functions
import selenium.common.exceptions
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
execs = Value('i', 0)
customers = {}
filename = 0
def preparation():
global customers
driver = Functions.create_driver()
Collections.login_panel(driver)
for i in range(0, int(os.environ['THREADS'])):
customers[Collections.create_customer(
driver)] = Collections.create_domain(driver)
del i
for customer in customers.keys():
Collections.create_subscriber(driver, customer, customers[customer])
driver.quit()
def cleanup():
global customers
driver = Functions.create_driver()
Collections.login_panel(driver)
for customer in customers:
Collections.delete_customer(driver, customer)
Collections.delete_domain(driver, customers[customer])
driver.quit()
class testrun(unittest.TestCase):
def setUp(self):
global execs
global customers
self.driver = Functions.create_driver()
self.longMessage = True
execs.value += 1
key = list(customers.keys())[execs.value % int(os.environ['THREADS'])]
self.domainname = customers[key]
def test_login_page(self):
global customers
global filename
filename = "test_login_page.png"
driver = self.driver
print("Try to log in with invalid credentials...", end="")
driver.get(os.environ['CATALYST_SERVER'])
driver.find_element_by_xpath(
'//*[@id="csc-login-form"]//div//input[@type="text"]'
).send_keys('invalid')
driver.find_element_by_xpath(
'//*[@id="csc-login-form"]//div//input[@type="password"]'
).send_keys('user')
driver.find_element_by_xpath(
'//*[@id="csc-login"]//div//button').click()
self.assertTrue(len(driver.find_elements_by_xpath(
'//div[contains(@class, "q-alert-container")]')) > 0,
"Error Message was not shown")
print("OK")
print("Try to log in with valid credentials...", end="")
Functions.fill_element(
driver, '//*[@id="csc-login-form"]//div//input[@type='
'"text"]', "testuser@" + self.domainname)
Functions.fill_element(
driver, '//*[@id="csc-login-form"]//div//input[@type='
'"password"]', "testpasswd")
driver.find_element_by_xpath(
'//*[@id="csc-login"]//div//button').click()
self.assertEqual("testuser", driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]//div//span[contains(text(), '
'"testuser")]').text, "Login failed")
print("OK")
print("Try to log out...", end="")
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/div[1]/button').click()
driver.find_element_by_xpath(
'//div[contains(text(), "Logout")]').click()
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
print(
"Change login page language to all avalible languages...", end="")
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[2]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="csc-login"]//div[@class="q-card-title"][contains'
'(text(), "Authentification de labonné")]')) > 0,
'Language was not changed to France')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[3]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="csc-login"]//div[@class="q-card-title"][contains'
'(text(), "Accedi come utente")]')) > 0,
'Language was not changed to Italian')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[4]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="csc-login"]//div[@class="q-card-title"][contains'
'(text(), "Iniciar sesión de suscriptor")]')) > 0,
'Language was not changed to Spanish')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[5]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="csc-login"]//div[@class="q-card-title"][contains'
'(text(), "Subscriber Log-in")]')) > 0,
'Language was not changed to German')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[1]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="csc-login"]//div[@class="q-card-title"][contains'
'(text(), "Subscriber Sign In")]')) > 0,
'Language was not changed back to English')
print("OK")
filename = 0
def test_call_blocking(self):
global customers
global filename
filename = "test_call_blocking.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
print("OK")
print("Go to 'Call Blocking' page...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Blocking")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Blocking")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Incoming")]')))
print("OK")
print("Go to 'Incoming'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Incoming")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]')))
print("OK")
print("Enable 'All anonymous incoming calls are blocked'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="q-item-label"]'
'[contains(text(), "Only incoming calls")]')))
print("OK")
print(
"Enable 'Only incoming calls from listed numbers are allowed'...",
end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-label"]'
'[contains(text(), "Only incoming calls")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div/button[contains(@class, '
'"q-btn-flat")]/span[contains(@class, "q-btn-inner")]')))
print("OK")
print("Add a number to incoming call blocks...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/button[contains(@class, "q-btn-flat")]'
'/span[contains(@class, "q-btn-inner")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/input[@type="text"]').send_keys('12345')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="csc-form-actions row justify-center'
'"]/button[2]').click()
print("OK")
print("Check if all settings were properly changed...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]/div[contains(@class, "active")]')) > 0,
"Option 'All anonymous incoming calls are blocked' was not "
"enabled")
self.assertEqual("12345", driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "csc-blocked-number '
'csc-list-item ")]//div[@class="q-item-label"]').text,
"Number is not correct")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]')))
print("OK")
print("Edit recently added number...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]').click()
driver.find_element_by_xpath(
'//div[@class="csc-item-buttons-menu q-list no-border"]'
'/div[1]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div/input[@class="col q-input-target'
' text-left"]', '54321')
elem = driver.find_element_by_xpath(
'//*[@id="q-app"]//div//i[text()="check"]')
driver.execute_script("arguments[0].click();", elem)
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element((
By.XPATH, '//*[@id="q-app"]//div[@class="csc-spinner"]/svg')))
driver.implicitly_wait(10)
print("OK")
print("Check if number was changed properly...", end="")
self.assertEqual("54321", driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "csc-blocked-number '
'csc-list-item ")]//div[@class="q-item-label"]').text,
"Number is not correct")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]')))
print("OK")
print("Delete number...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]').click()
driver.find_element_by_xpath(
'//div[@class="csc-item-buttons-menu q-list no-border"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "csc-dialog-actions")]/button[contains'
'(@class, "text-negative")]').click()
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@class="csc-list-message"]'
'[contains(text(), "No numbers found")]')) > 0,
"Number has not been deleted")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Outgoing")]')))
print("OK")
print("Go to 'Outgoing'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Outgoing")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="q-item-label"]'
'[contains(text(), "Only outgoing calls")]')))
print("OK")
print(
"Enable 'Only outgoing calls from listed numbers are allowed'...",
end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-label"]'
'[contains(text(), "Only outgoing calls")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div/button[contains(@class, '
'"q-btn-flat")]/span[contains(@class, "q-btn-inner")]')))
print("OK")
print("Add a number to outgoing call blocks...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/button[contains(@class, "q-btn-flat")]'
'/span[contains(@class, "q-btn-inner")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/input[@type="text"]').send_keys('12345')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="csc-form-actions row justify-center'
'"]/button[2]').click()
print("OK")
print("Check if all settings were properly changed...", end="")
self.assertEqual("12345", driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "csc-blocked-number '
'csc-list-item ")]//div[@class="q-item-label"]').text,
"Number is not correct")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]')))
print("OK")
print("Edit recently added number...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]').click()
driver.find_element_by_xpath(
'//div[@class="csc-item-buttons-menu q-list no-border"]'
'/div[1]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div/input[@class="col q-input-target'
' text-left"]', '54321')
elem = driver.find_element_by_xpath(
'//*[@id="q-app"]//div//i[text()="check"]')
driver.execute_script("arguments[0].click();", elem)
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//*[@id="q-app"]//div[@class="csc-spinner"]/svg')))
driver.implicitly_wait(10)
print("OK")
print("Check if number was changed properly...", end="")
self.assertEqual("54321", driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "csc-blocked-number '
'csc-list-item ")]//div[@class="q-item-label"]').text,
"Number is not correct")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]')))
print("OK")
print("Delete number...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "q-item-side")]/'
'div[@class="q-item-"]/button[contains(@class, "q-btn")]').click()
driver.find_element_by_xpath(
'//div[@class="csc-item-buttons-menu q-list no-border"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "csc-dialog-actions")]/button[contains'
'(@class, "text-negative")]').click()
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@class="csc-list-message"]'
'[contains(text(), "No numbers found")]')) > 0,
"Number has not been deleted")
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Privacy")]/div[@class="q-inner-loading '
'animate-fade absolute-full column flex-center"]')))
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Privacy")]/div[@class="q-inner-loading '
'animate-fade absolute-full column flex-center"]')))
driver.implicitly_wait(10)
print("OK")
print("Go to 'Privacy'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Privacy")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]')))
print("OK")
print("Enable 'Hide number to callee'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]')))
print("OK")
print("Check if 'Hide number to callee' was enabled...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "q-toggle")]//span'
'[contains(text(), "Your number is hidden")]')) > 0,
"Option 'hide number' was not enabled")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_call_forward_after_hours(self):
global customers
global filename
filename = "test_call_forward_after_hours.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
print("OK")
print("Go to 'Call Forward' page...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Forward")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Forward")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "After Hours")]')))
print("OK")
print("Go to 'After Hours'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "After Hours")]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="q-alert-actions row '
'items-center"]/span[contains(text(), "Add After Hours")]')))
print("OK")
print("Add After Hours time set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-alert-actions row items-center"]'
'/span[contains(text(), "Add After Hours")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="csc-add-time-form q-item q-item-'
'division relative-position"]//div[@class="q-item- row no-wrap"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-clock-circle")]'
'//div[contains(@class, "q-datetime-clock-pos-8")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-controls")]'
'/button[3]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="csc-add-time-form q-item '
'q-item-division relative-position"]//div[@class="q-item- row '
'no-wrap"]/div[3]')))
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="csc-add-time-form q-item q-item-'
'division relative-position"]//div[@class="q-item- row no-wrap"]'
'/div[3]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-clock-circle")]'
'//div[contains(@class, "q-datetime-clock-pos-16")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-controls")]'
'/button[3]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-"]/button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add number to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "100")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add number to 'When im busy'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "200")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im busy'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Enable 'Ring own phone'...", end="")
Functions.click_js(
driver,
'//*[@id="q-app"]//div[@class="q-field-content col-xs-12 col-sm"]'
'/div[@tabindex="0"]/div[@class="q-option-inner '
'relative-position"]')
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if all values are correct...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, "q-toggle"'
')]/div[@class="q-option-inner relative-position '
'active"]')) > 0, "Option 'Ring own Phone' was not "
"enabled")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'first ring own phone for 15 secs', "Option 'first ring ' "
"own Phone for 15 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'then ring testdestination for 100 secs', "Option "
"'Ring testdestination for 100 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im online' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfb"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring testdestination for 200 secs', "Option "
"'Ring testdestination for 200 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfb"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im busy' is missing")
print("OK")
print("Add new source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-tab column flex-center '
'relative-position icon-and-label"]//span[contains'
'(text(), "Add new")]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/'
'div[1]//input', 'firsttestsourceset')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/'
'div[2]//input', 'firsttestsource')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/div'
'[@tabindex=0]').click()
driver.find_element_by_xpath(
'/html/body//div[@class="q-popover animate-scale column no-wrap"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-"]/button').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Go to new source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/span[contains'
'(text(), "firsttestsourceset")]').click()
print("OK")
print("Check if source in source set is correct...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "firsttestsource")]'
)) > 0, "Source was not found")
print("OK")
print("Add a new source...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="sources-section"]/button').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="add-source-form"]//input',
'newtestsource')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-source-form"]/button[2]'
).click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if second source is created properly...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]'
)) > 0, "Second Source was not found")
print("OK")
print("Delete second source...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]/../'
'div[2]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body//div[@class="modal-buttons row"]/'
'button[2]')))
driver.find_element_by_xpath(
'/html/body//div[@class="modal-buttons row"]/button[2]').click()
print("OK")
print("Check if second source was deleted...", end="")
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
self.assertFalse(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]'),
"Second Source was not deleted")
print("OK")
print(
"Try to delete first source and check if error message appears...",
end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "firsttestsource")]/../'
'div[2]').click()
self.assertTrue(len(driver.find_elements_by_xpath(
'/html/body//div[@class="q-alert row no-wrap shadow-2 '
'bg-negative"]')) > 0, "Error Message 'Removing the "
"last source entry is not allowed' did not appear")
print("OK")
print("Add number to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "100")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if everyting was added correctly...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'do not ring own phone', "Option 'do not ring own phone' "
"is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring testdestination for 100 secs', "Option "
"'Ring testdestination for 100 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im online' is missing")
print("OK")
print("Swap entries in 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]/div[@class="q-item'
'-side q-item-side-right q-item-section dest-btns cursor-pointer"]'
).click()
driver.find_element_by_xpath(
'/html/body/div[@class="q-popover animate-scale"]/div/div[1]'
).click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if entries got swapped...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'do not ring own phone', "Option 'do not ring own phone' "
"is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring Voicebox', "Options did not get swapped"
)
print("OK")
print("Delete second source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="sources-section"]/div/button'
'[@align="right"]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body//div[@class="modal-buttons row"]/'
'button[2]')))
driver.find_element_by_xpath(
'/html/body//div[@class="modal-buttons row"]/button[2]').click()
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
driver.implicitly_wait(10)
print("OK")
print("Check if second source set was deleted...", end="")
self.assertFalse(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div/span[contains'
'(text(), "firsttestsourceset")]'),
"Second Source Set was not deleted")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_call_forward_always(self):
global customers
global filename
filename = "test_call_forward_always.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
print("OK")
print("Go to 'Call Forward' page...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Forward")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Forward")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Always")]')))
print("OK")
print("Go to 'Always'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Always")]').click()
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
driver.implicitly_wait(10)
print("OK")
print("Add number to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "100")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add number to 'When im busy'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "200")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im busy'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Enable 'Ring own phone'...", end="")
Functions.click_js(
driver,
'//*[@id="q-app"]//div[@class="q-field-content col-xs-12 col-sm"]'
'/div[@tabindex="0"]/div[@class="q-option-inner '
'relative-position"]')
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if all values are correct...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, "q-toggle"'
')]/div[@class="q-option-inner relative-position '
'active"]')) > 0, "Option 'Ring own Phone' was not "
"enabled")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'first ring own phone for 15 secs', "Option 'first ring ' "
"own Phone for 15 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'then ring testdestination for 100 secs', "Option "
"'Ring testdestination for 100 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im online' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfb"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring testdestination for 200 secs', "Option "
"'Ring testdestination for 200 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfb"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im busy' is missing")
print("OK")
print("Add new source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-tab column flex-center '
'relative-position icon-and-label"]//span[contains'
'(text(), "Add new")]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/'
'div[1]//input', 'secondtestsourceset')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/'
'div[2]//input', 'secondtestsource')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/div'
'[@tabindex=0]').click()
driver.find_element_by_xpath(
'/html/body//div[@class="q-popover animate-scale column no-wrap"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-"]/button').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Go to new source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/span[contains'
'(text(), "secondtestsourceset")]').click()
print("OK")
print("Check if source in source set is correct...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "secondtestsource")]'
)) > 0, "Source was not found")
print("OK")
print("Add a new source...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="sources-section"]/button').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="add-source-form"]//input',
'newtestsource')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-source-form"]/button[2]'
).click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if second source is created properly...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]'
)) > 0, "Second Source was not found")
print("OK")
print("Delete second source...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]/../'
'div[2]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body//div[@class="modal-buttons row"]/'
'button[2]')))
driver.find_element_by_xpath(
'/html/body//div[@class="modal-buttons row"]/button[2]').click()
print("OK")
print("Check if second source was deleted...", end="")
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
self.assertFalse(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]'),
"Second Source was not deleted")
print("OK")
print(
"Try to delete first source and check if error message appears...",
end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "secondtestsource")]/../'
'div[2]').click()
self.assertTrue(len(driver.find_elements_by_xpath(
'/html/body//div[@class="q-alert row no-wrap shadow-2 '
'bg-negative"]')) > 0, "Error Message 'Removing the "
"last source entry is not allowed' did not appear")
print("OK")
print("Add number to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "100")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if everyting was added correctly...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'do not ring own phone', "Option 'do not ring own phone' "
"is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring testdestination for 100 secs', "Option "
"'Ring testdestination for 100 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im online' is missing")
print("OK")
print("Swap entries in 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]/div[@class="q-item'
'-side q-item-side-right q-item-section dest-btns cursor-pointer"]'
).click()
driver.find_element_by_xpath(
'/html/body/div[@class="q-popover animate-scale"]/div/div[1]'
).click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if entries got swapped...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'do not ring own phone', "Option 'do not ring own phone' "
"is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring Voicebox', "Options did not get swapped"
)
print("OK")
print("Delete second source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="sources-section"]/div/button'
'[@align="right"]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body//div[@class="modal-buttons row"]/'
'button[2]')))
driver.find_element_by_xpath(
'/html/body//div[@class="modal-buttons row"]/button[2]').click()
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
driver.implicitly_wait(10)
print("OK")
print("Check if second source set was deleted...", end="")
self.assertFalse(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div/span[contains'
'(text(), "secondtestsourceset")]'),
"Second Source Set was not deleted")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_call_forward_company_hours(self):
global customers
global filename
filename = "test_call_forward_company_hours.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
print("OK")
print("Go to 'Call Forward' page...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Forward")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Call Forward")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Company Hours")]')))
print("OK")
print("Go to 'Company Hours'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Company Hours")]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="q-alert-actions row '
'items-center"]/span[contains(text(), "Add Company Hours")]')))
print("OK")
print("Add Company Hours time set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-alert-actions row items-center"]'
'/span[contains(text(), "Add Company Hours")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="csc-add-time-form q-item q-item-'
'division relative-position"]//div[@class="q-item- row no-wrap"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-clock-circle")]'
'//div[contains(@class, "q-datetime-clock-pos-8")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-controls")]'
'/button[3]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="csc-add-time-form q-item '
'q-item-division relative-position"]//div[@class="q-item- row '
'no-wrap"]/div[3]')))
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="csc-add-time-form q-item q-item-'
'division relative-position"]//div[@class="q-item- row no-wrap"]'
'/div[3]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-clock-circle")]'
'//div[contains(@class, "q-datetime-clock-pos-16")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-controls")]'
'/button[3]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-"]/button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add number to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "100")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add number to 'When im busy'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "200")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im busy'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[2]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Enable 'Ring own phone'...", end="")
Functions.click_js(
driver,
'//*[@id="q-app"]//div[@class="q-field-content col-xs-12 col-sm"]'
'/div[@tabindex="0"]/div[@class="q-option-inner '
'relative-position"]')
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if all values are correct...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, "q-toggle"'
')]/div[@class="q-option-inner relative-position '
'active"]')) > 0, "Option 'Ring own Phone' was not "
"enabled")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'first ring own phone for 15 secs', "Option 'first ring ' "
"own Phone for 15 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'then ring testdestination for 100 secs', "Option "
"'Ring testdestination for 100 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im online' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfb"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring testdestination for 200 secs', "Option "
"'Ring testdestination for 200 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfb"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im busy' is missing")
print("OK")
print("Add new source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-tab column flex-center '
'relative-position icon-and-label"]//span[contains'
'(text(), "Add new")]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/'
'div[1]//input', 'thirdtestsourceset')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/'
'div[2]//input', 'thirdtestsource')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item- row no-wrap"]/div'
'[@tabindex=0]').click()
driver.find_element_by_xpath(
'/html/body//div[@class="q-popover animate-scale column no-wrap"]'
'/div[2]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-"]/button').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Go to new source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/span[contains'
'(text(), "thirdtestsourceset")]').click()
print("OK")
print("Check if source in source set is correct...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "thirdtestsource")]'
)) > 0, "Source was not found")
print("OK")
print("Add a new source...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="sources-section"]/button').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[@class="add-source-form"]//input',
'newtestsource')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-source-form"]/button[2]'
).click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if second source is created properly...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]'
)) > 0, "Second Source was not found")
print("OK")
print("Delete second source...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]/../'
'div[2]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body//div[@class="modal-buttons row"]/'
'button[2]')))
driver.find_element_by_xpath(
'/html/body//div[@class="modal-buttons row"]/button[2]').click()
print("OK")
print("Check if second source was deleted...", end="")
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
self.assertFalse(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "newtestsource")]'),
"Second Source was not deleted")
print("OK")
print(
"Try to delete first source and check if error message appears...",
end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "thirdtestsource")]/../'
'div[2]').click()
self.assertTrue(len(driver.find_elements_by_xpath(
'/html/body//div[@class="q-alert row no-wrap shadow-2 '
'bg-negative"]')) > 0, "Error Message 'Removing the "
"last source entry is not allowed' did not appear")
print("OK")
print("Add number to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[1]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Destination")]/..'
'/input').send_keys('testdestination')
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Timeout")]/'
'../input', "100")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="add-destination-form"]/div/'
'button[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Add voicemail to 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button').click()
driver.find_element_by_xpath(
'//div[@class="q-popover animate-scale"]/div/div[2]').click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if everyting was added correctly...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'do not ring own phone', "Option 'do not ring own phone' "
"is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring testdestination for 100 secs', "Option "
"'Ring testdestination for 100 secs' is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[2]//div[@class="dest-'
'row"]').text, 'then ring Voicebox', "Option 'Ring Voicebox when "
"im online' is missing")
print("OK")
print("Swap entries in 'When im online'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]/div[@class="q-item'
'-side q-item-side-right q-item-section dest-btns cursor-pointer"]'
).click()
driver.find_element_by_xpath(
'/html/body/div[@class="q-popover animate-scale"]/div/div[1]'
).click()
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
time.sleep(1)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@class="dest-card"]/div[1]/div'
'[@class="add-destination-form"]/button')))
print("OK")
print("Check if entries got swapped...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="dest-row own-phone-desktop"]/span'
).text, 'do not ring own phone', "Option 'do not ring own phone' "
"is missing")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@groupname="cfu"]/div[1]//div[@class="dest-'
'row"]').text, 'first ring Voicebox', "Options did not get swapped"
)
print("OK")
print("Delete second source set...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="sources-section"]/div/button'
'[@align="right"]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body//div[@class="modal-buttons row"]/'
'button[2]')))
driver.find_element_by_xpath(
'/html/body//div[@class="modal-buttons row"]/button[2]').click()
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
driver.implicitly_wait(10)
print("OK")
print("Check if second source set was deleted...", end="")
self.assertFalse(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div/span[contains'
'(text(), "thirdtestsourceset")]'),
"Second Source Set was not deleted")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_conference_conversations(self):
global customers
global filename
filename = "test_conference_conversations.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
print("OK")
print("Check out 'Join Conference' screen...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Join conference")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Join conference")]').click()
# --------Disabled. Active RTC:Engine required for these tests--------
# driver.find_element_by_xpath(
# '//*[@id="csc-conf-link-input"]/div/input').send_keys(
# "testconference")
# driver.find_element_by_xpath(
# '//*[@id="csc-conf-link-input"]/div/button[contains'
# '(@class, "text-primary")]').click()
# self.assertEqual(driver.current_url, driver.find_element_by_xpath(
# '//div/input[@readonly="readonly"]').get_attribute('value'),
# "Sharing URL is not correct")
# driver.find_element_by_xpath('/html/body').send_keys(Keys.ESCAPE)
# WebDriverWait(driver, 10).until(EC.presence_of_element_located((
# By.XPATH, '/html/body/div[@class="modal fullscreen row minimized'
# ' flex-center"][@style="display: none;"]')))
driver.find_element_by_xpath(
'//*[@id="csc-conf-header"]/div/button').click()
print("OK")
print("Go to 'Conversations' page...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Conversations")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Conversations")]').click()
print("OK")
print("Check if all sections are empty...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="csc-conversation-content"]/div[@class="row justify-'
'center csc-conversation-list-message"]').text, 'No Calls, '
'Voicemails or Faxes found', "Section 'All' is not empty")
driver.find_element_by_xpath(
'//*[@id="csc-conversations-tabs"]//div[@class="q-tabs-scroller '
'row no-wrap"]//span[contains(text(), "Calls")]').click()
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="csc-conversation-content"]/div[@class="row justify-'
'center csc-conversation-list-message"]').text, 'No Calls found',
"Section 'Calls' is notempty")
driver.find_element_by_xpath(
'//*[@id="csc-conversations-tabs"]//div[@class="q-tabs-scroller '
'row no-wrap"]//span[contains(text(), "Faxes")]').click()
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="csc-conversation-content"]/div[@class="row justify-'
'center csc-conversation-list-message"]').text, 'No Faxes found',
"Section 'Faxes' is not empty")
driver.find_element_by_xpath(
'//*[@id="csc-conversations-tabs"]//div[@class="q-tabs-scroller '
'row no-wrap"]//span[contains(text(), "Voicemails")]').click()
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="csc-conversation-content"]/div[@class="row justify-'
'center csc-conversation-list-message"]').text, 'No Voicemails '
'found', "Section 'Voicemails' is not empty")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_reminder(self):
global customers
global filename
filename = "test_reminder.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
print("OK")
print("Go to 'Reminder' page...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Reminder")]')))
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Reminder")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@tabindex="0"][contains(@class, '
'"q-toggle")]//span[contains(text(), "Reminder")]')))
print("OK")
print("Enable reminders...", end="")
time.sleep(1)
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"][contains(@class, "q-toggle"'
')]//span[contains(text(), "Reminder")]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[contains(@class, '
'"q-input-target justify-start")]')))
time.sleep(1)
print("OK")
print("Set time for reminder...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains'
'(@class, "q-input-target justify-start")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-clock-circle")]'
'//div[contains(@class, "q-datetime-clock-pos-13")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-clock-circle")]'
'//div[contains(@class, "q-datetime-clock-pos-7")]').click()
driver.find_element_by_xpath(
'//div[contains(@class, "q-datetime-controls")]'
'/button[2]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[@tabindex="0"]/span'
'[@class="q-option-label"][contains(text(), "Always")]')))
time.sleep(1)
print("OK")
print("Set reminder to 'Always'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"]//span'
'[contains(text(), "Always")]').click()
print("OK")
print("Check if reminder settings were applied correctly...", end="")
self.assertEqual('Reminder is enabled', driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"]//'
'span[contains(text(), "Reminder")]').text,
"Reminder is not enabled")
self.assertEqual('13:35', driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains'
'(@class, "q-input-target justify-start")]').text,
"Time is not correct")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"]/div'
'[contains(@class, "active")]/../'
'span[contains(text(), "Always")]')) > 0,
"Option 'Always' was not selected")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_settings(self):
global customers
global filename
filename = "test_settings.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Reminder")]')))
print("OK")
print("Change home page language to all avalible languages...", end="")
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[2]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Rappel")]')) > 0,
'Language was not changed to France')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[3]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Promemoria")]')) > 0,
'Language was not changed to Italian')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[4]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Recordatorio")]')) > 0,
'Language was not changed to Spanish')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[5]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Erinnerung")]')) > 0,
'Language was not changed to German')
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/button').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-item q-item-division relative-position q-item-link"]'
)))
Functions.click_js(
driver, '/html/body/div[@class="q-popover animate-scale"]//div'
'[@class="q-collapsible-sub-item relative-position"]/div[1]')
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Reminder")]')) > 0,
'Language was not changed back to English')
print("OK")
print("Change user password...", end="")
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/div[1]/button').click()
driver.find_element_by_xpath(
'/html/body//div[contains(text(), "Settings")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/button[contains(@class, '
'"q-btn-rectangle")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[text() = "New password"]/../'
'input').send_keys('pass1234')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[text() = "New password retyped"]/../'
'input').send_keys('pass1234')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="row justify-center"]/'
'button[2]').click()
driver.find_element_by_xpath(
'/html/body//div[@class="csc-dialog-actions row justify-end'
' no-wrap"]/button[2]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="csc-login-form"]//div//input[@type="text"]')))
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
print("Try to log in with new password...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'pass1234')
self.assertEqual("testuser", driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]//div//span[contains(text(), '
'"testuser")]').text, "Login failed")
print("OK")
print("Change password back to old password...", end="")
driver.find_element_by_xpath(
'//*[@id="csc-header-toolbar"]/div[1]/button').click()
driver.find_element_by_xpath(
'/html/body//div[contains(text(), "Settings")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/button[contains(@class, '
'"q-btn-rectangle")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[text() = "New password"]/..'
'/input').send_keys('testpasswd')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[text() = "New password retyped"]/../'
'input').send_keys('testpasswd')
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="row justify-center"]'
'/button[2]').click()
driver.find_element_by_xpath(
'/html/body//div[@class="csc-dialog-actions row justify-end'
' no-wrap"]/button[2]').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="csc-login-form"]//div//input[@type="text"]')))
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_speed_dial(self):
global customers
global filename
filename = "test_speed_dial.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Speed Dial")]')))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Speed Dial")]')))
print("OK")
print("Go to 'Speed Dial'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Speed Dial")]').click()
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
driver.implicitly_wait(10)
print("OK")
print("Add a speed dial...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div//button[contains'
'(@class, "q-btn-rectangle")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"]').click()
driver.find_element_by_xpath(
'//*[@class="no-border scroll q-list q-list-link"]/div[2]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/input'
'[@class="col q-input-target text-left"]').send_keys("testtext")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="row justify-center form-actions"]'
'/button[contains(@class, "text-primary")]').click()
print("OK")
print("Check if speed dial details are correct...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-label"]'
'/span[contains(text(), "When")]')
.text, "When I dial *1 ...", "Speed dial has not been created")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-sublabel"]'
'[contains(text(), "ring")]')
.text, "ring testtext", "Speed dial is not correct")
print("OK")
print("Add a second speed dial...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div//button[contains'
'(@class, "q-btn-rectangle")]')))
driver.find_element_by_xpath(
'//*[@id="q-app"]//div//button[contains'
'(@class, "q-btn-rectangle")]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@tabindex="0"]').click()
driver.find_element_by_xpath(
'//*[@class="no-border scroll q-list q-list-link"]/div[2]').click()
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/input'
'[@class="col q-input-target text-left"]').send_keys("asdf")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="row justify-center form-actions"]'
'/button[contains(@class, "text-primary")]').click()
print("OK")
print("Check if second speed dial details are correct...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-label"]'
'/span[contains(text(), "*2")]')
.text, "When I dial *2 ...", "Speed dial has not been created")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[@class="q-item-sublabel"]'
'[contains(text(), "asdf")]')
.text, "ring asdf", "Speed dial is not correct")
print("OK")
print("Delete all speed dials...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/button[@slot="right"]').click()
driver.find_element_by_xpath(
'//div[@class="modal-buttons row"]//button[contains(@class, '
'"text-negative")]').click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((
By.XPATH, '//div[@class="q-toast-container active"]//div[contains'
'(text(), "Unassigned slot *1")]')))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div/button[@slot="right"]')))
driver.find_element_by_xpath(
'//*[@id="q-app"]//div/button[@slot="right"]').click()
driver.find_element_by_xpath(
'//div[@class="modal-buttons row"]//button[contains(@class, '
'"text-negative")]').click()
print("OK")
print("Check if speed dials were deleted...", end="")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "No speed dials found")]')
) > 0, "Speed dials was not deleted")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def test_voicebox(self):
global customers
global filename
filename = "test_voicebox.png"
driver = self.driver
print("Try to log in with valid credentials...", end="")
Collections.login_csc(
driver, "testuser@" + self.domainname, 'testpasswd')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Voicebox")]')))
print("OK")
print("Go to 'Voicebox'...", end="")
driver.find_element_by_xpath(
'//*[@id="main-menu"]//div[@class="q-item-label"]'
'[contains(text(), "Voicebox")]').click()
print("OK")
print("Try to enter an invalid voicebox pin...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.XPATH, '//*[@id="q-app"]//div[contains(text(), "Change PIN")]'
'/../input')))
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change PIN")]/../'
'input').send_keys("invalid")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@class="q-field-error col"'
']')) > 0, "Invalid PIN was not detected")
print("OK")
print("Enter valid voicebox pin...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change PIN")]/../../'
'i[1]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Change PIN")]/../'
'input', "12345")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change PIN")]/../../'
'i[1]').click()
print("OK")
print("Try to enter an invalid voicebox email...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change Email")]/../'
'input').send_keys("invalid")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[@class="q-field-error col"'
']')) > 0, "Invalid Email was not detected")
print("OK")
print("Enter valid voicebox email...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change Email")]/../../'
'i[1]').click()
Functions.fill_element(
driver, '//*[@id="q-app"]//div[contains(text(), "Change Email")]'
'/../input', "test@email.com")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change Email")]/../../'
'i[1]').click()
print("OK")
print("Enable 'Delete voicemail after notification'...", end="")
driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "q-toggle")]/span[contains'
'(text(), "Delete voicemail")]').click()
print("OK")
print("Check if voicebox settings are correct...", end="")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change PIN")]/../input')
.get_attribute('value'), "12345", "PIN is not correct")
self.assertEqual(driver.find_element_by_xpath(
'//*[@id="q-app"]//div[contains(text(), "Change Email")]/../input')
.get_attribute('value'), "test@email.com", "Email is not correct")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "csc-toggle-enabled")]'
'/span[contains(text(), "Attach voicemail")]')) > 0,
"Option 'Attach voicemail to email notification' was not enabled")
self.assertTrue(len(driver.find_elements_by_xpath(
'//*[@id="q-app"]//div[contains(@class, "csc-toggle-enabled")]'
'/span[contains(text(), "Delete voicemail")]')) > 0,
"Option 'Delete voicemail after email notification is delivered' "
"was not enabled")
print("OK")
print("Logout...", end="")
Collections.logout_csc(driver)
self.assertEqual(
driver.current_url, os.environ['CATALYST_SERVER'] +
"/login/subscriber/#/login", "Logout failed")
print("OK")
filename = 0
def tearDown(self):
global customers
global filename
driver = self.driver
if filename:
print("FAIL")
driver.save_screenshot('/results/' + filename)
filename = 0
driver.quit()
if __name__ == '__main__':
print('Preparing Domain, Customer and Subscriber for NGCP CSC tests ...')
try:
preparation()
except Exception as e:
print('Preperation failed! See logs below for more details')
print('--------------------------------------------------------------')
traceback.print_exc()
print('--------------------------------------------------------------')
quit(1)
print('Preperation successful, running tests now ...')
nose2.main(exit=False)
try:
cleanup()
except Exception as e:
traceback.print_exc()
quit(1)