MT#64630 remove selenium from mr12.5+

Change-Id: I3e0fac31e77d7c1419898c74d0f194f750fd8080
mr26.0
Nico Schedel 3 months ago
parent b9fab7db32
commit e2a63491b7

@ -1,84 +0,0 @@
# DOCKER_NAME=ngcp-csc-ui-selenium-test-trixie
FROM docker.mgm.sipwise.com/sipwise-trixie:latest
# Important! Update this no-op ENV variable when this Dockerfile
# is updated with the current date. It will force refresh of all
# of the base images and things like `apt-get update` won't be using
# old cached versions when the Dockerfile is built.
ENV REFRESHED_AT=2026-02-27
RUN apt-get update
RUN apt-get install --assume-yes \
apt-utils \
curl \
devscripts \
fluxbox \
git \
libdbus-glib-1-2 \
libgtk-3-0 \
lsof \
net-tools \
procps \
python3 \
python3-coverage \
python3-nose2 \
python3-selenium \
tigervnc-standalone-server \
unzip \
vim-tiny \
wget \
xterm
RUN adduser --disabled-password --gecos=Selenium-User selenium
WORKDIR /home/selenium/
# installing geckodriver (0.33.0)
RUN wget https://deb.sipwise.com/files/geckodriver-v0.33.0-linux64.tar.gz && \
tar xvf geckodriver-v0.33.0-linux64.tar.gz && \
ln -s /home/selenium/geckodriver /usr/bin/geckodriver && \
rm -f geckodriver-v0.33.0-linux64.tar.gz
# installing firefox (lang=en_US) (123.0.1)
RUN wget https://deb.sipwise.com/files/firefox-123.0.1.tar.bz2 && \
tar xvf firefox-123.0.1.tar.bz2 && \
ln -s /home/selenium/firefox/firefox /usr/bin/firefox && \
rm -f firefox-123.0.1.tar.bz2
# installing chromedriver (114.0.5735.90)
RUN wget https://deb.sipwise.com/files/chromedriver_linux64_114.zip && \
unzip chromedriver_linux64_114.zip && \
#ln -s /home/selenium/chromedriver /usr/bin/chromedriver && \
rm -f chromedriver_linux64114.zip
# installing chrome (114.0.5735.198)
RUN wget https://deb.sipwise.com/files/google-chrome-stable_114_amd64.deb && \
apt install -y ./google-chrome-stable_114_amd64.deb && \
rm -f google-chrome-stable_114_amd64.deb
RUN echo "cd /code && ./t/selenium/testrunner 1.2.3.4 /code/ tap" >/home/selenium/.bash_history
RUN echo "su - selenium" >/root/.bash_history
EXPOSE 5999
COPY t/selenium/jenkins_docker_run /home/selenium/
COPY t/selenium/webdriver_prefs.json /usr/lib/python3/dist-packages/selenium/webdriver/firefox/
################################################################################
# Instructions for usage
# ----------------------
# When you want to build the base image from scratch (jump to the next section if you don't want to build yourself!):
# NOTE: run the following command from root folder of git repository:
# % docker build --tag="ngcp-csc-ui-selenium-test-trixie" -f t/selenium/Dockerfile .
# % docker run --rm -p 5999:5999 --shm-size 4g -i -t -v ~/Documents/ngcp-csc-ui:/code:rw ngcp-csc-ui-selenium-test-trixie bash
#
# Use the existing docker image:
# % docker pull docker.mgm.sipwise.com/ngcp-csc-ui-selenium-test-trixie
# % docker run --rm -p 5999:5999 --shm-size 4g -i -t -v $(pwd):/code:rw docker.mgm.sipwise.com/ngcp-csc-ui-selenium-test-trixie:latest bash
#
# Inside docker:
# su - selenium
# cd /code && ./t/selenium/testrunner $IP_OF_NGCP_SYSTEM # IP_OF_NGCP_SYSTEM can be e.g. IP of a `vagrant up ce-trunk` system (eth1)
#
# On host (where vncviewer can be e.g. from Debian package tigervnc-viewer):
# % vncviewer geometry=1280x1024x16 localhost:5999
################################################################################

