import allure import pytest from faker import Faker from src.helpers.test_data_loader import DataLoader from assertpy import assert_that from ui_automation_framework.utils import CoreConfig @pytest.mark.usefixtures("one_time_set_up") class TestLogin: fake = Faker() data = DataLoader("test_login_data.json") invalid_pw = data.get("invalid_password") invalid_email = data.get("invalid_email") non_existing_email = f"{fake.first_name()}.{fake.last_name()}@{fake.domain_name()}" super_user_artist_name = data.get("super_user_artist_name") valid_login = CoreConfig.SUPERUSER_EMAIL valid_password = CoreConfig.SUPERUSER_PASSWORD valid_login_2 = CoreConfig.SINGLEUSER_EMAIL valid_password_2 = CoreConfig.SUPERUSER_PASSWORD @allure.title("Sign in with the single artist user") @allure.description("User should be able to successfully log in and log out from Artist Selection page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1675") @pytest.mark.smoke def test_single_user_login(self): self.login_page.go_to_login_form().enter_login_credentials(self.valid_login_2, self.valid_password).click_login() assert_that(self.welcome_page.is_welcome_screen_opened(), "User wasn't logged in").is_true() self.welcome_page.click_skip_btn() self.artist_selector_page.click_logout_btn() assert_that(self.login_page.is_login_page_opened(), "Login form isn't displayed").is_true() @allure.title("Sing in with incorrect credentials (email/password)") @allure.description("'Wrong email or password' message should be shown on Sign In form") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1690") @pytest.mark.smoke def test_login_with_invalid_credentials(self): self.login_page.go_to_login_form().enter_login_credentials(self.valid_login, self.invalid_pw).click_login() assert_that(self.login_page.is_wrong_credentials_error_message_shown(), "Error message wasn't shown").is_true() # TODO: https://data-analytics.atlassian.net/browse/AMA-2087 - bug # self.login_page.enter_login_credentials(self.non_existing_email, self.valid_password).click_login() # assert_that(self.login_page.is_wrong_credentials_error_message_shown(), "Error message wasn't shown").is_true() # # self.login_page.enter_login_credentials(self.invalid_email, self.invalid_pw).click_login() # assert_that(self.login_page.is_wrong_credentials_error_message_shown(), "Error message wasn't shown").is_true() @allure.title("Try to sign in with empty email and password") @allure.description("'Can't be blank' label and red frames are shown for Email and Password text-fields") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1921") @pytest.mark.regression def test_login_with_empty_credentials(self): self.login_page.go_to_login_form().click_login() assert_that(self.login_page.are_empty_credentials_error_messages_shown(), "Error messages are shown").is_true() @allure.title("Email Validation") @allure.description("Appropriate label and red frames should be shown for password field") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1922") @pytest.mark.regression def test_email_validation_rules(self): self.login_page.go_to_login_form().enter_login_credentials("dxd@we", "1").click_login() assert_that(self.login_page.is_invalid_email_error_message_shown(), "Error message is shown").is_true() self.login_page.enter_login_credentials(self.valid_login, "1") assert_that(self.login_page.is_invalid_email_error_message_hidden(), "Error message is hidden").is_true() @allure.title("Forgot password form") @allure.description("Check the validation form in case the password were forgotten") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1918") @pytest.mark.regression def test_login_forgot_password(self): self.login_page.go_to_login_form().click_forgot_password() assert_that(self.login_page.are_forgot_password_messages_shown(), "Error message is shown").is_true() @allure.title("Sign in with the super user") @allure.description("User should be able to successfully log in and log out from Settings page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1676") @pytest.mark.smoke def test_super_user_login_logout(self): self.login_page.go_to_login_form().enter_login_credentials(self.valid_login, self.valid_password).click_login() assert_that(self.welcome_page.is_welcome_screen_opened(), "User wasn't logged in").is_true() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(self.super_user_artist_name) self.navigation_page.click_settings_tab() self.settings_page.click_logout() assert_that(self.login_page.is_login_page_opened(), "Login form isn't displayed").is_true() @allure.title("Re-login with another user") @allure.description("Another user should be able to login and view permissions are applied") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1919") @pytest.mark.regression def test_relogin_with_another_user(self): self.login_page.go_to_login_form().enter_login_credentials(self.valid_login_2, self.valid_password).click_login() assert_that(self.welcome_page.is_welcome_screen_opened(), "User wasn't logged in").is_true() self.welcome_page.click_skip_btn() print(len(self.artist_selector_page.list_artists.elements)) assert_that(self.artist_selector_page.is_artist_selector_screen_opened(), "Artist Selector page isn't shown").is_true() assert_that(len(self.artist_selector_page.list_artists.elements)).is_equal_to(2).described_as( "More than 1 artist is available") self.artist_selector_page.click_logout_btn() assert_that(self.login_page.is_login_page_opened(), "Login form isn't displayed").is_true() # Re-login as Superuser self.login_page.go_to_login_form().enter_login_credentials(self.valid_login, self.valid_password).click_login() assert_that(self.artist_selector_page.is_artist_selector_screen_opened(), "Artist Selector page isn't shown").is_true() assert_that(len(self.artist_selector_page.list_artists.elements)).is_greater_than(3).described_as( "Only 1 artist is available") self.artist_selector_page.select_an_artist_by_name(self.super_user_artist_name) self.navigation_page.click_settings_tab() self.settings_page.click_logout() assert_that(self.login_page.is_login_page_opened(), "Login form isn't displayed").is_true()