Skip to content
Snippets Groups Projects
Commit b60892f7 authored by Tam Thai Hoang Minh's avatar Tam Thai Hoang Minh
Browse files

Merge branch 'main' into 'main'

Add tests for prototype testing, reduce unnecessary functions

See merge request !11
parents 152b3674 559dff6a
No related branches found
No related tags found
1 merge request!11Add tests for prototype testing, reduce unnecessary functions
......@@ -5,26 +5,13 @@ import re
from urllib.parse import quote
from selenium.webdriver.common.by import By
def click_sign_in(driver, logger, config):
try:
driver.find_element(By.XPATH, "//button[text()='Sign in']").click()
logger.debug("Clicked the Sign In button")
except Exception as e:
error_message = "Failed to load the Sign In button"
logger.error(f"{error_message}: {e}")
email_content = "<!DOCTYPE html><html lang='en'><body><p>Failed to load the Sign In button.</p><p>Steps to Reproduce:</p><ol><li>Navigate to the home page.</li><li>Wait to see if the Sign In button can be loaded.</li></ol></p></body></html>"
email_subject = "Error occurred in the Home page"
send_email(config, email_content, email_subject)
def enter_name(driver, logger, config):
driver.find_element(By.XPATH, "//input[@name='fullName']").send_keys(config["signUp_name"])
logger.debug("Entered name")
def enter_email(driver, logger, config, email_input):
driver.find_element(By.XPATH, "//input[@name='email']").send_keys(email_input)
logger.debug("Entered email")
def sign_in(driver, configInfo):
driver.find_element(By.XPATH, "//button[text()='Sign in']").click()
driver.find_element(By.XPATH, "//input[@name='email']").send_keys(configInfo["signIn_email"])
enter_password(driver, configInfo, "valid", "first_enter")
driver.find_element(By.XPATH, "//button[@type='submit']").click()
def enter_password(driver, logger, config, validity, mode):
def enter_password(driver, config, validity, mode):
if (validity == "valid"):
pass_to_enter = config["correct_password"]
elif (validity == "invalid"):
......@@ -34,27 +21,6 @@ def enter_password(driver, logger, config, validity, mode):
elif (mode == "re_enter"):
path = "//input[@name='confirmPassword']"
driver.find_element(By.XPATH, path).send_keys(pass_to_enter)
logger.debug(f"Entered {validity} password")
def submit_sign_in(driver, logger):
driver.find_element(By.XPATH, "//button[@type='submit']").click()
logger.debug("Clicked the Submit button")
def click_register(driver, logger):
driver.find_element(By.XPATH, "//button[text()='Register']").click()
logger.debug("Clicked the Register button")
def click_select_model(driver, logger):
driver.find_element(By.CSS_SELECTOR, "a[href='/model']").click()
logger.debug("Clicked the Select Model button")
def click_prototype_library(driver, logger):
driver.find_element(By.XPATH, "//label[text()='Prototype Library']").click()
logger.debug("Clicked the Prototype Library button")
def click_create_prototype(driver, logger):
driver.find_element(By.XPATH, "//button[text()='Create New Prototype']").click()
logger.debug("Clicked the Create New Prototype button")
def error_handler(level, logger, configInfo, error_message, exception, email_content, place_occur):
if (level == "critical"):
......@@ -102,7 +68,6 @@ def delete_testing_object(type, driver, logger, configInfo):
except Exception as e:
error_handler("warning", logger, "", f"Failure. Cannot use Postman API to delete the testing {type}.", e, "", "")
# Postman helper functions
def send_email(configInfo, email_content, email_subject, mode):
if (mode == "now"):
url = configInfo["email_url"]
......
{
"web_url": "https://autowrx.digital.auto/",
"email_url": "https://backend-core-dev.digital.auto/v2/emails",
"test_file": "test_no_data.py",
"test_image_path": "C:\\Users\\VUY4HC\\Desktop\\WorkCode\\automation-test-digital-auto\\testing_image.jpg",
"developer_email": "vuy4hc@bosch.com",
"signIn_email": "vuy4hc@bosch.com",
"wrong_password": "31280129850",
......
......@@ -17,10 +17,10 @@ def main():
else:
os.environ["HEADLESS"] = "false"
os.system("pytest -v -s --disable-warnings test_no_data.py")
os.system("pytest -v -s --disable-warnings test_page_traversal.py")
os.system("pytest -v -s --disable-warnings test_signInOut.py")
os.system("pytest -v -s --disable-warnings test_signUp.py")
# os.system("pytest -v -s --disable-warnings test_no_data.py")
# os.system("pytest -v -s --disable-warnings test_page_traversal.py")
# os.system("pytest -v -s --disable-warnings test_signInOut.py")
# os.system("pytest -v -s --disable-warnings test_signUp.py")
os.system("pytest -v -s --disable-warnings test_model.py")
os.system("pytest -v -s --disable-warnings test_prototype.py")
......
......@@ -34,7 +34,7 @@ class Base():
log_dir = configInfo.get("log_dir", "logs") # Default to "logs" if not specified
os.makedirs(log_dir, exist_ok=True) # Ensure the log directory exists
self.log_file_name = os.path.join(log_dir, f"logfile {timestamp}.log")
self.logger = logging.getLogger(configInfo["test_file"])
self.logger = logging.getLogger( )
fileHandler = logging.FileHandler(self.log_file_name)
formatter = logging.Formatter(f"{timestamp} :%(levelname)s: %(filename)s :%(message)s")
fileHandler.setFormatter(formatter)
......
......@@ -7,7 +7,8 @@ class Test_Model(BaseTest, unittest.TestCase):
self.SignIn_createModel() # Also check the dropdown content inside this function
self.check_modelVisibility()
self.add_member_contributor()
self.create_wishlist_API() # NOT DONE
self.create_delete_wishlist_API() # Also create and delete discussion
self.use_API_filter()
delete_testing_object("model", self.driver, self.logger, self.configInfo)
......@@ -17,7 +18,7 @@ class Test_Model(BaseTest, unittest.TestCase):
signIn_button = self.driver.find_element(By.XPATH, "//button[text()='Sign in']")
if (signIn_button.is_displayed()):
self.logger.debug("User is not signing in")
click_select_model(self.driver, self.logger)
self.driver.find_element(By.CSS_SELECTOR, "a[href='/model']").click()
try:
createModel_button = self.driver.find_element(By.XPATH, "//button[contains(text(),'Create New Model')]")
if (createModel_button.is_displayed()):
......@@ -27,27 +28,18 @@ class Test_Model(BaseTest, unittest.TestCase):
self.logger.info("Success. Tested the case of not seeing the 'Create New Model' button when not signing in")
def SignIn_createModel(self):
self.base.beginOfTest_logFormat("SignIn_createModel")
self.logger.info("Started creating new model when signing in")
click_sign_in(self.driver, self.logger, self.configInfo)
enter_email(self.driver, self.logger, self.configInfo, self.configInfo["signIn_email"])
enter_password(self.driver, self.logger, self.configInfo, "valid", "first_enter")
submit_sign_in(self.driver, self.logger)
time.sleep(5) # Explicit wait doesn't work here
click_select_model(self.driver, self.logger)
self.base.beginOfTest_logFormat("SignIn_createModel")
sign_in(self.driver, self.configInfo)
time.sleep(5)
self.driver.find_element(By.CSS_SELECTOR, "a[href='/model']").click()
self.driver.find_element(By.XPATH, "//button[contains(text(),'Create New Model')]").click()
self.logger.debug("Clicked the Create New Model button")
wait = WebDriverWait(self.driver, 5)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, "//img[@src='/imgs/profile.png']")))
self.check_dropdownContent()
# Hit Create New Model button without entering name
try:
self.driver.find_element(By. XPATH, "//button[text()='Create Model']").click()
self.logger.debug("Submitted the Create Model button")
wait = WebDriverWait(self.driver, 2)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, "//label[@class='da-label-small mt-2 text-da-accent-500']")))
message = self.driver.find_element(By.XPATH, "//label[@class='da-label-small mt-2 text-da-accent-500']").text
......@@ -60,9 +52,7 @@ class Test_Model(BaseTest, unittest.TestCase):
try:
expected_name = "Automation Test Model"
self.driver.find_element(By.CSS_SELECTOR, "input[placeholder='Model Name']").send_keys(expected_name)
self.logger.debug("Entered the name for the new model")
self.driver.find_element(By. XPATH, "//button[text()='Create Model']").click()
self.logger.debug("Submitted the Create Model button")
wait = WebDriverWait(self.driver, 4)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, f"//label[text()='{expected_name}']")))
self.logger.debug("Created a new model")
......@@ -70,7 +60,7 @@ class Test_Model(BaseTest, unittest.TestCase):
assert (model_name == expected_name or model_name == 'Model "Automation Test Model" created successfully')
self.logger.info("Success. Verified the name of the new model")
except Exception as e:
error_handler("warning", self.logger, "Failure. Entered new model name is different from resulting new model name", e, "", "")
error_handler("warning", self.logger, self.configInfo, "Failure. Entered new model name is different from resulting new model name", e, "", "")
def check_dropdownContent(self):
self.base.beginOfTest_logFormat("check_dropdownContent")
......@@ -147,8 +137,66 @@ class Test_Model(BaseTest, unittest.TestCase):
result_text = self.driver.find_element(By.XPATH, "//div[@class='py-1 grow']/label").text
assert (result_text == expected_result)
def create_wishlist_API(self):
def create_delete_wishlist_API(self):
self.base.beginOfTest_logFormat("create_delete_wishlist_API")
self.driver.find_element(By.XPATH, "//div[text()='Vehicle APIs']").click()
time.sleep(2)
self.driver.find_element(By.XPATH, "//button[contains(., 'Add Wishlist API')]").click()
self.driver.find_element(By.XPATH, "//input[@name='name']").send_keys("Testing API")
\ No newline at end of file
try:
self.driver.find_element(By.XPATH, "//button[contains(., 'Add Wishlist API')]").click()
self.driver.find_element(By.XPATH, "//input[@name='name']").send_keys("Vehicle")
object = self.driver.find_element(By.XPATH, "//label[contains(text(),'API name must start with')]")
assert (object.text == 'API name must start with "Vehicle."')
time.sleep(3)
self.driver.find_element(By.XPATH, "//input[@name='name']").send_keys(".AutomationTest")
self.driver.find_element(By.XPATH, "//button[text()='Create']").click()
time.sleep(2)
self.driver.find_element(By.TAG_NAME, "input").send_keys("Vehicle.Automation")
self.driver.find_element(By.XPATH, "//label[text()='Vehicle.AutomationTest']").click()
self.logger.info("Success. Created successfully a wishlist API.")
except Exception as e:
error_handler("error", self.logger, self.configInfo, "Failure. Cannot create a wishlist API.", e, "", "")
self.create_delete_discussion()
try:
self.driver.find_element(By.XPATH, "//div[text()='Delete Wishlist API']").click()
self.driver.find_element(By.XPATH, "//button[text()='Confirm']").click()
self.logger.info("Success. Deleted successfully a wishlist API.")
except Exception as e:
error_handler("warning", self.logger, self.configInfo, "Failure. Cannot delete a wishlist API.", e, "", "")
def create_delete_discussion(self):
self.base.beginOfTest_logFormat("create_delete_discussion")
try:
self.driver.find_element(By.TAG_NAME, "textarea").send_keys("Automation Test Discussion")
self.driver.find_element(By.XPATH, "//button[text()='Submit']").click()
time.sleep(2)
object = self.driver.find_element(By.XPATH, "//div[@class='whitespace-pre-wrap da-label-small max-h-[200px] overflow-y-auto']")
assert (object.text == "Automation Test Discussion")
self.logger.info("Success. Created successfully a discussion.")
except Exception as e:
error_handler("warning", self.logger, self.configInfo, "Failure. Cannot create a discussion.", e, "", "")
try:
self.driver.find_element(By.XPATH, "//div[@class='inline-flex']/span/button[@class='da-btn da-btn-plain da-btn-sm']").click()
self.driver.find_element(By.XPATH, "//button[text()=' Delete']").click()
self.driver.find_element(By.XPATH, "//button[text()='Confirm']").click()
time.sleep(2)
self.logger.info("Success. Deleted successfully a discussion.")
except Exception as e:
error_handler("warning", self.logger, self.configInfo, "Failure. Cannot delete a discussion.", e, "", "")
def use_API_filter(self):
self.base.beginOfTest_logFormat("use_API_filter")
for _ in range(20):
self.driver.find_element(By.TAG_NAME, "input").send_keys(Keys.BACK_SPACE)
self.driver.find_element(By.TAG_NAME, "input").send_keys("Vehicle.Body")
time.sleep(2)
self.driver.find_element(By.XPATH, "//button[normalize-space()='Filter']").click()
self.driver.find_element(By.XPATH, "//span[text()='Branch']").click()
self.driver.find_element(By.XPATH, "//span[text()='Actuator']").click()
self.driver.find_element(By.XPATH, "//span[text()='Attribute']").click()
numOf_sensors = self.driver.find_elements(By.XPATH, "//label[text()='sensor']")
assert (len(numOf_sensors) > 0)
time.sleep(3)
self.driver.find_element(By.XPATH, "//label[text()='COVESA VSS 4.1']").click()
......@@ -9,7 +9,7 @@ class Test_NoData(BaseTest, unittest.TestCase):
def count_numOf_models(self):
self.base.beginOfTest_logFormat("count_numOf_models")
try:
click_select_model(self.driver, self.logger)
self.driver.find_element(By.CSS_SELECTOR, "a[href='/model']").click()
models = self.driver.find_elements(By.XPATH, "//div/a/div")
assert (len(models) > 0)
self.logger.info("Success. Tested the number of model components in model page")
......
# NOT DONE
from util import *
class Test_Prototype(BaseTest, unittest.TestCase):
def test_Prototype_functionalities(self):
if (self.next is True):
click_sign_in(self.driver, self.logger, self.configInfo)
enter_email(self.driver, self.logger, self.configInfo, self.configInfo["signIn_email"])
enter_password(self.driver, self.logger, self.configInfo, "valid", "first_enter")
submit_sign_in(self.driver, self.logger)
sign_in(self.driver, self.configInfo)
time.sleep(5)
self.create_and_verify_prototypeName()
action = ActionChains(self.driver)
action.move_by_offset(100, 100).click().perform() # Click outside the pop up
self.driver.find_element(By.XPATH, "//button[text()='Open']").click() # Open the prototype detail page
self.edit_prototype()
time.sleep(5)
self.use_Code_dashboardConfig()
self.check_widgetList_content()
self.add_widget()
......@@ -28,6 +29,44 @@ class Test_Prototype(BaseTest, unittest.TestCase):
delete_testing_object("prototype", self.driver, self.logger, self.configInfo)
delete_testing_object("model", self.driver, self.logger, self.configInfo)
def edit_prototype(self):
self.base.beginOfTest_logFormat("edit_prototype")
try:
# edit the information
self.driver.find_element(By.XPATH, "//button[normalize-space()='Edit Prototype']").click()
self.driver.find_element(By.XPATH, "//div/label[text()='Problem']/following-sibling::div/div/input").send_keys("Testing Problem")
self.driver.find_element(By.XPATH, "//div/label[text()='Says who?']/following-sibling::div/div/input").send_keys("Testing People")
self.driver.find_element(By.XPATH, "//div/label[text()='Solution']/following-sibling::div/div/input").send_keys("Testing Solution")
complexity = self.driver.find_element(By.XPATH, "//label[text()='Complexity']/following-sibling::div/label/button[@role='combobox']")
complexity.click()
action = ActionChains(self.driver)
action.move_to_element(complexity).move_by_offset(0,100).click().perform()
status = self.driver.find_element(By.XPATH, "//label[text()='Status']/following-sibling::div/label/button[@role='combobox']")
status.click()
action1 = ActionChains(self.driver)
action1.move_to_element(status).move_by_offset(0,100).click().perform()
self.driver.find_element(By.XPATH, "//button[text()=' Change Image']").click()
self.driver.find_element(By.XPATH, "//input[@type='file']").send_keys(self.configInfo["test_image_path"])
self.driver.find_element(By.XPATH, "//button[text()='Save']").click()
# verify the changes
object = self.driver.find_element(By.XPATH, "//label[text()='Testing Problem']")
assert (object.is_displayed())
object = self.driver.find_element(By.XPATH, "//label[text()='Testing People']")
assert (object.is_displayed())
object = self.driver.find_element(By.XPATH, "//label[text()='Testing Solution']")
assert (object.is_displayed())
object = self.driver.find_element(By.XPATH, "//label[text()='Released']")
assert (object.is_displayed())
object = self.driver.find_element(By.XPATH, "//label[text()='Low']")
assert (object.is_displayed())
object = self.driver.find_element(By.XPATH, "//div/img[contains(@src, 'https://upload.digitalauto.tech/data')]")
assert (object.is_displayed())
self.logger.info("Success. Edited succesfully the information of prototype.")
except Exception as e:
error_handler("warning", self.logger, "", "Failure. Failed to edit the information of prototype.", e, "", "")
def run_code(self, mode):
self.base.beginOfTest_logFormat(f"run_code_{mode}")
......@@ -68,7 +107,7 @@ class Test_Prototype(BaseTest, unittest.TestCase):
action1 = ActionChains(self.driver)
action1.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).key_down(Keys.BACK_SPACE).send_keys('print("Automation Test")').perform()
time.sleep(2) # wait for the update in the Dashboard tab
time.sleep(5) # wait for the update in the Dashboard tab
self.driver.find_element(By.XPATH, "//a/div[text()='Dashboard']").click()
self.driver.find_element(By.XPATH, "//div[@class='flex']/button").click()
self.driver.find_element(By.XPATH, "//div[@class='flex']/div[text()='Code']").click()
......@@ -97,19 +136,17 @@ class Test_Prototype(BaseTest, unittest.TestCase):
def create_and_verify_prototypeName(self):
self.base.beginOfTest_logFormat("create_and_verify_prototypeName")
time.sleep(3)
click_select_model(self.driver, self.logger)
self.driver.find_element(By.CSS_SELECTOR, "a[href='/model']").click()
self.driver.find_element(By.XPATH, "//button[contains(text(),'Create New Model')]").click()
expected_name = "Automation Test Model"
self.driver.find_element(By.CSS_SELECTOR, "input[placeholder='Model Name']").send_keys(expected_name)
self.driver.find_element(By. XPATH, "//button[text()='Create Model']").click()
# self.driver.find_element(By.XPATH, "//label[text()='Combustion Car']").click()
click_prototype_library(self.driver, self.logger)
click_create_prototype(self.driver, self.logger)
self.driver.find_element(By.XPATH, "//label[text()='Prototype Library']").click()
self.driver.find_element(By.XPATH, "//button[text()='Create New Prototype']").click()
# Hit Create New Prototype without entering name
try:
self.driver.find_element(By.XPATH, "//button[text()='Create']").click()
self.logger.debug("Clicked the Create Prototype button")
wait = WebDriverWait(self.driver, 5)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, "//label[@class='da-label-small mt-4 text-da-accent-500']")))
message = self.driver.find_element(By.XPATH, "//label[@class='da-label-small mt-4 text-da-accent-500']").text
......@@ -122,19 +159,16 @@ class Test_Prototype(BaseTest, unittest.TestCase):
try:
expected_name = "Automation Test Prototype"
self.driver.find_element(By.XPATH, "//input[@placeholder='Name']").send_keys(expected_name)
self.logger.debug("Entered the prototype name")
self.driver.find_element(By.XPATH, "//button[text()='Create']").click()
self.logger.debug("Clicked the Create Prototype button")
wait = WebDriverWait(self.driver, 5)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, f"//label[text()='{expected_name}']")))
prototype_name_left = self.driver.find_element(By.XPATH, f"//label[text()='{expected_name}']").text
assert (prototype_name_left == expected_name)
self.driver.find_element(By.XPATH, f"//label[text()='{expected_name}']").click()
self.logger.debug("Clicked the prototype box")
self.logger.info("Success. Verified the name of the newly created prototype on the left")
except Exception as e:
error_handler("warning", self.logger, "", "Failure. Incorrect name of the newly created prototype on the left", e, "", "")
try:
wait = WebDriverWait(self.driver, 2)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, f"//div[@class='p-5']/div/label[text()='{expected_name}']")))
......@@ -144,6 +178,18 @@ class Test_Prototype(BaseTest, unittest.TestCase):
except Exception as e:
error_handler("warning", self.logger, "", "Failure. Incorrect name of the newly created prototype on the right", e, "", "")
# Test case of creating a duplicate prototype
try:
self.driver.find_element(By.XPATH, "//button[text()='Create New Prototype']").click()
expected_name = "Automation Test Prototype"
self.driver.find_element(By.XPATH, "//input[@placeholder='Name']").send_keys(expected_name)
self.driver.find_element(By.XPATH, "//button[text()='Create']").click()
message = self.driver.find_element(By.XPATH, "(//label[contains(text(),'Duplicate prototype name')])[1]").text
assert ("Duplicate prototype name" in message)
self.logger.info("Success. Tested the case of creating duplicate prototype name.")
except Exception as e:
error_handler("warning", self.logger, "", "Failure. Duplicate prototoype name passed. Broken implementation.", e, "", "")
def use_Code_dashboardConfig(self):
self.base.beginOfTest_logFormat("use_Code_dashboardConfig")
......@@ -200,6 +246,7 @@ class Test_Prototype(BaseTest, unittest.TestCase):
self.base.beginOfTest_logFormat("add_widget")
try:
self.driver.find_element(By.XPATH, "(//div[contains(text(), 'Marketplace')])[2]").click()
time.sleep(5)
self.driver.find_element(By.XPATH, "//label[text()='Simple Wiper Widget']").click()
self.driver.find_element(By.XPATH, "//button[text()='Add selected widget']").click()
widget_text = self.driver.find_element(By.XPATH, "//div[text()='Simple Wiper Widget']").text
......
......@@ -11,7 +11,7 @@ class Test_SignIn_SignOut(BaseTest, unittest.TestCase):
def open_SignIn_popup(self):
self.base.beginOfTest_logFormat("open_SignIn_popup")
click_sign_in(self.driver, self.logger, self.configInfo)
self.driver.find_element(By.XPATH, "//button[text()='Sign in']").click()
canOpen_popUp = False
try:
popup = self.driver.find_element(By.TAG_NAME, "form")
......@@ -25,9 +25,9 @@ class Test_SignIn_SignOut(BaseTest, unittest.TestCase):
def signIn_invalid_password(self):
self.base.beginOfTest_logFormat("signIn_invalid_password")
try:
enter_email(self.driver, self.logger, self.configInfo, self.configInfo["signIn_email"])
enter_password(self.driver, self.logger, self.configInfo, "invalid", "first_enter")
submit_sign_in(self.driver, self.logger)
self.driver.find_element(By.XPATH, "//input[@name='email']").send_keys(self.configInfo["signIn_email"])
enter_password(self.driver, self.configInfo, "invalid", "first_enter")
self.driver.find_element(By.XPATH, "//button[@type='submit']").click()
wait = WebDriverWait(self.driver, 2)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, "//label[text()='Incorrect email or password']")))
login_error = self.driver.find_element(By.XPATH, "//label[text()='Incorrect email or password']").text
......@@ -41,8 +41,9 @@ class Test_SignIn_SignOut(BaseTest, unittest.TestCase):
self.base.beginOfTest_logFormat("signIn_valid_password")
try:
self.driver.find_element(By.XPATH, "//input[@name='password']").clear()
enter_password(self.driver, self.logger, self.configInfo, "valid", "first_enter")
submit_sign_in(self.driver, self.logger)
enter_password(self.driver, self.configInfo, "valid", "first_enter")
self.driver.find_element(By.XPATH, "//button[@type='submit']").click()
time.sleep(5)
user_icon = self.driver.find_element(By.TAG_NAME, "picture")
assert (user_icon.is_displayed())
self.logger.info("Success. Tested the valid login attempt.")
......@@ -61,6 +62,7 @@ class Test_SignIn_SignOut(BaseTest, unittest.TestCase):
logout_icon.click()
self.logger.debug("Clicked the logout icon")
signIn_button = self.driver.find_element(By.XPATH, "//button[text()='Sign in']")
time.sleep(5)
assert (signIn_button.is_displayed())
self.logger.info("Success. Tested logging out.")
except Exception as e:
......
......@@ -10,6 +10,8 @@ class Test_SignUp(BaseTest, unittest.TestCase):
time.sleep(2)
self.signUp_fail_confirmPassword()
time.sleep(2)
self.signUp_fail_password_notLongEnough()
time.sleep(2)
self.signUp_success()
delete_testing_object("user", self.driver, self.logger, self.configInfo)
......@@ -17,8 +19,8 @@ class Test_SignUp(BaseTest, unittest.TestCase):
def open_SignUp_popup(self):
self.base.beginOfTest_logFormat("open_SignUp_popup")
try:
click_sign_in(self.driver, self.logger, self.configInfo)
click_register(self.driver, self.logger)
self.driver.find_element(By.XPATH, "//button[text()='Sign in']").click()
self.driver.find_element(By.XPATH, "//button[text()='Register']").click()
popup = self.driver.find_element(By.XPATH, "//form/label[text()='Register']")
assert (popup.is_displayed())
canOpen_popUp = True
......@@ -30,10 +32,10 @@ class Test_SignUp(BaseTest, unittest.TestCase):
def signUp_fail_lackOneField(self):
self.base.beginOfTest_logFormat("signUp_fail_lackOneField")
try:
enter_name(self.driver, self.logger, self.configInfo)
enter_password(self.driver, self.logger, self.configInfo, "valid", "first_enter")
enter_password(self.driver, self.logger, self.configInfo, "valid", "re_enter")
click_register(self.driver, self.logger)
self.driver.find_element(By.XPATH, "//input[@name='fullName']").send_keys(self.configInfo["signUp_name"])
enter_password(self.driver, self.configInfo, "valid", "first_enter")
enter_password(self.driver, self.configInfo, "valid", "re_enter")
self.driver.find_element(By.XPATH, "//button[text()='Register']").click()
expected_message = '"email" is required'
wait = WebDriverWait(self.driver, 3)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, f"//label[text()='{expected_message}']")))
......@@ -46,8 +48,8 @@ class Test_SignUp(BaseTest, unittest.TestCase):
def signUp_fail_existingEmail(self):
self.base.beginOfTest_logFormat("signUp_fail_existingEmail")
try:
enter_email(self.driver, self.logger, self.configInfo, self.configInfo["signIn_email"])
click_register(self.driver, self.logger)
self.driver.find_element(By.XPATH, "//input[@name='email']").send_keys(self.configInfo["signIn_email"])
self.driver.find_element(By.XPATH, "//button[text()='Register']").click()
wait = WebDriverWait(self.driver, 3)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, "//label[text()='Email already taken']")))
message = self.driver.find_element(By.XPATH, "//label[text()='Email already taken']").text
......@@ -60,8 +62,8 @@ class Test_SignUp(BaseTest, unittest.TestCase):
self.base.beginOfTest_logFormat("signUp_fail_confirmPassword")
try:
self.driver.find_element(By.XPATH, "//input[@name='confirmPassword']").clear()
enter_password(self.driver, self.logger, self.configInfo, "invalid", "re_enter")
click_register(self.driver, self.logger)
enter_password(self.driver, self.configInfo, "invalid", "re_enter")
self.driver.find_element(By.XPATH, "//button[text()='Register']").click()
expected_message = '"password" and "confirm password" must be the same'
wait = WebDriverWait(self.driver, 3)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, f"//label[text()='{expected_message}']")))
......@@ -71,16 +73,34 @@ class Test_SignUp(BaseTest, unittest.TestCase):
except Exception as e:
error_handler("error", self.logger, "", "Failure. Confirm password was different from entered password. Broken implementation", e, "", "")
def signUp_fail_password_notLongEnough(self):
self.base.beginOfTest_logFormat("signUp_fail_password_notLongEnough")
try:
self.driver.find_element(By.XPATH, "//input[@name='password']").clear()
self.driver.find_element(By.XPATH, "//input[@name='password']").send_keys("pass")
self.driver.find_element(By.XPATH, "//input[@name='confirmPassword']").clear()
self.driver.find_element(By.XPATH, "//input[@name='confirmPassword']").send_keys("pass")
self.driver.find_element(By.XPATH, "//button[text()='Register']").click()
expected_message = 'password must be at least 8 characters'
wait = WebDriverWait(self.driver, 3)
wait.until(expected_conditions.visibility_of_element_located((By.XPATH, f"//label[text()='{expected_message}']")))
message = self.driver.find_element(By.XPATH, f"//label[text()='{expected_message}']").text
assert (message == expected_message)
self.logger.info("Success. Tested the case of too short password entered.")
except Exception as e:
error_handler("error", self.logger, "", "Failure. Too short password passed. Broken implementation.", e, "", "")
def signUp_success(self):
self.base.beginOfTest_logFormat("signUp_success")
try:
self.driver.find_element(By.XPATH, "//input[@name='email']").clear()
enter_email(self.driver, self.logger, self.configInfo, self.configInfo["signUp_email"])
self.driver.find_element(By.XPATH, "//input[@name='email']").send_keys(self.configInfo["signUp_email"])
self.driver.find_element(By.XPATH, "//input[@name='password']").clear()
enter_password(self.driver, self.configInfo, "valid", "first_enter")
self.driver.find_element(By.XPATH, "//input[@name='confirmPassword']").clear()
enter_password(self.driver, self.logger, self.configInfo, "valid", "re_enter")
click_register(self.driver, self.logger)
wait = WebDriverWait(self.driver, 4)
wait.until(expected_conditions.visibility_of_element_located((By.TAG_NAME, "picture")))
enter_password(self.driver, self.configInfo, "valid", "re_enter")
self.driver.find_element(By.XPATH, "//button[text()='Register']").click()
time.sleep(5)
user_icon = self.driver.find_element(By.TAG_NAME, "picture")
assert (user_icon.is_displayed())
self.logger.debug("Saw the user icon")
......@@ -88,7 +108,3 @@ class Test_SignUp(BaseTest, unittest.TestCase):
except Exception as e:
error_handler("error", self.logger, "", "Failure. Cannot register a new account.", e, "", "")
self.driver.get_screenshot_as_file("screenshot-failed-register.png")
# Test case 5: Enter all info but invalid email address, catch the message -> this is failing
# Test case 6: Password has at least 8 characters -> is there any other conditions for password?
testing_image.jpg

826 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment