import datetime import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.src.pages.chart_digest import ChartDigestPage from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.login_page import LoginPage from app.src.pages.top_charts_page import TopChartsPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class TopChartsPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.topChartsPage = TopChartsPage(self.driver) self.chart_digest = ChartDigestPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.tp = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-6290") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-6241] Top Charts. Deep linking verification.") @allure.description("TC verifies deep linking on the Charts page.") def test_top_charts_deep_linking(self): self.loginPage.login_with_worker() # step 1 cd_url = self.tp.get_url() for s in [self.chart_digest.TOP_VIEW, self.chart_digest.MAJOR_MOVES, self.chart_digest.BUBBLING_UNDER]: self.chart_digest.open_url(cd_url) self.chart_digest.open_top_charts_from_table(s) self.topChartsPage.verify_chosen_switch(self.topChartsPage.DAILY) self.tp.verify_params_in_url({self.topChartsPage.tab: "spotify"}) # step 2 charts_current_date = datetime.datetime.strptime(self.topChartsPage.get_chosen_date(), "%m/%d/%y").date() url_before = self.tp.get_url() date_p = self.tp.parameter_from_url(self.topChartsPage.date) self.topChartsPage.change_filter_value("a", self.topChartsPage.SPOTIFY_TYPE) self.topChartsPage.open_filter_menu(self.topChartsPage.SPOTIFY_TYPE) self.topChartsPage.filter_check_sony_tracks() url_after = self.tp.get_url() assert_that(url_before).is_equal_to(url_after) # step 3 self.topChartsPage.change_spotify_market(AppConfig.get("market")["australia"]["name"]) market_p = self.tp.parameter_from_url(self.topChartsPage.market) assert_that(market_p).is_equal_to(AppConfig.get("market")["australia"]["market"]) # step 4 self.topChartsPage.switch_tab(self.topChartsPage.WEEKLY) selected_weekly_date = self.topChartsPage.get_chosen_date() selected_weekly_date_f = datetime.datetime.strptime(selected_weekly_date, self.tp.get_date_format_from_locale()).date() date_p = self.tp.parameter_from_url(self.topChartsPage.date) chart_type_p = self.tp.parameter_from_url(self.topChartsPage.chart_type) assert_that(chart_type_p).is_equal_to("2") assert_that(str(selected_weekly_date_f)).is_equal_to(date_p) # step 5 self.topChartsPage.switch_tab(self.topChartsPage.DAILY) past_date = charts_current_date - datetime.timedelta(days=1) self.gtp.enter_datepicker_date_manually(date=str(past_date), location="top_charts") selected_date = self.topChartsPage.get_chosen_date() selected_date_f = datetime.datetime.strptime(selected_date, self.tp.get_date_format_from_locale()).date() date_p = self.tp.parameter_from_url(self.topChartsPage.date) assert_that(str(selected_date_f)).is_equal_to(date_p) # step 6 self.topChartsPage.refresh() self.topChartsPage.verify_chosen_switch(self.topChartsPage.SPOTIFY_TYPE) date_after = self.topChartsPage.get_chosen_date() assert_that(selected_date).is_equal_to(date_after) # step 7 self.topChartsPage.switch_tab(self.topChartsPage.APPLE_TYPE) self.tp.verify_params_in_url({self.topChartsPage.tab: "apple"}) # step 8 url_before = self.tp.get_url() self.topChartsPage.change_filter_value("b", self.topChartsPage.APPLE_TYPE) url_after = self.tp.get_url() assert_that(url_before).is_equal_to(url_after) # step 9 self.topChartsPage.change_apple_market(AppConfig.get("market")["us"]["name"]) market_p = self.tp.parameter_from_url(self.topChartsPage.market) assert_that(market_p).is_equal_to(AppConfig.get("market")["us"]["market"]) # step 10 self.tp.select_market(AppConfig.get("market")["us"]["name"]) self.topChartsPage.refresh() self.topChartsPage.verify_chosen_switch(self.topChartsPage.APPLE_TYPE) self.topChartsPage.verify_apple_market(AppConfig.get("market")["us"]["name"]) # step 11-12 for s in [self.chart_digest.TOP_VIEW, self.chart_digest.MAJOR_MOVES, self.chart_digest.BUBBLING_UNDER]: self.chart_digest.open_url(cd_url) if s == self.chart_digest.TOP_VIEW: self.chart_digest.select_tab("top-view-apple") else: self.chart_digest.select_tab(self.chart_digest.TAB_APPLE) self.chart_digest.open_top_charts_from_table(s) self.topChartsPage.verify_chosen_switch(self.topChartsPage.APPLE_TYPE) self.tp.verify_params_in_url({self.topChartsPage.tab: "apple"}) # step 13 self.topChartsPage.switch_tab(self.topChartsPage.SPOTIFY_TYPE) self.topChartsPage.verify_chosen_switch(self.topChartsPage.SPOTIFY_TYPE) self.tp.verify_params_in_url({self.topChartsPage.tab: "spotify"})