diff --git a/test/SeleniumNeil/.idea/.gitignore b/test/SeleniumNeil/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/test/SeleniumNeil/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/test/SeleniumNeil/.idea/SeleniumNeil.iml b/test/SeleniumNeil/.idea/SeleniumNeil.iml new file mode 100644 index 0000000..5fdd65b --- /dev/null +++ b/test/SeleniumNeil/.idea/SeleniumNeil.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/test/SeleniumNeil/.idea/inspectionProfiles/profiles_settings.xml b/test/SeleniumNeil/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/test/SeleniumNeil/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/test/SeleniumNeil/.idea/misc.xml b/test/SeleniumNeil/.idea/misc.xml new file mode 100644 index 0000000..d1e22ec --- /dev/null +++ b/test/SeleniumNeil/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/test/SeleniumNeil/.idea/modules.xml b/test/SeleniumNeil/.idea/modules.xml new file mode 100644 index 0000000..aa51822 --- /dev/null +++ b/test/SeleniumNeil/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/test/SeleniumNeil/.idea/vcs.xml b/test/SeleniumNeil/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/test/SeleniumNeil/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/test/SeleniumNeil/LRR b/test/SeleniumNeil/LRR new file mode 160000 index 0000000..1a01b4f --- /dev/null +++ b/test/SeleniumNeil/LRR @@ -0,0 +1 @@ +Subproject commit 1a01b4facd4c9d1cce59ef84da114f55a57f616d diff --git a/test/SeleniumNeil/__pycache__/conftest.cpython-38-pytest-8.0.0.pyc b/test/SeleniumNeil/__pycache__/conftest.cpython-38-pytest-8.0.0.pyc new file mode 100644 index 0000000..cfd6b88 Binary files /dev/null and b/test/SeleniumNeil/__pycache__/conftest.cpython-38-pytest-8.0.0.pyc differ diff --git a/test/SeleniumNeil/__pycache__/conftest.cpython-38.pyc b/test/SeleniumNeil/__pycache__/conftest.cpython-38.pyc new file mode 100644 index 0000000..e23fc2d Binary files /dev/null and b/test/SeleniumNeil/__pycache__/conftest.cpython-38.pyc differ diff --git a/test/SeleniumNeil/__pycache__/test_cases.cpython-38-pytest-8.0.0.pyc b/test/SeleniumNeil/__pycache__/test_cases.cpython-38-pytest-8.0.0.pyc new file mode 100644 index 0000000..a3e0d0e Binary files /dev/null and b/test/SeleniumNeil/__pycache__/test_cases.cpython-38-pytest-8.0.0.pyc differ diff --git a/test/SeleniumNeil/helper.py b/test/SeleniumNeil/helper.py new file mode 100644 index 0000000..bea59f9 --- /dev/null +++ b/test/SeleniumNeil/helper.py @@ -0,0 +1,33 @@ +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.common.exceptions import NoSuchElementException, UnexpectedAlertPresentException + + +def login(driver, url, username, password): + try: + driver.get(url) + + # Fill in the login form + user_input = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((By.ID, "user_name")) + ) + user_input.send_keys(username) + + password_input = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((By.ID, "user_password")) + ) + password_input.send_keys(password) + + # Click the login button + login_button = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((By.ID, "login_btn")) + ) + login_button.click() + + # Wait for the admin_tab to become clickable + admin_tab = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((By.ID, "admin_tab")) + ) + except (NoSuchElementException, UnexpectedAlertPresentException) as e: + return f"Error: {str(e)}" diff --git a/test/SeleniumNeil/test_cases.py b/test/SeleniumNeil/test_script_352.py similarity index 85% rename from test/SeleniumNeil/test_cases.py rename to test/SeleniumNeil/test_script_352.py index c15e17b..d35c51e 100644 --- a/test/SeleniumNeil/test_cases.py +++ b/test/SeleniumNeil/test_script_352.py @@ -10,7 +10,9 @@ from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC + def test_function_1(restore_database): + assert restore_database is None @pytest.mark.skip(reason="function to be used in the test_scripts") def createTA(driver, TA_name, emails, password): @@ -25,34 +27,11 @@ def createTA(driver, TA_name, emails, password): click_create = driver.find_element('name', 'create_btn') click_create.click() -def login_lecturer(drivers): - # Open the website - drivers.get("http://localhost/LRR/") - drivers.maximize_window() - username_input = drivers.find_element('name', "user") - - password_input = drivers.find_element('name', "password") - - login_button = drivers.find_element('id', "login_btn") - - # login as a Lecturer - username_input.send_keys("admin@qq.com") - password_input.send_keys("123") - # Click the login button - time.sleep(10) - login_button.click() - admin_tab = drivers.find_element('id', 'admin_tab') - admin_tab.click() - - cte_instructor = drivers.find_element('id', 'tab_ins_accounts') - cte_instructor.click() - time.sleep(15) - -def test_createTA(): - driver_open = webdriver.Chrome() +def test_createTA(url, driver, restore_database): + driver_open = driver driver_open.maximize_window() - login_lecturer(driver_open) + login(driver, url, "admin@qq.com", "123") try: fullname = "lanhuitest1" email = "lanhuitest1@qq.com" @@ -85,13 +64,13 @@ def test_createTA(): time.sleep(10) login_button.click() - + assert result == "Passed", f"Test Case 1 create TA passed" time.sleep(5) elif txt_alert.find("Email address ") == 0: time.sleep(10) driver_open.quit() - + assert result == "Passed", f"Test Case 1 create TA failed" else: driver_open.quit() @@ -99,11 +78,9 @@ def test_createTA(): finally: driver_open.quit() - - -def test_generate_password(): - driver_open = webdriver.Chrome() - login_lecturer(driver_open) +def test_generate_password(url, driver, restore_database): + driver_open = driver + login(driver, url, "admin@qq.com", "123") try: fullname = "lanhuitest2" email = "lanhuitest2@qq.com" @@ -145,13 +122,13 @@ def test_generate_password(): time.sleep(15) login_button.click() - + assert result == "Passed", f"Test Case 2 generate passsword passed" time.sleep(5) elif txt_alert.find("Email address ") == 0: time.sleep(15) driver_open.quit() - + assert result == "Passed", f"Test Case 2 generate passsword failed" else: driver_open.quit() @@ -160,9 +137,9 @@ def test_generate_password(): finally: driver_open.quit() -def test_existingTA(): - driver_open = webdriver.Chrome() - login_lecturer(driver_open) +def test_existingTA(url, driver, restore_database): + driver_open = driver + login(driver, url, "admin@qq.com", "123") try: # Use email nreyes@example.com as account name and new1452345678 as password. fullname = "lanhuitest1" @@ -180,11 +157,14 @@ def test_existingTA(): time.sleep(15) if txt_alert.find("TA user created successfully") == 0: + assert result == "Passed", f"Test Case 2 existing account passed" time.sleep(5) elif txt_alert.find("Email address ") == 0: time.sleep(15) + + assert result == "Passed", f"Test Case 2 existing account failed" driver_open.quit() else: @@ -194,3 +174,4 @@ def test_existingTA(): finally: driver_open.quit() +