@ -1,158 +0,0 @@
import os
import random
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from functions.Functions import fill_element
from functions.Functions import scroll_to_element
from functions.Functions import click_js
from functions.Functions import check_if_unchecked
def login_csc(driver, name, pwd):
driver.get(os.environ['CATALYST_SERVER'])
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', name)
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="password"]', pwd)
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]/div[3]/button[2]').click()
def logout_csc(driver):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="csc-header-toolbar-main"]/button[2]')))
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-main"]/button[2]').click()
scroll_to_element(driver, '/html/body//div[contains(text(), "Logout")]')
driver.find_element(By.XPATH, '/html/body//div[contains(text(), "Logout")]').click()
def login_panel(driver):
driver.get(os.environ['CATALYST_SERVER'] + ":1443/logout")
driver.get(os.environ['CATALYST_SERVER'] + ":1443")
try:
driver.implicitly_wait(1)
driver.find_element(By.XPATH, '//*[@id="q-app"]/div/footer/div/button/span[2]/span').click()
driver.implicitly_wait(10)
except Exception:
pass
finally:
driver.implicitly_wait(10)
driver.find_element(By.XPATH, '//*[@id="username"]').send_keys('administrator')
driver.find_element(By.XPATH, '//*[@id="password"]').send_keys('administrator')
driver.find_element(By.XPATH, '//*[@id="submit"]').click()
def logout_panel(driver):
driver.find_element(By.XPATH, '//*[@id="top-nav"]/ul//a[contains(text(), "Logout")]').click()
def create_customer(driver, name=None):
if not name:
name = 'customer' + str(random.randint(1, 100000)) + 'test'
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element(By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element(By.LINK_TEXT, 'Customers').click()
driver.find_element(By.LINK_TEXT, 'Create Customer').click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="contactidtable"]//tr[1]//td/input')))
scroll_to_element(driver, '//*[@id="contactidtable"]//tr[1]//td/input')
driver.find_element(By.XPATH, '//*[@id="contactidtable"]//tr[1]//td/input').click()
try:
driver.implicitly_wait(2)
scroll_to_element(driver, '//*[@id="productidtable_filter"]/label/input')
fill_element(driver, '//*[@id="productidtable_filter"]/label/input', 'thisshouldnotexist')
driver.find_element(By.CSS_SELECTOR, '#productidtable tr > td.dataTables_empty')
fill_element(driver, '//*[@id="productidtable_filter"]/label/input', 'Basic')
driver.find_element(By.XPATH, '//*[@id="productidtable"]//tr[1]//td/input').click()
driver.implicitly_wait(10)
except Exception as e:
driver.implicitly_wait(10)
del e
scroll_to_element(driver, '//*[@id="billing_profileidtable"]//tr[1]//td/input')
driver.find_element(By.XPATH, '//*[@id="billing_profileidtable"]//tr[1]//td/input').click()
scroll_to_element(driver, '//*[@id="external_id"]')
fill_element(driver, '//*[@id="external_id"]', name)
driver.find_element(By.XPATH, '//*[@id="save"]').click()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="content"]//div[@class="alert alert-info"]')))
return name
def delete_customer(driver, name):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element(By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element(By.LINK_TEXT, 'Customers').click()
fill_element(driver, '//*[@id="Customer_table_filter"]//input', 'thisshouldnotexist')
driver.find_element(By.CSS_SELECTOR, '#Customer_table tr > td.dataTables_empty')
fill_element(driver, '//*[@id="Customer_table_filter"]//input', name)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % name)))
click_js(driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Terminate")]')
driver.find_element(By.XPATH, '//*[@id="dataConfirmOK"]').click()
def create_subscriber(driver, customername, domainname):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element(By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element(By.LINK_TEXT, "Customers").click()
fill_element(driver, '//*[@id="Customer_table_filter"]//input', 'thisshouldnotexist')
driver.find_element(By.CSS_SELECTOR, '#Customer_table tr > td.dataTables_empty')
fill_element(driver, '//*[@id="Customer_table_filter"]//input', customername)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % customername)))
click_js(driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]')
time.sleep(2)
driver.find_element(By.XPATH, '//a[@id="toggle-accordions"]').click()
time.sleep(1)
scroll_to_element(driver, 'Subscribers')
driver.find_element(By.LINK_TEXT, "Create Subscriber").click()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="domainidtable_paginate"]/a[4]')))
fill_element(driver, '//*[@id="domainidtable_filter"]//input', 'thisshouldnotexist')
driver.find_element(By.CSS_SELECTOR, '#domainidtable tr > td.dataTables_empty')
fill_element(driver, '//*[@id="domainidtable_filter"]//input', domainname)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="domainidtable"]//tr[1]//td[text()="%s"]' % domainname)))
check_if_unchecked(driver, '//*[@id="domainidtable"]/tbody/tr[1]/td[4]/input')
driver.find_element(By.XPATH, '//*[@id="webusername"]').send_keys('testuser')
driver.find_element(By.XPATH, '//*[@id="webpassword"]').send_keys('Rand0m#PasswOrd#12345#')
driver.find_element(By.XPATH, '//*[@id="username"]').send_keys('testuser')
driver.find_element(By.XPATH, '//*[@id="password"]').send_keys('Rand0m#PasswOrd#12345#')
scroll_to_element(driver, '//*[@id="administrative"]')
driver.find_element(By.XPATH, '//*[@id="administrative"]').click()
driver.find_element(By.XPATH, '//*[@id="save"]').click()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="content"]//div[@class="alert alert-info"]')))
def delete_subscriber(driver, customername):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element(By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element(By.LINK_TEXT, 'Customers').click()
fill_element(driver, '//*[@id="Customer_table_filter"]//input', 'thisshouldnotexist')
driver.find_element(By.CSS_SELECTOR, '#Customer_table tr > td.dataTables_empty')
fill_element(driver, '//*[@id="Customer_table_filter"]//input', customername)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % customername)))
click_js(driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]')
driver.find_element(By.LINK_TEXT, 'Expand Groups').click()
scroll_to_element(driver, 'Subscribers')
click_js(driver, '//*[@id="subscribers_table"]//tr[1]//td//a[contains(text(), "Terminate")]')
driver.find_element(By.XPATH, '//*[@id="dataConfirmOK"]').click()
def create_domain(driver, name=None):
if not name:
name = 'domain' + str(random.randint(1, 100000)) + 'test'
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element(By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element(By.LINK_TEXT, 'Domains').click()
driver.find_element(By.LINK_TEXT, 'Create Domain').click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="reselleridtable"]//tr[1]/td[5]/input')))
driver.find_element(By.XPATH, '//*[@id="reselleridtable"]//tr[1]/td[5]/input').click()
fill_element(driver, '//*[@id="domain"]', name)
driver.find_element(By.XPATH, '//*[@id="save"]').click()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="content"]//div[@class="alert alert-info"]')))
return name
def delete_domain(driver, name):
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element(By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element(By.LINK_TEXT, 'Domains').click()
fill_element(driver, '//*[@id="Domain_table_filter"]//input', 'thisshouldnotexist')
driver.find_element(By.CSS_SELECTOR, '#Domain_table tr > td.dataTables_empty')
fill_element(driver, '//*[@id="Domain_table_filter"]//input', name)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Domain_table"]//tr[1]//td[text()="%s"]' % name)))
click_js(driver, '//*[@id="Domain_table"]//tr[1]//td//a[contains(text(), "Delete")]')
driver.find_element(By.XPATH, '//*[@id="dataConfirmOK"]').click()

@ -1,63 +0,0 @@
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
def fill_element(driver, element, text, pathtype=By.XPATH):
elem = driver.find_element(pathtype, element)
elem.send_keys(Keys.CONTROL + "a")
elem.send_keys(Keys.DELETE)
elem.send_keys(text)
def scroll_to_element(driver, element):
if element[:1] == "/":
webelem = driver.find_element(By.XPATH, element)
else:
webelem = driver.find_element(By.LINK_TEXT, element)
driver.execute_script("arguments[0].scrollIntoView();", webelem)
def click_js(driver, element):
if element[:1] == "/":
webelement = driver.find_element(By.XPATH, element)
else:
webelement = driver.find_element(By.LINK_TEXT, element)
driver.execute_script("arguments[0].click();", webelement)
def create_driver():
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
caps = DesiredCapabilities().FIREFOX
caps["pageLoadStrategy"] = "normal"
driver = webdriver.Firefox(
capabilities=caps, firefox_profile=profile,
service_log_path='/dev/null', )
driver.implicitly_wait(10)
return driver
def wait_for_loading_screen(driver):
driver.implicitly_wait(1)
for i in range(1, 5):
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)
def wait_for_invisibility(driver, xpath):
driver.implicitly_wait(2)
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((By.XPATH, xpath)))
driver.implicitly_wait(10)
def check_if_unchecked(driver, element):
checkmark = driver.find_element(By.XPATH, element)
if not checkmark.is_selected():
click_js(driver, element)

