class LoginFeatureTests(BaseTest): def __init__(self, *args, **kwargs): super(LoginFeatureTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() def test_login_unsuccessfully_due_to_blank_fields(self): accounts = self.__data_set.get_data(INVALID_LOGIN_DATA) expected_errors = [account[2] for account in accounts[1:]] actual_errors = [] for account in accounts[1:]: email = account[0] password = account[1] self.__login.open_login_page() self.__login.login_with_account(email, password) actual_errors.append(self.__login.lbl_error_message.get_element_text()) self.assertEqual(expected_errors, actual_errors, "Assert Error : {0} != {1}".format(expected_errors, actual_errors)) self.assertTrue(self.__login.txt_header_text.lower() in self.__login.driver.page_source.lower(), "'{0}' text does not present in DOM".format(self.__login.txt_header_text)) self.assertTrue(self.__login.path_page in self.__login.driver.current_url, "{0} is not included in url".format(self.__login.path_page))
def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) self.__api_test = os.environ.get('api', False) self.TEST_CLASS = self self.__login = LoginPage() self.__register = RegisterPage() self.__dashboard = DashboardPage() self.__create_bot = CreateBotPage() self.__data = DataGenerateUtils()
def __init__(self, *args, **kwargs): super(LoginFeatureTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password()
def __init__(self, *args, **kwargs): super(TestAuthenticationPages, self).__init__(*args, **kwargs) self.__login = LoginPage() self.__register = RegisterPage() self.__forgot_password = ForgotPasswordPage() self.__data = DataGenerateUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.bot_name = "Test" self.invalid_faq = "google.com" self.eyes = Eyes() self.eyes.api_key = YAML_CONFIG.get("eyes_api_key")
def __init__(self, *args, **kwargs): super(ChangePasswordTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__dashboard = DashboardPage() self.__appearance = AppearancePage() self.__create_bot_validation = CreateBotValidation() self.__drop_down_list = DropDownList() self.__change_password = ChangePasswordPage() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.bot_name = "Test" self.invalid_faq = "google.com"
def __init__(self, *args, **kwargs): super(CreateBotFeatureTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__appearance = AppearancePage() self.__create_bot_validation = CreateBotValidation() self.__drop_down_list = DropDownList() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.faq_url = YAML_CONFIG.get("stub_faq_url")
def __init__(self, *args, **kwargs): super(KnowledgeFeatureTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__appearance = AppearancePage() self.__knowledge_validation = KnowledgeValidation() self.__dashboard = DashboardPage() self.__knowledge = KnowledgePage() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.faq_url = YAML_CONFIG.get("stub_manual_faq_url") self.invalid_faq = YAML_CONFIG.get("stub_invalid_faq_url")
def __init__(self, *args, **kwargs): super(AppearanceTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__appearance = AppearancePage() self.__create_bot_validation = CreateBotValidation() self.__drop_down_list = DropDownList() self.__chat_box_simulator = ClientSimulator() self.__loader = LoaderComponent() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.bot_name = self.__data.create_uuid_number() self.faq_url = YAML_CONFIG.get("stub_faq_url")
def __init__(self, *args, **kwargs): super(TestAdminPages, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__dashboard = DashboardPage() self.__appearance = AppearancePage() self.__create_bot_validation = CreateBotValidation() self.__drop_down_list = DropDownList() self.__change_password = ChangePasswordPage() self.__knowledge = KnowledgePage() self.__data_set = DataUtils() self.__faq_knowledge_data_table_component = FaqKnowledgeDataTableComponent( ) self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.bot_name = "Test" self.invalid_faq = "google.com" self.eyes = Eyes() self.eyes.api_key = YAML_CONFIG.get("eyes_api_key") self.eyes.force_full_page_screenshot = True self.eyes.stitch_mode = StitchMode.CSS
class ChangePasswordTests(BaseTest): def __init__(self, *args, **kwargs): super(ChangePasswordTests, self).__init__(*args, **kwargs) self.__data = DataGenerateUtils() self.__login = LoginPage() self.__create_bot = CreateBotPage() self.__register = RegisterPage() self.__dashboard = DashboardPage() self.__appearance = AppearancePage() self.__create_bot_validation = CreateBotValidation() self.__drop_down_list = DropDownList() self.__change_password = ChangePasswordPage() self.__data_set = DataUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.bot_name = "Test" self.invalid_faq = "google.com" def setUp(self): super().setUp() try: self.sign_in_for_ui_test(self.valid_username, self.valid_email, self.valid_password, self.bot_name, self.invalid_faq, False) finally: self.__change_password.open_change_password_page() def test_change_password_unsuccessfully_with_invalid_data(self): invalid_data = self.__data_set.get_data( INVALID_DATA_FOR_CHANGE_PASSWORD) for data in invalid_data: old_password = data[0] new_password = data[1] confirm_password = data[2] error_message = data[3] self.__change_password.change_password(old_password, new_password, confirm_password) print(data) assert self.__change_password.get_error_message() == error_message, \ f"Expect error message '{error_message}' but '{self.__change_password.get_error_message()}' is returned" assert self.__change_password.btn_submit.get_element_text() == "RETRY", \ f"Expect button submit change to 'RETRY' but '{self.__change_password.btn_submit.get_element_text()}'" # Incorrect current password self.__change_password.change_password(self.valid_password + "123", "password", "password") assert self.__change_password.get_error_message() == "Your current password is not correct.", \ f"Expect error message 'Your current password is not correct.' " \ f"but '{self.__change_password.get_error_message()}' is returned" assert self.__change_password.btn_submit.get_element_text() == "RETRY", \ f"Expect button submit change to 'RETRY' but '{self.__change_password.btn_submit.get_element_text()}'" def test_change_password_unsuccessfully_with_wrong_current_password(self): # Make old password become incorrect old_password = self.valid_password + "123" new_password = "******" expected_error_message = "Your current password is not correct." self.__change_password.change_password(old_password, new_password, new_password) actual_error_message = self.__change_password.get_error_message() assert actual_error_message == expected_error_message, \ f"Expect '{expected_error_message}' but '{actual_error_message}' is displayed" assert self.__change_password.btn_submit.get_element_text() == "RETRY", \ f"Expect button submit change to 'RETRY' but '{self.__change_password.btn_submit.get_element_text()}'" def test_change_password_successfully(self): new_password = "******" success_message = "Your password has been updated successfully." # Change Password self.__change_password.change_password(self.valid_password, new_password, new_password) # Verify actual_message = self.__change_password.get_success_message() assert actual_message == success_message, \ f"Expect '{success_message}' but '{actual_message}' is displayed" self.__change_password.wait_for_button_back_to_dashboard_display() # Sign out self.__change_password.log_out() self.__login.wait_for_log_in_page() # Verify login successfully with new password self.__login.login_with_account(self.valid_email, new_password) self.__dashboard.wait_for_dashboard_page()
class BaseTest(unittest.TestCase): API_PAY_LOAD = [] GUI_SCREEN_SHOT = [] def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) self.__api_test = os.environ.get('api', False) self.TEST_CLASS = self self.__login = LoginPage() self.__register = RegisterPage() self.__dashboard = DashboardPage() self.__create_bot = CreateBotPage() self.__data = DataGenerateUtils() def setUp(self): self.API_PAY_LOAD = [] if not self.is_api_test: DriverFactory.create_driver() def repeated_setup(self): pass def repeated_teardown(self): pass def tearDown(self): if not self.is_api_test: DriverFactory.dispose_driver() @property def is_api_test(self): return self.__api_test @is_api_test.setter def is_api_test(self, is_api_test): self.__api_test = is_api_test def sign_in_for_ui_test(self, username=None, email=None, password=None, bot_name=None, faq_url=None, is_debugging=False): try: if not is_debugging: # Generate data email = email or self.__data.create_email() username = username or self.__data.create_name() password = password or self.__data.create_password() bot_name = bot_name or self.__data.create_uuid_number() invalid_faq = faq_url or YAML_CONFIG.get( "stub_invalid_faq_url") self.__register.open_register_page() self.__register.login_with_new_account(username, email, password) self.__create_bot.wait_for_create_page() self.__create_bot.create_bot_with_data(bot_name, invalid_faq) else: email = email or YAML_CONFIG.get("email_for_debugging") password = password or YAML_CONFIG.get("pass_for_debugging") self.__login.login_with_account(email, password) self.__dashboard.wait_for_dashboard_page() except Exception as e: raise TestContextException(e) @staticmethod def assert_container(func, expected, actual): return lambda: func(expected, actual)
class TestAuthenticationPages(BaseTest): def __init__(self, *args, **kwargs): super(TestAuthenticationPages, self).__init__(*args, **kwargs) self.__login = LoginPage() self.__register = RegisterPage() self.__forgot_password = ForgotPasswordPage() self.__data = DataGenerateUtils() self.valid_email = self.__data.create_email() self.valid_username = self.__data.create_name() self.valid_password = self.__data.create_password() self.bot_name = "Test" self.invalid_faq = "google.com" self.eyes = Eyes() self.eyes.api_key = YAML_CONFIG.get("eyes_api_key") def setUp(self): super().setUp() def test_login_page_appearance(self): try: self.eyes.open(driver=self.__login.driver.core_driver, app_name='sample_app', test_name='Login Page', viewport_size={'width': 1440, 'height': 887}) self.__login.open_login_page() self.__login.wait_for_log_in_page() self.eyes.check_window("Default Login Page") self.__login.check_remember_me(False) self.eyes.check_window("Login Page without remember me") self.__login.login_with_account("", "") self.eyes.check_window("Login Page with error message") finally: res = self.eyes.close(raise_ex=True) print(res) self.eyes.abort_if_not_closed() def test_register_page_appearance(self): try: self.eyes.open(driver=self.__login.driver.core_driver, app_name='sample_app', test_name='Register Page', viewport_size={'width': 1440, 'height': 887}) self.__register.open_register_page() self.__register.wait_for_register_page() self.eyes.check_window("Default Register Page") self.__register.txt_email.click() self.eyes.check_window("Register with tips for email") self.__register.txt_password.click() self.eyes.check_window("Register with tips for password") self.__register.login_with_new_account("", "", "") self.eyes.check_window("Register with error message") finally: res = self.eyes.close(raise_ex=True) print(res) self.eyes.abort_if_not_closed() def test_forgot_password_page_appearance(self): try: self.eyes.open(driver=self.__login.driver.core_driver, app_name='sample_app', test_name='Forgot Password Page', viewport_size={'width': 1440, 'height': 887}) self.__forgot_password.open_forgot_password_page() self.__forgot_password.wait_for_forgot_password_page() self.eyes.check_window("Default Forgot password page") self.__forgot_password.submit_email("") self.eyes.check_window("Submit empty email") self.__forgot_password.submit_email("*****@*****.**") self.eyes.check_window("Submit with wrong email format") self.__forgot_password.submit_email(YAML_CONFIG.get("sample_app_user")) self.eyes.check_window("Submit successfully") finally: res = self.eyes.close(raise_ex=True) print(res) self.eyes.abort_if_not_closed() def tearDown(self): super().tearDown()