import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.utils import AppConfig, CoreConfig from app.src.pages.login_page import LoginPage from app.src.pages.on_boarding_page import OnBoardingPage from app.src.pages.profile_page import ProfilePage from app.src.pages.search_page import SearchPage @pytest.mark.usefixtures("set_up", "one_time_set_up", "authorized_api") class OnBoardingTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self, authorized_api): self.api = authorized_api self.loginPage = LoginPage(self.driver, authorized_api) self.searchPage = SearchPage(self.driver, authorized_api) self.onBoardingPage = OnBoardingPage(self.driver, authorized_api) self.profilePage = ProfilePage(self.driver) @allure.story("https://data-analytics.atlassian.net/browse/AG-5262") @allure.severity(allure.severity_level.CRITICAL) @allure.title("On-Boarding flow") @allure.description("New user should be directed to onboarding flow after login") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-1275," "https://data-analytics.atlassian.net/browse/AG-1277," "https://data-analytics.atlassian.net/browse/AG-1278," "https://data-analytics.atlassian.net/browse/AG-1304," "https://data-analytics.atlassian.net/browse/AG-1269") @pytest.mark.smoke def test_on_boarding_flow(self): login = CoreConfig.USER_EMAIL password = CoreConfig.USER_PASSWORD user_id = AppConfig.get("test_user_id") user_market = self.onBoardingPage.get_user_market(user_id) try: self.onBoardingPage.set_on_boarding_flow(user_id, 0) self.loginPage.login_without_on_boarding_handler(login, password) assert_that(self.onBoardingPage.is_onboarding_displayed(), "On boarding flow is started").is_true() self.onBoardingPage.expand_popup().swipe_back() assert_that(self.onBoardingPage.is_onboarding_displayed(), "On boarding flow is started").is_true() self.onBoardingPage.click_next() assert_that(self.onBoardingPage.is_2nd_slide_displayed(), "Appropriate slide is displayed").is_true() self.onBoardingPage.click_next() assert_that(self.onBoardingPage.is_3rd_slide_displayed(), "Appropriate slide is displayed").is_true() self.onBoardingPage.click_next() assert_that(self.onBoardingPage.is_4th_slide_displayed(), "Appropriate slide is displayed").is_true() self.onBoardingPage.swipe_previous() assert_that(self.onBoardingPage.is_3rd_slide_displayed(), "Appropriate slide is displayed").is_true() self.onBoardingPage.swipe_next() assert_that(self.onBoardingPage.is_4th_slide_displayed(), "Appropriate slide is displayed").is_true() self.onBoardingPage.click_set_profile() assert_that(self.onBoardingPage.is_country_confirmation_displayed(), "Country confirmation is displayed").is_true() assert_that(self.onBoardingPage.is_user_market_displayed(user_market), "User market is displayed").is_true() self.onBoardingPage.click_back_on_set_profile() assert_that(self.onBoardingPage.is_onboarding_displayed(), "Appropriate slide is displayed").is_true() self.onBoardingPage.click_next().click_next().click_next().click_set_profile().click_start() assert_that(self.searchPage.is_recent_search_displayed(), "Search screen is displayed").is_true() self.searchPage.select_profile_tab() self.profilePage.logout() self.loginPage.login_without_on_boarding_handler(login, password) assert_that(self.searchPage.is_recent_search_displayed(), "Search screen is displayed").is_true() finally: self.onBoardingPage.set_on_boarding_flow(user_id, 1)