@ -1,12 +0,0 @@
#!/bin/bash
# This script is used for running the tests with
# proper arguments from Jenkins under user 'selenium'
set -e
su - selenium -c "cd /code && ./t/selenium/testrunner $*" || RC=$?
## Jenkins will detect errors in produced artifacts if any
## as a result the Jenkins job will be "yellow" instead of "red".
[ -n "${RC}" ] && echo "Masking non-zero exit code '${RC}'"
exit 0 # ${RC:-0}

@ -1,22 +0,0 @@
#this is the test configuration for running tests on jenkins.
#the only difference between this and localtest.cfg is that this will generate a junit result file
[unittest]
plugins = nose2.plugins.junitxml
nose2.plugins.mp
exclude-plugins = nose2.plugins.failfast
[junit-xml]
always-on = True
keep_restricted = False
path = /results/selenium.xml
test_fullname = True
[multiprocess] #change thread count here. should be the same as in testrunner
always-on = True
processes = 2
[output-buffer]
always-on = True
stderr = False
stdout = True

@ -1,22 +0,0 @@
#this is the test configuration for running tests on your local machine.
#the only difference between this and jenkinstest.cfg is that this wont generate a junit result file
[unittest]
plugins = nose2.plugins.junitxml
nose2.plugins.mp
exclude-plugins = nose2.plugins.failfast
[junit-xml]
always-on = False
keep_restricted = False
path = selenium.xml
test_fullname = True
[multiprocess] #change thread count here. should be the same as in testrunner
always-on = True
processes = 1
[output-buffer]
always-on = True
stderr = False
stdout = True

