End to end functionality
This commit is contained in:
@@ -5,7 +5,7 @@ environment:
|
||||
password: ""
|
||||
contract_files_path: "C:\\Ankit\\Marked Up PDFs\\test\\"
|
||||
contract_files:
|
||||
- '050540697 Deepak Nanda 2017 PHSP MU.pdf'
|
||||
- '050540697 Deepak Nanda 2017 PHSP MU1.pdf'
|
||||
- '2014-01-01 United Health Centers San Joaquin AMD MU (1).pdf'
|
||||
- '2019 06 01 Dr Raul Rivera & Associates (Amend 1)_MU.pdf'
|
||||
- 'Bay Ridge Medical Imaging Universal (113045841) MU.pdf'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
from utils.common_methods import get_element, get_clickable_element
|
||||
from utils.element_related_methods import get_element, get_clickable_element
|
||||
|
||||
|
||||
class Email_sign_in_page:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from utils.common_methods import get_clickable_element, get_element
|
||||
from utils.element_related_methods import get_clickable_element, get_element
|
||||
|
||||
|
||||
class Password_sign_in_page:
|
||||
|
||||
@@ -2,7 +2,7 @@ from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as ec
|
||||
|
||||
from utils.common_methods import get_clickable_element
|
||||
from utils.element_related_methods import get_clickable_element
|
||||
|
||||
|
||||
class Pre_sign_in_page:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from utils.common_methods import get_clickable_element
|
||||
from utils.element_related_methods import get_clickable_element
|
||||
|
||||
|
||||
class Remember_sign_in_page:
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
import random
|
||||
import time
|
||||
|
||||
from selenium.common import InvalidArgumentException
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
from utils.common_methods import get_clickable_element, get_element, get_invisible_element
|
||||
from utils.element_related_methods import get_clickable_element, get_element, get_invisible_element
|
||||
from utils.logger import get_logger
|
||||
|
||||
|
||||
class Interface_0:
|
||||
logger = get_logger()
|
||||
p_element = None
|
||||
|
||||
def __init__(self, driver):
|
||||
self.driver = driver
|
||||
self.client_name_dropdown = get_clickable_element(driver, By.XPATH,
|
||||
'/html/body/div/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[3]/div[2]/div/div/div/div/div/div/div')
|
||||
# self.file_input = self.driver.find_element(By.XPATH, "//input[@type='file']")
|
||||
|
||||
self.create_batch_btn = self.driver.find_element(By.XPATH, "//div[@data-testid='stButton']/button[@data-testid='baseButton-secondary']")
|
||||
|
||||
def select_client(self):
|
||||
self.client_name_dropdown.click()
|
||||
@@ -26,29 +25,36 @@ class Interface_0:
|
||||
random_number = random.randint(1, len(client_list) - 1)
|
||||
time.sleep(1)
|
||||
self.logger.info(f"Selected Client Name: {client_list[random_number].text}")
|
||||
client_name = client_list[random_number].text
|
||||
client_list[random_number].click()
|
||||
time.sleep(5)
|
||||
return client_name
|
||||
|
||||
def upload_files(self, config):
|
||||
# file_input = self.driver.find_element(By.XPATH, "//input[@type='file']")
|
||||
file_input = get_invisible_element(self.driver, By.XPATH, "//input[@type='file']")
|
||||
contract_files = config["contract_files"]
|
||||
random_count = random.randint(1, len(contract_files))
|
||||
random_elements = random.sample(contract_files, random_count)
|
||||
contracts = f'\n{config['contract_files_path']}'.join(random_elements)
|
||||
self.logger.info(f"Selected Contract File Name: {', '.join(random_elements)}")
|
||||
file_input.send_keys(f"{config['contract_files_path']}{contracts}")
|
||||
time.sleep(1)
|
||||
WebDriverWait(self.driver, timeout=50).until(
|
||||
lambda browser: len(browser.find_elements(By.XPATH, '//div[@role="progressbar"]')) == 0
|
||||
)
|
||||
time.sleep(5)
|
||||
try:
|
||||
file_input = get_invisible_element(self.driver, By.XPATH, "//input[@type='file']")
|
||||
contract_files = config["contract_files"]
|
||||
random_count = random.randint(1, len(contract_files))
|
||||
random_elements = random.sample(contract_files, random_count)
|
||||
contracts = f'\n{config['contract_files_path']}'.join(random_elements)
|
||||
self.logger.info(f"Selected Contract File Name: {', '.join(random_elements)}")
|
||||
file_input.send_keys(f"{config['contract_files_path']}{contracts}")
|
||||
time.sleep(1)
|
||||
WebDriverWait(self.driver, timeout=50).until(
|
||||
lambda browser: len(browser.find_elements(By.XPATH, '//div[@role="progressbar"]')) == 0
|
||||
)
|
||||
time.sleep(5)
|
||||
except InvalidArgumentException:
|
||||
self.logger.info(f"File not found in test folder{', '.join(random_elements)}")
|
||||
except:
|
||||
self.logger.info(f"Exception occur")
|
||||
|
||||
def create_batch(self):
|
||||
create_batch_btn = self.driver.find_element(By.XPATH, "//div[@data-testid='stButton']/button[@data-testid='baseButton-secondary']")
|
||||
create_batch_btn.click()
|
||||
self.logger.info("Creating batch")
|
||||
time.sleep(3)
|
||||
p_element = get_element(self.driver, By.XPATH, "//p[starts-with(., 'batch')]")#self.driver.find_element("//p[starts-with(., 'batch')]")
|
||||
self.logger.info(f"Created batch with Batch ID: {p_element.text}")
|
||||
self.p_element = get_element(self.driver, By.XPATH, "//p[starts-with(., 'batch')]")
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
import random
|
||||
import time
|
||||
|
||||
from selenium.common import InvalidArgumentException
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
from utils.element_related_methods import get_clickable_element, get_element, get_invisible_element
|
||||
from utils.logger import get_logger
|
||||
|
||||
|
||||
class Interface_1:
|
||||
logger = get_logger()
|
||||
selected_batch = ''
|
||||
result_message = None
|
||||
p_element = None
|
||||
def __init__(self, driver):
|
||||
self.driver = driver
|
||||
self.client_name_dropdown = get_clickable_element(driver, By.XPATH,
|
||||
'/html/body/div/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[3]/div[2]/div/div/div/div/div/div/div')
|
||||
|
||||
def select_client(self):
|
||||
self.client_name_dropdown.click()
|
||||
client_list = self.driver.find_elements(By.XPATH, "//li")
|
||||
assert len(client_list) > 0
|
||||
random_number = random.randint(1, len(client_list) - 1)
|
||||
time.sleep(1)
|
||||
self.logger.info(f"Selected Client Name: {client_list[random_number].text}")
|
||||
client_list[random_number].click()
|
||||
time.sleep(5)
|
||||
|
||||
def select_batch(self):
|
||||
batch_id = get_clickable_element(self.driver, By.XPATH, '/html/body/div[1]/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[3]/div[2]/div/div/div/div/div/div/div')
|
||||
batch_id.click()
|
||||
batch_id_list = self.driver.find_elements(By.XPATH, "//li")
|
||||
assert len(batch_id_list) > 0
|
||||
random_number = random.randint(2, len(batch_id_list) - 1)
|
||||
self.selected_batch = batch_id_list[random_number].text
|
||||
self.logger.info(f"Selected Batch: {batch_id_list[random_number].text}")
|
||||
batch_id_list[random_number].click()
|
||||
time.sleep(5)
|
||||
|
||||
def check_group_no(self):
|
||||
checkbox_list = self.driver.find_elements(By.XPATH, "//div[@data-testid='stCheckbox']")
|
||||
assert len(checkbox_list) > 0
|
||||
random_number = random.randint(0, len(checkbox_list) - 1)
|
||||
random_elements = random.sample(checkbox_list, random_number)
|
||||
checked_groups = ''
|
||||
for checkbox in random_elements:
|
||||
checkbox.click()
|
||||
checked_groups = f'{checked_groups}{checkbox.text}, '
|
||||
self.logger.info(f"checked Group No.: {checked_groups[:-2]}")
|
||||
time.sleep(5)
|
||||
|
||||
def click_read_the_contracts_from_path(self):
|
||||
read_the_contracts_from_path_btn = get_clickable_element(self.driver, By.XPATH, '/html/body/div[1]/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[6]/div/button')
|
||||
read_the_contracts_from_path_btn.click()
|
||||
time.sleep(5)
|
||||
|
||||
def check_table_contain(self):
|
||||
result_table = self.driver.find_element(By.XPATH, "//table[@aria-colcount='9']")
|
||||
rows = result_table.find_elements(By.XPATH, ".//tbody/tr")
|
||||
if len(rows) > 0:
|
||||
self.logger.info(f"{len(rows)} contracts are read from batch: {self.selected_batch}")
|
||||
assert True
|
||||
else:
|
||||
assert False
|
||||
time.sleep(5)
|
||||
|
||||
def click_run_doczy_ai_pipeline(self):
|
||||
run_doczy_ai_pipeline_btn = get_clickable_element(self.driver, By.XPATH, '/html/body/div[1]/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[11]/div[2]/div/div/div/div/div/button')
|
||||
run_doczy_ai_pipeline_btn.click()
|
||||
time.sleep(3)
|
||||
self.result_message = get_element(self.driver, By.XPATH, "//p[starts-with(., 'Success')]")
|
||||
time.sleep(3)
|
||||
@@ -1,2 +1,2 @@
|
||||
[pytest]
|
||||
addopts = --html=reports/test_report.html
|
||||
addopts = --html=reports/test_report.html --json=reports/test_report.json
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="title">test_report.html</h1>
|
||||
<p>Report generated on 10-May-2024 at 01:48:45 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a>
|
||||
<p>Report generated on 17-May-2024 at 12:39:54 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a>
|
||||
v4.1.1</p>
|
||||
<div id="environment-header">
|
||||
<h2>Environment</h2>
|
||||
@@ -61,7 +61,7 @@
|
||||
<h2>Summary</h2>
|
||||
<div class="additional-summary prefix">
|
||||
</div>
|
||||
<p class="run-count">1 test took 00:01:37.</p>
|
||||
<p class="run-count">1 test took 00:00:09.</p>
|
||||
<p class="filter">(Un)check the boxes to filter the results.</p>
|
||||
<div class="summary__reload">
|
||||
<div class="summary__reload__button hidden" onclick="location.reload()">
|
||||
@@ -108,7 +108,7 @@
|
||||
</table>
|
||||
</body>
|
||||
<footer>
|
||||
<div id="data-container" data-jsonblob="{"environment": {"Python": "3.12.3", "Platform": "Windows-10-10.0.19045-SP0", "Packages": {"pytest": "8.2.0", "pluggy": "1.5.0"}, "Plugins": {"html": "4.1.1", "metadata": "3.1.1"}}, "tests": {"tests/test_interface_0.py::Test_interface_0::test_verify_batch_creation": [{"extras": [], "result": "Passed", "testId": "tests/test_interface_0.py::Test_interface_0::test_verify_batch_creation", "duration": "00:01:37", "resultsTableRow": ["<td class=\"col-result\">Passed</td>", "<td class=\"col-testId\">tests/test_interface_0.py::Test_interface_0::test_verify_batch_creation</td>", "<td class=\"col-duration\">00:01:37</td>", "<td class=\"col-links\"></td>"], "log": "----------------------------- Captured stderr call -----------------------------\n2024-05-10 01:47:06.388 | INFO | tests.test_interface_0:test_verify_batch_creation:52 - Verifying S3 bucket is created with batch ID\n2024-05-10 01:47:10.485 | INFO | tests.test_interface_0:test_verify_batch_creation:56 - Signed in successful\n2024-05-10 01:47:14.265 | INFO | pages.interface_0_page_objects:select_client:28 - Selected Client Name: Aetna Life Insurance Company\n2024-05-10 01:47:19.349 | INFO | pages.interface_0_page_objects:upload_files:39 - Selected Contract File Name: ICMProviderAgreement_AlisonUnitisLPCMH_227710_5.pdf, Boilerplate_TX Amendment Mission Health Network effective_040114 MU.pdf, BoilerplateAnc_Boro Park Obstetrics &amp; Gynecology PC - Amendment 11.2.12_MU.pdf, Boilerplate_Prof_Premier Health Specialists Inc Third Amendment_A.4_20160101_MU.pdf, 2019 06 01 Dr Raul Rivera &amp; Associates (Amend 1)_MU.pdf, Custom_Prof_Anna Suponya MD PC - Agreement Provider Signed_MU (1).pdf, Bay Ridge Medical Imaging Universal (113045841) MU.pdf, Custom_TX - MP AMENDMENT - MISSION HEALTH NETWORK - MU.pdf, Delaware First Health_First State Homecare Agency_212260_7 MU.pdf, 050540697 Deepak Nanda 2017 PHSP MU.pdf, Prof1_ICM135705_ICMProviderAgreement_135705 IPA of NJ MU.pdf, 2014-01-01 United Health Centers San Joaquin AMD MU (1).pdf, Molina Healthcare of Texas, Inc. Amendment 4 - HIX ACA__EFF 01012016_MU.pdf\n2024-05-10 01:48:08.007 | INFO | pages.interface_0_page_objects:create_batch:50 - Creating batch\n2024-05-10 01:48:36.247 | INFO | pages.interface_0_page_objects:create_batch:53 - Created batch with Batch ID: batch_090524201810 created\n"}]}, "renderCollapsed": ["passed"], "initialSort": "result", "title": "test_report.html"}"></div>
|
||||
<div id="data-container" data-jsonblob="{"environment": {"Python": "3.12.3", "Platform": "Windows-10-10.0.19045-SP0", "Packages": {"pytest": "8.2.0", "pluggy": "1.5.0"}, "Plugins": {"html": "4.1.1", "json": "0.4.0", "metadata": "3.1.1"}}, "tests": {"tests/test_interface_0.py::Test_interface_0::test_validate_navigation": [{"extras": [], "result": "Passed", "testId": "tests/test_interface_0.py::Test_interface_0::test_validate_navigation", "duration": "00:00:09", "resultsTableRow": ["<td class=\"col-result\">Passed</td>", "<td class=\"col-testId\">tests/test_interface_0.py::Test_interface_0::test_validate_navigation</td>", "<td class=\"col-duration\">00:00:09</td>", "<td class=\"col-links\"></td>"], "log": "----------------------------- Captured stderr call -----------------------------\n2024-05-17 12:39:42.555 | INFO | tests.test_interface_0:test_validate_navigation:17 - Verifying designated Interface 0 Page opens successfully\n2024-05-17 12:39:48.030 | INFO | tests.test_interface_0:test_validate_navigation:21 - Designated Interface 0 Page opened successfully\n"}]}, "renderCollapsed": ["passed"], "initialSort": "result", "title": "test_report.html"}"></div>
|
||||
<script>
|
||||
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
||||
const { getCollapsedCategory, setCollapsedIds } = require('./storage.js')
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"report": {"environment": {"Python": "3.12.3", "Platform": "Windows-10-10.0.19045-SP0"}, "tests": [{"name": "tests/test_interface_0.py::Test_interface_0::test_validate_navigation", "duration": 10.97751930000959, "run_index": 0, "setup": {"name": "setup", "duration": 1.6643610000028275, "outcome": "passed"}, "call": {"name": "call", "duration": 5.477519999985816, "outcome": "passed", "stderr": "2024-05-17 12:39:42.555 | INFO | tests.test_interface_0:test_validate_navigation:17 - Verifying designated Interface 0 Page opens successfully\n2024-05-17 12:39:48.030 | INFO | tests.test_interface_0:test_validate_navigation:21 - Designated Interface 0 Page opened successfully\n"}, "teardown": {"name": "teardown", "duration": 2.1712773000181187, "outcome": "passed"}, "outcome": "passed"}], "summary": {"passed": 1, "num_tests": 1, "duration": 13.407023668289185}, "created_at": "2024-05-17 12:39:54.266609"}}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,61 @@
|
||||
import random
|
||||
import time
|
||||
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
|
||||
from pages.Pre_sign_in_page import Pre_sign_in_page
|
||||
from pages.interface_0_page_objects import Interface_0
|
||||
from pages.interface_1_page_objects import Interface_1
|
||||
from utils.common_methods import sign_in
|
||||
from utils.element_related_methods import get_title, get_invisible_element
|
||||
from utils.logger import get_logger
|
||||
|
||||
|
||||
class Test_end_to_end:
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
def test_validate_navigation(self, driver, config):
|
||||
self.logger.info("Verifying S3 bucket is created with batch ID")
|
||||
driver.get(config['url_interface_0'])
|
||||
sign_in(driver, config)
|
||||
self.logger.info("Signed in successful")
|
||||
interface_0_page = Interface_0(driver)
|
||||
interface_0_page.select_client()
|
||||
interface_0_page.upload_files(config)
|
||||
interface_0_page.create_batch()
|
||||
self.logger.info(f"Created batch with Batch ID: {interface_0_page.p_element.text}")
|
||||
self.logger.info("Verifying Single Sign-On (SSO) Login for Interface 1")
|
||||
driver.get(config['url_interface_1'])
|
||||
# sign_in(driver, config)
|
||||
pre_sign_in_page = Pre_sign_in_page(driver)
|
||||
pre_sign_in_page.click_sign_in_link()
|
||||
self.logger.info("Signed in successful")
|
||||
get_title(driver, "interface_1 · Streamlit")
|
||||
interface_1 = Interface_1(driver)
|
||||
interface_1.select_client()
|
||||
interface_1.select_batch()
|
||||
interface_1.check_group_no()
|
||||
interface_1.click_read_the_contracts_from_path()
|
||||
interface_1.check_table_contain()
|
||||
interface_1.click_run_doczy_ai_pipeline()
|
||||
if interface_1.result_message.text is "Success":
|
||||
self.logger.info(f"Files are passed to Doczy.AI pipeline")
|
||||
assert True
|
||||
else:
|
||||
self.logger.info(f"Files are passed to Doczy.AI pipeline")
|
||||
assert True
|
||||
|
||||
# def test_verify_sign_in(self, driver, config):
|
||||
# self.logger.info("Verifying Single Sign-On (SSO) Login for Interface 0")
|
||||
# driver.get(config['url_interface_0'])
|
||||
# sign_in(driver, config)
|
||||
# self.logger.info("Signed in successful")
|
||||
# get_title(driver, "interface_0 · Streamlit")
|
||||
# if driver.title == 'interface_0 · Streamlit':
|
||||
# self.logger.info("Interface 0 page opened successfully")
|
||||
# assert True
|
||||
# else:
|
||||
# self.logger.info("Interface 0 page not opened successfully")
|
||||
# assert False
|
||||
@@ -1,9 +1,11 @@
|
||||
import random
|
||||
import time
|
||||
|
||||
from selenium.common import InvalidArgumentException
|
||||
|
||||
from pages.interface_0_page_objects import Interface_0
|
||||
from utils.common_methods import get_title
|
||||
from utils.common_methods2 import sign_in
|
||||
from utils.element_related_methods import get_title
|
||||
from utils.common_methods import sign_in
|
||||
from utils.logger import get_logger
|
||||
|
||||
|
||||
@@ -50,14 +52,15 @@ class Test_interface_0:
|
||||
|
||||
def test_verify_batch_creation(self, driver, config):
|
||||
self.logger.info("Verifying S3 bucket is created with batch ID")
|
||||
driver.get("https://doczy.aarete.com:8500/?code=0.AVsA57e_zrnCv0-sKQYbnoaPz5D--u_XfqNDqwMZoL4vF1hbAN8.AgABBAIAAADnfolhJpSnRYB1SVj-Hgd8AgDs_wUA9P_RZqy1FCzyPP5scMnkTe8faDovl-TipWlCQv5NMzUDPBxfg3EZU5RLyv3xgJnUHQxcuO1FNR_WCmKJKB8FhTu5_5sas33OydEDE6Jdi9xRo_N_80v4ZmA4LzNQThwVak0kyMKWIAQYILSs7SpPVfsUvcfj0c9Gk75dbJSqKCbaWZ8yfut4eMypIMVbjIUSd3mZp_mwr1fwCDUYOt2gmJ38i1FE_hRitH41rEP1yjIkMLgKn9BVpP7cpwbpo2LpPUZnejhWeE6mhKmnsD1yIp_a7ymsdzVM6lca3C2Ufr3TQAqcO2TxzqKUxmQQ89n6VIkIewc-LPZM6PmW-AhIYdJG1bTI2qvWHgDliKSvm_FfW4x_FYqCNwVTiXrNlhr1LBbGqQvMq51Im8aFebngRM9M-LJHpaYM2lK5VmhxxnBK_oy4ajGfndjhWY2R0vFZUHDIXwdc1A5ZfXZLvmrv2T55oUACm5uOyoZzRXgQW2ZeRwiuGP_G6DMGvjVZy4ktPsKBWMlnYXd8PcSsNF4d6nLzxDyPoL5tzIm6qvR-K3Xs8xDTG1ONV4mQaIc-GP2Y2_aNqRpf0oYgtHdP-VGe3VDWGjgTfbkL351Wz3AvZJkT7oN85poJrhDLO_rIB_7neM7jIevdLslq8sto01KcwGFShdqcaWeMNKIja6Pta3Q48lYjIDAy5LCXSoQNrJDZl_dQewUi3QH1jB9pqaXl57_xqP5CvEy_NdBe8FOmUg&session_state=7515cdc9-6fd7-4e93-b526-f0a3c23401fd#")
|
||||
#(config['url_interface_0'])
|
||||
# sign_in(driver, config)
|
||||
driver.get(config['url_interface_0'])
|
||||
sign_in(driver, config)
|
||||
self.logger.info("Signed in successful")
|
||||
interface_0_page = Interface_0(driver)
|
||||
interface_0_page.select_client()
|
||||
interface_0_page.upload_files(config)
|
||||
interface_0_page.create_batch()
|
||||
self.logger.info(f"Created batch with Batch ID: {interface_0_page.p_element.text}")
|
||||
assert interface_0_page.p_element.text.startswith("batch_")
|
||||
|
||||
def test_verify_no_files_uploaded(self, driver, config):
|
||||
self.logger.info("Verifying S3 bucket is created with batch ID")
|
||||
@@ -67,6 +70,13 @@ class Test_interface_0:
|
||||
interface_0_page = Interface_0(driver)
|
||||
interface_0_page.select_client()
|
||||
interface_0_page.create_batch()
|
||||
# self.logger.info(f"Created batch with Batch ID: {p_element.text}")
|
||||
# try:
|
||||
assert interface_0_page.p_element.text is "Select files to create batch", "Batch ID is created instead of message"
|
||||
# except AssertionError:
|
||||
# self.logger.info(f"Batch ID is created instead of message")
|
||||
# assert False
|
||||
|
||||
|
||||
# def test_multiple_files(self, driver, config):
|
||||
# contract_files = config["contract_files"]
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
from pages.interface_1_page_objects import Interface_1
|
||||
from utils.element_related_methods import get_title
|
||||
from utils.common_methods import sign_in
|
||||
from utils.logger import get_logger
|
||||
|
||||
|
||||
class Test_interface_1:
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
def test_validate_navigation(self, driver, config):
|
||||
self.logger.info("Verifying designated Interface 1 Page opens successfully")
|
||||
driver.get(config['url_interface_1'])
|
||||
self.logger.info(f"url_interface_1 {config['url_interface_1']} opened")
|
||||
get_title(driver, "interface_1 · Streamlit")
|
||||
if driver.title == 'interface_1 · Streamlit':
|
||||
self.logger.info("Designated Interface 1 Page opened successfully")
|
||||
assert True
|
||||
else:
|
||||
self.logger.info("Designated Interface 1 Page not opened successfully")
|
||||
assert False
|
||||
|
||||
def test_verify_sign_in(self, driver, config):
|
||||
self.logger.info("Verifying Single Sign-On (SSO) Login for Interface 1")
|
||||
driver.get(config['url_interface_1'])
|
||||
sign_in(driver, config)
|
||||
self.logger.info("Signed in successful")
|
||||
get_title(driver, "interface_1 · Streamlit")
|
||||
if driver.title == 'interface_1 · Streamlit':
|
||||
self.logger.info("Interface 1 page opened successfully")
|
||||
assert True
|
||||
else:
|
||||
self.logger.info("Interface 1 page not opened successfully")
|
||||
assert False
|
||||
|
||||
def test_read_contract_from_path(self, driver, config):
|
||||
self.logger.info("Verifying Single Sign-On (SSO) Login for Interface 1")
|
||||
driver.get(config['url_interface_1'])
|
||||
sign_in(driver, config)
|
||||
self.logger.info("Signed in successful")
|
||||
get_title(driver, "interface_1 · Streamlit")
|
||||
interface_1 = Interface_1(driver)
|
||||
interface_1.select_client()
|
||||
interface_1.select_batch()
|
||||
interface_1.check_group_no()
|
||||
interface_1.click_read_the_contracts_from_path()
|
||||
interface_1.check_table_contain()
|
||||
|
||||
def test_run_doczy_ai_pipeline(self, driver, config):
|
||||
self.logger.info("Verifying Single Sign-On (SSO) Login for Interface 1")
|
||||
driver.get(config['url_interface_1'])
|
||||
sign_in(driver, config)
|
||||
self.logger.info("Signed in successful")
|
||||
get_title(driver, "interface_1 · Streamlit")
|
||||
interface_1 = Interface_1(driver)
|
||||
interface_1.select_client()
|
||||
interface_1.select_batch()
|
||||
interface_1.check_group_no()
|
||||
interface_1.click_read_the_contracts_from_path()
|
||||
interface_1.check_table_contain()
|
||||
interface_1.click_run_doczy_ai_pipeline()
|
||||
if interface_1.result_message.text is "Success":
|
||||
self.logger.info(f"Files are passed to Doczy.AI pipeline")
|
||||
assert True
|
||||
else:
|
||||
self.logger.info(f"Files are passed to Doczy.AI pipeline")
|
||||
assert True
|
||||
|
||||
def test_run_doczy_ai_pipeline_without_selecting_group_no(self, driver, config):
|
||||
self.logger.info("Verifying Single Sign-On (SSO) Login for Interface 1")
|
||||
driver.get(config['url_interface_1'])
|
||||
sign_in(driver, config)
|
||||
self.logger.info("Signed in successful")
|
||||
get_title(driver, "interface_1 · Streamlit")
|
||||
interface_1 = Interface_1(driver)
|
||||
interface_1.select_client()
|
||||
interface_1.select_batch()
|
||||
interface_1.click_read_the_contracts_from_path()
|
||||
interface_1.check_table_contain()
|
||||
interface_1.click_run_doczy_ai_pipeline()
|
||||
assert interface_1.result_message.text is "Please select at least one Group No."
|
||||
|
||||
@@ -1,29 +1,15 @@
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as ec
|
||||
|
||||
|
||||
def get_clickable_element(driver, By, element_id):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.element_to_be_clickable((By, element_id))
|
||||
)
|
||||
|
||||
|
||||
def get_element(driver, By, element_id):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.visibility_of_element_located((By, element_id))
|
||||
)
|
||||
|
||||
|
||||
def get_invisible_element(driver, By, element_id):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.presence_of_element_located((By, element_id))
|
||||
)
|
||||
|
||||
|
||||
def get_title(driver, title):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.title_contains(title)
|
||||
)
|
||||
|
||||
from pages.Email_sign_in_page import Email_sign_in_page
|
||||
from pages.Password_sign_in_page import Password_sign_in_page
|
||||
from pages.Pre_sign_in_page import Pre_sign_in_page
|
||||
from pages.Remember_sign_in_page import Remember_sign_in_page
|
||||
|
||||
|
||||
def sign_in(driver, config):
|
||||
pre_sign_in_page = Pre_sign_in_page(driver)
|
||||
pre_sign_in_page.click_sign_in_link()
|
||||
email_sign_in_page = Email_sign_in_page(driver)
|
||||
email_sign_in_page.sign_in(config)
|
||||
password_sign_in_page = Password_sign_in_page(driver)
|
||||
password_sign_in_page.sign_in(config)
|
||||
remember_sign_in_page = Remember_sign_in_page(driver)
|
||||
remember_sign_in_page.click_no_btn()
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
from pages.Email_sign_in_page import Email_sign_in_page
|
||||
from pages.Password_sign_in_page import Password_sign_in_page
|
||||
from pages.Pre_sign_in_page import Pre_sign_in_page
|
||||
from pages.Remember_sign_in_page import Remember_sign_in_page
|
||||
|
||||
|
||||
def sign_in(driver, config):
|
||||
pre_sign_in_page = Pre_sign_in_page(driver)
|
||||
pre_sign_in_page.click_sign_in_link()
|
||||
email_sign_in_page = Email_sign_in_page(driver)
|
||||
email_sign_in_page.sign_in(config)
|
||||
password_sign_in_page = Password_sign_in_page(driver)
|
||||
password_sign_in_page.sign_in(config)
|
||||
remember_sign_in_page = Remember_sign_in_page(driver)
|
||||
remember_sign_in_page.click_no_btn()
|
||||
@@ -0,0 +1,29 @@
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as ec
|
||||
|
||||
|
||||
def get_clickable_element(driver, By, element_id):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.element_to_be_clickable((By, element_id))
|
||||
)
|
||||
|
||||
|
||||
def get_element(driver, By, element_id):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.visibility_of_element_located((By, element_id))
|
||||
)
|
||||
|
||||
|
||||
def get_invisible_element(driver, By, element_id):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.presence_of_element_located((By, element_id))
|
||||
)
|
||||
|
||||
|
||||
def get_title(driver, title):
|
||||
return WebDriverWait(driver, timeout=50).until(
|
||||
ec.title_contains(title)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -4,5 +4,6 @@ from loguru import logger
|
||||
def setup_logger(logfile):
|
||||
logger.add(logfile)
|
||||
|
||||
|
||||
def get_logger():
|
||||
return logger
|
||||
return logger
|
||||
|
||||
@@ -2,5 +2,5 @@ import yaml
|
||||
|
||||
|
||||
def read_yaml(file_path):
|
||||
with open (file_path,'r') as file:
|
||||
return yaml.safe_load(file)
|
||||
with open (file_path, 'r') as file:
|
||||
return yaml.safe_load(file)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@@ -8,3 +10,12 @@ def pytest_runtest_makereport(item, call):
|
||||
|
||||
# if rep.when == "call":
|
||||
|
||||
|
||||
# @pytest.hookimpl(tryfirst=True)
|
||||
# def pytest_html_report_title(report):
|
||||
# """Set the title of the HTML report dynamically."""
|
||||
# current_datetime = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
||||
# report.title = f"Test Report {current_datetime}"
|
||||
|
||||
def pytest_html_report_title(report):
|
||||
report.title = "My very own title!"
|
||||
Reference in New Issue
Block a user