@ -1,780 +0,0 @@
import unittest
import os
import traceback
from multiprocessing import Value
import nose2
import time
from functions.Collections import create_customer
from functions.Collections import create_subscriber
from functions.Collections import create_domain
from functions.Collections import delete_customer
from functions.Collections import delete_subscriber
from functions.Collections import delete_domain
from functions.Collections import login_csc
from functions.Collections import login_panel
from functions.Collections import logout_panel
from functions.Collections import logout_csc
from functions.Functions import click_js
from functions.Functions import create_driver
from functions.Functions import fill_element
from functions.Functions import scroll_to_element
from functions.Functions import wait_for_loading_screen
from functions.Functions import wait_for_invisibility
import selenium.common.exceptions
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
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
from datetime import datetime
execs = Value('i', 0)
customers = {}
filename = 0
def preparation():
global customers
driver = create_driver()
try:
login_panel(driver)
for i in range(0, int(os.environ['THREADS'])):
customers[create_customer(driver)] = create_domain(driver)
del i
for customer in customers.keys():
create_subscriber(driver, customer, customers[customer])
if os.environ.get('vmtype') is None:
os.environ['vmtype'] = "CE"
driver.quit()
except Exception:
driver.save_screenshot('/results/preperation.png')
driver.quit()
raise Exception
def cleanup():
global customers
driver = create_driver()
login_panel(driver)
for customer in customers:
delete_customer(driver, customer)
delete_domain(driver, customers[customer])
driver.quit()
class testrun(unittest.TestCase):
def setUp(self):
global execs
global customers
self.driver = create_driver()
self.longMessage = True
execs.value += 1
self.key = list(customers.keys())[execs.value % int(os.environ['THREADS'])]
self.domainname = customers[self.key]
def test_call_blocking(self):
global customers
global filename
filename = "test_call_blocking.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Block Incoming' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Block Incoming")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]')) > 0, "'Block Incoming' page wasnt opened")
print("OK")
print("Try to block all incoming anonymous Calls...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div[@tabindex="0"]/div[1]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]/div[1]/div/div[@aria-checked="true"]')) > 0,
"Incoming Anonymous Calls were not disabled")
print("OK")
print("Try to enable option 'Only allow incoming calls from listed numbers'...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div[contains(., "Only incoming calls")]/../div[1]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div[contains(@class, "q-radio__inner--truthy")]')) > 0,
"Option 'Only incoming calls from listed numbers are allowed' was not enabled")
print("OK")
"""
print("Trying to add a number to the incoming calls list...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div/button[contains(., "Add number")]').click()
click_js(driver, '//*[@id="csc-page-call-blocking-incoming"]//div/input')
fill_element(driver, '//*[@id="csc-page-call-blocking-incoming"]//div/input', "Testnumber")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div/button[2]')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div[@data-cy="csc-blocked-number"]/div[contains(., "Testnumber")]')) > 0,
"Number was not added")
print("OK")
print("Trying to delete a number to the incoming calls list...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]//div/button[@data-cy="csc-more-menu"]').click()
driver.find_element(By.XPATH, '/html/body//div[contains(., "Remove")]').click()
driver.find_element(By.XPATH, '/html/body//div/button[contains(., "OK")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-incoming"]/div[contains(., "No numbers found")]')) > 0,
"Number was not deleted")
"""
print("Go to 'Block Outgoing' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Block Outgoing")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-outgoing"]')) > 0, "'Block Outgoing' page wasnt opened")
print("OK")
filename = 0
def test_call_forwarding(self):
global customers
global filename
filename = "test_call_forwarding.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Call Forwarding' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Forwarding")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-forwarding"]')) > 0, "Conference page wasnt opened")
print("OK")
print("Create a call forwarding 'if available'...", end="")
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="csc-page-call-forwarding"]//div//button[contains(., "Add forwarding")]')))
time.sleep(1)
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]/div[1]/button/span[3]/svg[@class="q-spinner text-primary"]')
time.sleep(1)
click_js(driver, '//*[@id="csc-page-call-forwarding"]//div//button[contains(., "Add forwarding")]')
click_js(driver, '//div[@data-cy="csc-add-forwarding-available"]')
print("OK")
print("Try to add a condition 'call from...' to the call forwarding...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "condition")]').click()
driver.find_element(By.XPATH, '//div[@data-cy="csc-condtion-call-from"]').click()
fill_element(driver, '/html/body//div[1]/div/label//div//input', 'TestUser')
fill_element(driver, '/html/body//div[2]/div/label//div//input', '1234')
driver.find_element(By.XPATH, '/html/body//button[contains(., "Add number")]').click()
fill_element(driver, '/html/body/div[3]//div[3]//label//div//input', '5678')
driver.find_element(By.XPATH, '/html/body//button[contains(., "Save")]').click()
wait_for_invisibility(driver, '/html/body/div[3]')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "TestUser")]')) > 0,
"Condition 'call from...' was not added")
print("OK")
print("Try to edit 'forwared to...' number...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "Number")]').click()
fill_element(driver, "/html/body//label//div//input", 'TestNumber')
driver.find_element(By.XPATH, '/html/body//div/button[contains(., "Set")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div[contains(., "TestNumber")]')) > 0,
"'forward to...' number was not changed")
print("OK")
print("Try to add a second condition 'office hours are...'...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "condition")]').click()
driver.find_element(By.XPATH, '//div[@data-cy="csc-condtion-office-hours"]').click()
fill_element(driver, '/html/body//div[1]/label//div//input[@aria-label="Start time"]', '1200')
fill_element(driver, '/html/body//div[2]/label//div//input[@aria-label="End time"]', '1800')
driver.find_element(By.XPATH, '/html/body//div//button[contains(., "Save")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "Monday, Tuesday, Wednesday, Thursday, Friday")]')) > 0,
"'Office hours are...' condition is not correct")
print("OK")
print("Try to delete second condition...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "Monday")]').click()
driver.find_element(By.XPATH, '/html/body//div//button[contains(., "Delete")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "condition")]')) > 0,
"Second condition was not deleted")
print("OK")
print("Try to add second condition 'date is...'...", end="")
day = datetime.today().day
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "condition")]').click()
driver.find_element(By.XPATH, '//div[@data-cy="csc-condtion-date"]').click()
driver.find_element(By.XPATH, '/html/body//div//button[contains(., "Save")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
if day < 10:
day = "0" + str(day)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div[@data-cy="q-item-label"]/span[contains(., "' + datetime.today().strftime('%Y/%m/') + str(day) + '")]')) > 0,
"'Office hours are...' condition is not correct")
print("OK")
print("Try to delete second condition...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "' + datetime.today().strftime('%Y/%m/') + str(day) + '")]').click()
driver.find_element(By.XPATH, '/html/body//div//button[contains(., "Delete")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "condition")]')) > 0,
"Second condition was not deleted")
print("OK")
print("Try to delete first condition...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[contains(., "TestUser")]').click()
driver.find_element(By.XPATH, '//button[@data-cy="csc-call-select-delete"]').click()
wait_for_invisibility(driver, '/html/body/div[3]/div/div[4]/svg')
print("OK")
print("Try to add another foward...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div/div/div[1]/div[2]/button').click()
driver.find_element(By.XPATH, '//div[@data-cy="csc-forwarding-to-voicebox"]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[3]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div[contains(., "Voicebox")]')) > 0, "Voicebox forwarding was not added")
print("OK")
print("Try to change the amount of time before it switches to the next forward...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[1][contains(., "seconds")]').click()
fill_element(driver, '/html/body//div/label//div//input', "30")
driver.find_element(By.XPATH, '/html/body/div[3]/div/div/button[contains(., "Set")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[4]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div/span[1][contains(., "30")]')) > 0,
"Voicebox forwarding time was not changed")
print("OK")
print("Try to disable a call forward...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div/div/div[1]/div[2]/button').click()
driver.find_element(By.XPATH, '/html/body//div[@class="q-list q-list--dark"]/div[contains(., "Disable")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[4]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]//div[@class="q-item__section column q-item__section--main justify-center disabled"]')) > 0,
"Call forward was not disabled")
print("OK")
print("Try to enable a call forward...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div/div/div[1]/div[2]/button').click()
driver.find_element(By.XPATH, '/html/body//div[@class="q-list q-list--dark"]/div[contains(., "Enable")]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[4]/svg')
print("OK")
print("Try to delete call forwarding...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div/div/div[1]/div[2]/button').click()
driver.find_element(By.XPATH, '/html/body//div[@class="q-list q-list--dark"]/div[contains(., "Remove")]').click()
driver.find_element(By.XPATH, '/html/body//div/div[3]/button[2]').click()
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
self.assertTrue(
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div/div[1]/div/div').text == "Always", "Call forward was not deleted")
filename = 0
def test_fax_settings(self):
global customers
global filename
if os.environ.get('vmtype') == "CE":
print("Running CE, test is skipped...")
filename = 0
return True
filename = "test_fax_settings.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Fax Settings' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Fax Settings")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-main"]')) > 0, "Fax page wasnt opened")
print("OK")
print("Try to add a new destination...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main/div[2]/div[1]/div[5]/div[2]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main//div//button[contains(., "Add destination")]').click()
fill_element(driver, '//*[@id="csc-page-main"]/main//div//label//input[@aria-label="Destination Email"]', "testdestination@test.com")
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main//div//label[2]').click()
driver.find_element(By.XPATH, '/html/body//div[contains(., "PDF")]').click()
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main//div//button[contains(., "Create destination")]').click()
print("OK")
print("Check if destination is correct...", end="")
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-main"]//main//div[contains(., "<testdestination@test.com> as PDF")]')) > 0, "Destination was not found")
print("OK")
print("Try to edit Fax destination. Disabling 'Deliver incoming/outgoing Faxes'...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main/div[2]/div[1]/div[5]/div[2]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main//div[@data-cy="csc-list-item"]').click()
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main/div[2]//div[@aria-label="Deliver Incoming Faxes"]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main/div[2]/div[1]/div[5]/div[2]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main/div[2]//div[@aria-label="Deliver Outgoing Faxes"]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main/div[2]/div[1]/div[5]/div[2]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main//div[@data-cy="csc-list-item"]/div[1]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main//div/i[contains(., "call_recieved")]')
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main//div/i[contains(., "call_made")]')
print("OK")
print("Try to activate sendfax...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-main"]/main//div[@aria-label="Active"]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]/button[1]')) > 0, "Fax button was not found")
print("OK")
print("Try to send a fax to a test destination...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-main"]/main/div[2]/div[1]/div[5]/div[2]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-main"]/button[1]').click()
driver.find_element(By.XPATH, '/html/body/div[contains(., "Send Fax")]').click()
fill_element(driver, '/html/body//div//label//div/input[@aria-label="Destination Number"]', '999999')
fill_element(driver, '/html/body//div//label//div/input[@aria-label="Page Header"]', 'Test')
fill_element(driver, '/html/body//div//label//div/textarea[@aria-label="Content"]', 'This is a test Text')
driver.find_element(By.XPATH, '/html/body//div//button[contains(., "Send")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]//div[contains(., "Sending fax completed")]')) > 0, "Fax was not sent")
print("OK")
filename = 0
def test_login_page(self):
global customers
global filename
filename = "test_login_page.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with no credentials...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]//button[contains(., "Sign In")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]')) > 0, "Error Message was not shown")
print("OK")
print("Try to log in with invalid credentials...", end="")
driver.get(os.environ['CATALYST_SERVER'])
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', "invaliduser")
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="password"]', "invalidpass")
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]//button[contains(., "Sign In")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]')) > 0, "Error Message was not shown")
print("OK")
print("Try to log in with invalid password...", end="")
driver.get(os.environ['CATALYST_SERVER'])
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', "testuser@" + self.domainname)
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="password"]', "invalidpass")
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]//button[contains(., "Sign In")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]')) > 0, "Error Message was not shown")
print("OK")
print("Try to log in with empty password...", end="")
driver.get(os.environ['CATALYST_SERVER'])
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', "testuser@" + self.domainname)
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]//button[contains(., "Sign In")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]')) > 0, "Error Message was not shown")
print("OK")
print("Try to log in with valid credentials...", end="")
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', "testuser@" + self.domainname)
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="password"]', "Rand0m#PasswOrd#12345#")
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]//button[contains(., "Sign In")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Try to log out...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-main"]/button[contains(., "testuser")]').click()
driver.find_element(By.XPATH, '//div[@data-cy="user-logout"]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-login"]')) > 0,
"Logout wasnt successful")
print("OK")
print("Trying to change to every available language...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-login"]/button').click()
click_js(driver, '/html/body/div[3]/div/div[3]')
wait_for_invisibility(driver, '//*[@id="csc-language-menu-login"]')
time.sleep(1)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-login-card"]/div[contains(., "Teilnehmer-Anmeldung")]')) > 0,
"Language wasnt changed to German")
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-login"]/button').click()
click_js(driver, '/html/body/div[3]/div/div[4]')
wait_for_invisibility(driver, '//*[@id="csc-language-menu-login"]')
time.sleep(1)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-login-card"]/div[contains(., "Iniciar sesión de suscriptor")]')) > 0,
"Language wasnt changed to Spanish")
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-login"]/button').click()
click_js(driver, '/html/body/div[3]/div/div[5]')
wait_for_invisibility(driver, '//*[@id="csc-language-menu-login"]')
time.sleep(1)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-login-card"]/div[contains(., "Authentification de labonné")]')) > 0,
"Language wasnt changed to French")
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-login"]/button').click()
click_js(driver, '/html/body/div[3]/div/div[6]')
wait_for_invisibility(driver, '//*[@id="csc-language-menu-login"]')
time.sleep(1)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-login-card"]/div[contains(., "Accesso abbonato")]')) > 0,
"Language wasnt changed to Italian")
driver.find_element(By.XPATH, '//*[@id="csc-header-toolbar-login"]/button').click()
click_js(driver, '/html/body/div[3]/div/div[2]')
wait_for_invisibility(driver, '//*[@id="csc-language-menu-login"]')
time.sleep(1)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-login-card"]/div[contains(., "Subscriber Sign In")]')) > 0,
"Language wasnt changed to English")
print("OK")
filename = 0
def test_other(self):
global customers
global filename
filename = "test_other.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', "testuser@" + self.domainname)
fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="password"]', "Rand0m#PasswOrd#12345#")
driver.find_element(By.XPATH, '//*[@id="csc-login-card"]//button[contains(., "Sign In")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Start new call' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]/a[contains(., "Start new call")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-call"]')) > 0, "Start new call page wasnt opened")
print("OK")
print("Go to 'Conversations' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]/a[contains(., "Conversations")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-conversations"]')) > 0, "Conversations page wasnt opened")
print("OK")
print("Trying to go through every subpage...", end="")
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-conversations"]//div[contains(., "No Calls, Voicemails or Faxes found")]')) > 0,
"Sub page 'All' wasnt opened")
driver.find_element(By.XPATH, '//*[@id="csc-page-conversations"]//div[@role="tablist"]/div/div[2]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-conversations"]//div[contains(., "No Calls found")]')) > 0,
"Sub page 'Calls' wasnt opened")
driver.find_element(By.XPATH, '//*[@id="csc-page-conversations"]//div[@role="tablist"]/div/div[3]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-conversations"]//div[contains(., "No Voicemails found")]')) > 0,
"Sub page 'Voicemails' wasnt opened")
driver.find_element(By.XPATH, '//*[@id="csc-page-conversations"]//div[@role="tablist"]/div/div[4]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-conversations"]//div[contains(., "No Faxes found")]')) > 0,
"Sub page 'Faxes' wasnt opened")
print("OK")
print("Go to 'General'...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "General")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]//div[contains(., "Music on Hold")]')) > 0,
"General page wasnt opened")
print("OK")
print("Try to enable 'Music on Hold'...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-voicebox"]/div/div[1]/div[2]/svg')
click_js(driver, '//*[@id="csc-page-voicebox"]//div[@aria-label="Music on Hold"]/div[1]')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]//div[@aria-checked="true"]')) > 0,
"Music on Hold was not enabled")
print("OK")
print("Go to 'Privacy' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Privacy")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-privacy"]')) > 0, "Privacy page wasnt opened")
print("OK")
print("Try to enable privacy settings...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-call-blocking-privacy"]/div/div/div[2]/svg')
click_js(driver, '//div[@data-cy="csc-privacy-hide"]')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//div[@data-cy="csc-privacy-hide"][@aria-checked="true"]')) > 0,
"'Hide your number to the callee' wasnt enabled")
click_js(driver, '//*[@id="csc-page-call-blocking-privacy"]/div/div[2]/div[1]/div')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-blocking-privacy"]/div/div[2]/div[1]/div[@aria-checked="true"]')) > 0,
"'Hide number to the callee within own PBX' wasnt enabled")
filename = 0
def test_recording(self):
global customers
global filename
now = datetime.now()
filename = "test_recording.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Recordings' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Recordings")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-recording"]')) > 0, "Recordings page wasnt opened")
print("OK")
print("Add a timerange filter and check if they got created...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]//div//button[contains(., "Filter")]').click()
click_js(driver, '//*[@id="csc-page-call-recording"]//div[@data-cy="csc-call-recording-filters"]//label[1]/div/div/div[1]')
driver.find_element(By.XPATH, '/html/body/div[3]/div/div[2]/div[1]').click()
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]/div[1]/div/div[3]/div/div[1]/div[2]/label[1]/div/div/div[1]').click()
driver.find_element(By.XPATH, '/html/body/div[3]/div/div/div[2]/div[2]/div/button').click()
checkstring = "Start time: " + now.strftime("%Y-%m-%d") + " 00:00"
print(checkstring)
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-recording"]//div[contains(., "' + checkstring + '")]')) > 0,
"Start timerange could not be found")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]/div[1]/div/div[3]/div/div[1]/div[2]/label[2]/div/div/div[1]').click()
driver.find_element(By.XPATH, '/html/body/div[3]/div/div/div[2]/div[2]/div/button').click()
checkstring = "End time: " + now.strftime("%Y-%m-%d") + " 00:00"
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-recording"]//div[contains(., "' + checkstring + '")]')) > 0,
"End timerange could not be found")
print("OK")
print("Try to remove the End time...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]//div[contains(., "End time:")]/../i[2]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-call-recording"]//div[contains(., "End time:")]/../i[2]')
print("OK")
print("Add filter by CallID...", end="")
click_js(driver, '//*[@id="csc-page-call-recording"]//div[@data-cy="csc-call-recording-filters"]//label[1]/div/div/div[1]')
driver.find_element(By.XPATH, '/html/body/div[3]/div/div[2]/div[4]').click()
fill_element(driver, '//*[@id="csc-page-call-recording"]//div//label//input[@aria-label="CallID"]', "TestCallID")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]/div[1]/div/div[3]/div/div[1]/div[2]/label/div/div/div[2]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-recording"]//div[contains(., "CallID: TestCallID")]')) > 0,
"Call ID could not be found")
print("OK")
print("Try to delete all filters...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]//div[contains(., "Start time:")]/../i[2]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-call-recording"]//div[contains(., "Start time:")]/../i[2]')
driver.find_element(By.XPATH, '//*[@id="csc-page-call-recording"]//div[contains(., "CallID:")]/../i[2]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-call-recording"]//div[contains(., "CallID:")]/../i[2]')
filename = 0
def test_reminder(self):
global customers
global filename
filename = "test_reminder.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Reminder' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Reminder")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-reminder"]')) > 0, "Reminder page wasnt opened")
print("OK")
print("Try to enable reminders...", end="")
wait_for_invisibility(driver, '//div[@data-cy="csc-reminder-toggle"][@aria-disabled="true"]')
driver.find_element(By.XPATH, '//div[@data-cy="csc-reminder-toggle"]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//div[@data-cy="csc-reminder-toggle"][@aria-checked="true"]')) > 0,
"Reminder has not been enabled")
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Speed Dial")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Reminder")]').click()
print("OK")
print("Try to change reminder recurrance to 'Always'...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-reminder"]//div[@aria-label="Always"]').click()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '/html/body//div[@role="alert"]')))
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-reminder"]//div[@aria-label="Always"][@aria-checked="true"]')) > 0,
"Reminder recurrance has not been changed to 'always'")
print("OK")
print("Try to change time to 12:00...")
driver.find_element(By.XPATH, '//*[@id="csc-page-reminder"]/div/div[3]/div/label/div/div/div[2]/input').click()
driver.find_element(By.XPATH, '//*[@id="csc-page-reminder"]/div/div[3]/div/label/div/div/div[2]/input').click()
fill_element(driver, '//*[@id="csc-page-reminder"]/div/div[3]/div/label/div/div/div[2]/input', '1200')
print(driver.find_element(By.XPATH, '//*[@id="csc-page-reminder"]//div[@aria-label="Always"][@aria-checked="true"]').get_attribute("value"))
self.assertTrue(
driver.find_element(By.XPATH, '//*[@id="csc-page-reminder"]/div//label//div//input').get_attribute("value") == '12:00',
"Time has not been changed")
filename = 0
def test_security(self):
global customers
global filename
filename = "test_security.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Call Forwarding' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Forwarding")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-call-forwarding"]')) > 0, "Conference page wasnt opened")
print("OK")
print("Create a call forwarding 'if available'...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]/div[1]/button/span[3]/svg[@class="q-spinner text-primary"]')
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]//button[contains(., "Add forwarding")]/span/svg')
click_js(driver, '//*[@id="csc-page-call-forwarding"]//div//button[contains(., "Add forwarding")]')
click_js(driver, '//div[@data-cy="csc-add-forwarding-available"]')
print("OK")
print("Create a call forwarding 'if not available'...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]/div[1]/button/span[3]/svg[@class="q-spinner text-primary"]')
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]//button[contains(., "Add forwarding")]/span/svg')
click_js(driver, '//*[@id="csc-page-call-forwarding"]//div//button[contains(., "Add forwarding")]')
click_js(driver, '//div[@data-cy="csc-add-forwarding-not-available"]')
print("OK")
print("Create a call forwarding 'if busy'...", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]/div[1]/button/span[3]/svg[@class="q-spinner text-primary"]')
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]//button[contains(., "Add forwarding")]/span/svg')
click_js(driver, '//*[@id="csc-page-call-forwarding"]//div//button[contains(., "Add forwarding")]')
click_js(driver, '//div[@data-cy="csc-add-forwarding-busy"]')
print("OK")
print("Add test string to all call forwardings", end="")
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]/div[1]/button/span[3]/svg[@class="q-spinner text-primary"]')
wait_for_invisibility(driver, '//*[@id="csc-page-call-forwarding"]//button[contains(., "Add forwarding")]/span/svg')
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div[1]//div/span[contains(., "Number")]').click()
fill_element(driver, "/html/body//label//div//input", "checking <script>alert('test')</script> asdфывфів123!@#$%^&*()_+[]\\|}{;'\":,./?><EOL")
driver.find_element(By.XPATH, '/html/body//div/button[contains(., "Set")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]//div[contains(., "Failed to create cfdestinationset.")]')) > 0, "Illegal call foward was created")
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div[2]//div/span[contains(., "Number")]').click()
fill_element(driver, "/html/body//label//div//input", "checking <script>alert('test')</script> asdфывфів123!@#$%^&*()_+[]\\|}{;'\":,./?><EOL")
driver.find_element(By.XPATH, '/html/body//div/button[contains(., "Set")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]//div[contains(., "Failed to create cfdestinationset.")]')) > 0, "Illegal call foward was created")
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
driver.find_element(By.XPATH, '//*[@id="csc-wrapper-call-forwarding"]/div[3]//div/span[contains(., "Number")]').click()
fill_element(driver, "/html/body//label//div//input", "checking <script>alert('test')</script> asdфывфів123!@#$%^&*()_+[]\\|}{;'\":,./?><EOL")
driver.find_element(By.XPATH, '/html/body//div/button[contains(., "Set")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '/html/body//div[@role="alert"]//div[contains(., "Failed to create cfdestinationset.")]')) > 0, "Illegal call foward was created")
wait_for_invisibility(driver, '//*[@id="csc-wrapper-call-forwarding"]/div/div[2]/div[4]/svg')
print("OK")
filename = 0
def test_speed_dial(self):
global customers
global filename
filename = "test_speed_dial.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Call Forwarding' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Speed Dial")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-speed-dial"]')) > 0, "Speed dial page wasnt opened")
print("OK")
print("Try to create a new Speed Dial...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-speed-dial"]//div/button').click()
driver.find_element(By.XPATH, '//*[@id="csc-page-speed-dial"]//div/label').click()
driver.find_element(By.XPATH, '//*[contains(., "*5")]').click()
fill_element(driver, '//*[@id="csc-page-speed-dial"]//div/label[2]//div/input[@aria-label="Destination"]', "testination")
click_js(driver, '//*[@id="csc-page-speed-dial"]//button[contains(., "Save")]')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-speed-dial"]//div[@data-cy="csc-speeddial-whendial"][contains(., "When I dial *6")]')) > 0,
"Speed dial button is not correct")
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-speed-dial"]//div[@data-cy="csc-speeddial-ring"][contains(., "testination")]')) > 0,
"Speed dial destination is not correct")
print("OK")
print("Try to delete the speed dial...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-speed-dial"]//div//button[@data-cy="csc-speeddial-more"]').click()
driver.find_element(By.XPATH, '/html/body//div[@data-cy="csc-speeddial-remove"]').click()
driver.find_element(By.XPATH, '/html/body/div[3]/div/div[2]/div/div[3]/button[2]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-speed-dial"]/div[2]/div[contains(., "No speed dials found")]')) > 0,
"Speed dial was not deleted")
filename = 0
def test_voicebox(self):
global customers
global filename
filename = "test_voicebox.png"
driver = self.driver
driver.get(os.environ['CATALYST_SERVER'])
print("Try to log in with valid credentials...", end="")
login_csc(driver, "testuser@" + self.domainname, 'Rand0m#PasswOrd#12345#')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-header-toolbar-main"]')) > 0, "Login wasnt successful")
print("OK")
print("Go to 'Call Forwarding' page...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div[contains(., "Call Settings")]').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="csc-main-menu-top"]//div/a[contains(., "Voicebox")]').click()
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]')) > 0, "Conference page wasnt opened")
print("OK")
print("Try to enter invalid PIN...", end="")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change PIN"]')))
fill_element(driver, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change PIN"]', "asdf")
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]//div/i[contains(., "error")]')) > 0,
"Wrong PIN has not been detected")
print("OK")
print("Try to enter valid PIN...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div/button[contains(., "Undo")]').click()
fill_element(driver, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change PIN"]', "12345")
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div//button[contains(., "Save")]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-voicebox"]//div/label[aria-disabled="true"]//input[@data-cy="voicebox-change-pin"]')
self.assertTrue(
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change PIN"]').get_attribute("value") == "12345",
"Changed PIN is not correct")
print("OK")
print("Try to enter an invalid Email...", end="")
fill_element(driver, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change Email"]', "test")
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]//div/i[contains(., "error")]')) > 0,
"Wrong Email has not been detected")
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div/button[contains(., "Undo")]').click()
fill_element(driver, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change Email"]', "test@test")
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]//div/i[contains(., "error")]')) > 0,
"Wrong Email has not been detected")
print("OK")
print("Try to enter a valid Email...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div/button[contains(., "Undo")]').click()
fill_element(driver, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change Email"]', "test@test.com")
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div//button[contains(., "Save")]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-voicebox"]//div/label[aria-disabled="true"]//input[@data-cy="voicebox-change-email"]')
self.assertTrue(
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div//input[@aria-label="Change Email"]').get_attribute("value") == "test@test.com",
"Changed Email is not correct")
print("OK")
print("Try to disable 'Attach voicemail to email' setting...", end="")
driver.find_element(By.XPATH, '//*[@id="csc-page-voicebox"]//div[@aria-label="Attach voicemail to email notification"]').click()
wait_for_invisibility(driver, '//*[@id="csc-page-voicebox"]/div/div[3]/div[2]/svg')
self.assertTrue(
len(driver.find_elements(By.XPATH, '//*[@id="csc-page-voicebox"]/div/div[5]/div[1]/div[@aria-disabled="true"]')) > 0,
"Setting was not disabled")
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('----------------------------------------------------------------------')
print('Preparing Domain, Customer and Subscriber for NGCP CSC tests ...')
try:
preparation()
except Exception as e:
print('Preperation failed! See log below for more details')
print('----------------------------------------------------------------------')
traceback.print_exc()
print('----------------------------------------------------------------------')
quit(1)
print('Preperation successful, running tests now ...')
print('----------------------------------------------------------------------')
nose2.main(exit=False)
try:
cleanup()
except Exception as e:
traceback.print_exc()
quit(1)

@ -1,78 +0,0 @@
#!/bin/bash
if ! [ -f /.dockerenv ] && ! grep -q 'devices:/docker' /proc/1/cgroup ; then
echo "Not running inside docker, exiting to avoid data damage." >&2
exit 1
fi
set -e
set -u
PASSWORD="selenium"
if [ -z "${1:-}" ] ; then
echo "Usage: $0 <testsystem> [<output_directory>] [junit] [test_plan]" >&2
echo
echo "Usage examples:
$0 1.2.3.4
$0 1.2.3.4 /code/ tap"
exit 1
fi
SERVER="${1}"
OUTPUT_DIRECTORY="${2:-/code/}"
OUTPUT_TYPE=${3:-}
shift; shift; shift # remove first three argv to use ${@} below.
# vnc
echo "Setting VNC password"
printf '%s\n%s\n\n' "${PASSWORD}" "${PASSWORD}" | vncpasswd >/dev/null
PASSWORD_ENCODED=$(hexdump -v -e '"\\""x" 1/1 "%02X"' < "${HOME}/.vnc/passwd")
xvnc_process=$(pgrep -f 'Xtigervnc :99' || true)
export DISPLAY=":99"
if [ -n "${xvnc_process:-}" ] ; then
echo "Warning: existing VNC server found, not restarting Xtigervnc process (PID: $xvnc_process)."
else
echo "Starting VNCserver on display :99"
vncserver -localhost no -geometry 1280x1024 :99
fi
echo "################################################################################"
echo "Firefox version:"
firefox --version
# ensure we don't leave any process behind causing problems with re-execution
pkill -f 'geckodriver' || true
echo "################################################################################"
echo "Finished main setup, now running tests ..."
echo "Selenium server log file available at /home/selenium/selenium.log"
echo "Watch at test runs by connecting via VNC (password: '${PASSWORD}'):"
echo "echo -e '$PASSWORD_ENCODED' >/tmp/vncpasswd ; vncviewer geometry=1280x1024x16 passwd=/tmp/vncpasswd localhost:5999"
RC=0
export CATALYST_SERVER="https://${SERVER}"
cd t/selenium
if [ "${OUTPUT_TYPE:-}" = "junit" ] ; then
#Change thread count here and in nose2cfg/jenkinstest.cfg
export THREADS=2
export JENKINS=1
python3 testrun.py -v -c nose2cfg/jenkinstest.cfg | \
tee -a "${OUTPUT_DIRECTORY}/selenium.xml"
RC="${PIPESTATUS[0]}"
else
#Change thread count here and in nose2cfg/localtest.cfg
export THREADS=1
python3 testrun.py -v -c nose2cfg/localtest.cfg|| RC=$?
fi
echo "Finished test execution, test execution returned with exit code ${RC}."
if [ -f "${OUTPUT_DIRECTORY}/selenium.xml" ] ; then
echo "Test results available at '${OUTPUT_DIRECTORY}/selenium.xml'"
fi
echo "################################################################################"
exit "${RC}"

@ -1,69 +0,0 @@
{
"frozen": {
"app.update.auto": false,
"app.update.enabled": false,
"browser.displayedE10SNotice": 4,
"browser.download.manager.showWhenStarting": false,
"browser.EULA.override": true,
"browser.EULA.3.accepted": true,
"browser.link.open_external": 2,
"browser.link.open_newwindow": 2,
"browser.offline": false,
"browser.reader.detectedFirstArticle": true,
"browser.safebrowsing.enabled": false,
"browser.safebrowsing.malware.enabled": false,
"browser.search.update": false,
"browser.selfsupport.url" : "",
"browser.sessionstore.resume_from_crash": false,
"browser.shell.checkDefaultBrowser": false,
"browser.tabs.warnOnClose": false,
"browser.tabs.warnOnOpen": false,
"datareporting.healthreport.service.enabled": false,
"datareporting.healthreport.uploadEnabled": false,
"datareporting.healthreport.service.firstRun": false,
"datareporting.healthreport.logging.consoleEnabled": false,
"datareporting.policy.dataSubmissionEnabled": false,
"datareporting.policy.dataSubmissionPolicyAccepted": false,
"devtools.errorconsole.enabled": true,
"dom.disable_open_during_load": false,
"extensions.autoDisableScopes": 10,
"extensions.blocklist.enabled": false,
"extensions.checkCompatibility.nightly": false,
"extensions.update.enabled": false,
"extensions.update.notifyUser": false,
"javascript.enabled": true,
"network.manage-offline-status": false,
"network.http.phishy-userpass-length": 255,
"offline-apps.allow_by_default": true,
"prompts.tab_modal.enabled": false,
"security.fileuri.origin_policy": 3,
"security.fileuri.strict_origin_policy": false,
"signon.rememberSignons": false,
"toolkit.networkmanager.disable": true,
"toolkit.telemetry.prompted": 2,
"toolkit.telemetry.enabled": false,
"toolkit.telemetry.rejected": true,
"xpinstall.signatures.required": false,
"xpinstall.whitelist.required": false
},
"mutable": {
"browser.dom.window.dump.enabled": true,
"browser.laterrun.enabled": false,
"browser.newtab.url": "about:blank",
"browser.newtabpage.enabled": false,
"browser.startup.page": 0,
"browser.startup.homepage": "about:blank",
"browser.startup.homepage_override.mstone": "ignore",
"browser.usedOnWindows10.introURL": "about:blank",
"dom.max_chrome_script_run_time": 30,
"dom.max_script_run_time": 30,
"dom.report_all_js_exceptions": true,
"javascript.options.showInConsole": true,
"network.captive-portal-service.enabled": false,
"security.csp.enable": false,
"startup.homepage_welcome_url": "about:blank",
"startup.homepage_welcome_url.additional": "about:blank",
"webdriver_accept_untrusted_certs": true,
"webdriver_assume_untrusted_issuer": true
}
}
Loading…
Cancel
Save