import unittest from datetime import datetime import allure import pytest from assertpy import assert_that from parameterized import parameterized from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.api_client import ApiClient from app.src.pages.chart_digest import ChartDigestPage 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.api_client = ApiClient() self.tp = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-9977") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-9668][Top Charts] DL for Spotify and Apple tabs verification. STEPS 1-7, 9") @allure.description("TC Verifies: Default DL opening and navigating beetwen all Top Charts tabs for: Spotify Top 200 Daily, Spotify Top 200 Weekly, Apple Top 100 STEPS 1-7, 9") def test_dl_top_charts_spotify_apple_tabs_steps_1_7_9(self): self.loginPage.login_with_worker() self.tp.select_market(AppConfig.get("market")["us"]["name"]) # step 1 self.topChartsPage.open_top_chart_page() datepicker_date_step1 = self.topChartsPage.get_chosen_date() datepicker_date = datetime.strptime(datepicker_date_step1, self.tp.get_date_format_from_locale()).strftime("%Y-%m-%d") self.tp.verify_params_in_url({self.topChartsPage.tab: self.topChartsPage.SPOTIFY_TYPE, self.topChartsPage.market: AppConfig.get("market")["us"]["market"], self.topChartsPage.chart_type: 1, self.topChartsPage.date: datepicker_date}) url_step1 = self.topChartsPage.get_url() # step 2 self.topChartsPage.change_sub_tab(self.topChartsPage.WEEKLY) datepicker_date_step2 = self.topChartsPage.get_chosen_date() datepicker_date = datetime.strptime(datepicker_date_step2, self.tp.get_date_format_from_locale()).strftime("%Y-%m-%d") self.tp.verify_params_in_url({self.topChartsPage.tab: self.topChartsPage.SPOTIFY_TYPE, self.topChartsPage.market: AppConfig.get("market")["us"]["market"], self.topChartsPage.chart_type: 2, self.topChartsPage.date: datepicker_date}) url_step2 = self.topChartsPage.get_url() # step 3 self.topChartsPage.change_sub_tab(self.topChartsPage.DAILY) assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) self.topChartsPage.change_sub_tab(self.topChartsPage.WEEKLY) assert_that(datepicker_date_step2).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step2).is_equal_to(self.topChartsPage.get_url()) # step 4 self.topChartsPage.go_back() assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) # step 5 self.topChartsPage.switch_tab(self.topChartsPage.APPLE_TYPE) selected_date = self.topChartsPage.get_chosen_date() selected_date_f = datetime.strptime(selected_date, "%m/%d/%y").strftime("%Y-%m-%d") self.tp.verify_params_in_url({self.topChartsPage.tab: self.topChartsPage.APPLE_TYPE, self.topChartsPage.market: AppConfig.get("market")["us"]["market"], self.topChartsPage.date: selected_date_f}) # step 6 self.topChartsPage.go_back() assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) # step 7 self.topChartsPage.switch_tab(self.topChartsPage.APPLE_TYPE) self.topChartsPage.switch_tab(self.topChartsPage.SPOTIFY_TYPE) assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) # step 9 self.topChartsPage.switch_tab(self.topChartsPage.APPLE_TYPE) self.topChartsPage.wait_for_table_load() url_step9 = self.topChartsPage.get_url() self.topChartsPage.switch_tab(self.topChartsPage.SPOTIFY_TYPE) self.topChartsPage.go_back() self.topChartsPage.wait_for_table_load() assert_that(url_step9).is_equal_to(self.topChartsPage.get_url()) # step 10 self.topChartsPage.switch_tab(self.topChartsPage.SPOTIFY_TYPE) self.topChartsPage.change_sub_tab(self.topChartsPage.WEEKLY) self.topChartsPage.go_back() assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) self.topChartsPage.go_back() assert_that(url_step9).is_equal_to(self.topChartsPage.get_url()) @parameterized.expand(["youtube", "shazam", "amazon"]) @allure.story("AP-9977") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-9668][Top Charts] DL for Spotify and Apple tabs verification. STEPS 8, 11") @allure.description("TC Verifies: Default DL opening and navigating beetwen all Top Charts tabs for: Spotify Top 200 Daily, Spotify Top 200 Weekly, Apple Top 100 STEPS 8, 11") def test_dl_top_charts_spotify_apple_tabs_steps_8_11(self, tab): self.loginPage.login_with_worker() self.tp.select_market(AppConfig.get("market")["us"]["name"]) self.topChartsPage.open_top_chart_page() datepicker_date_step1 = self.topChartsPage.get_chosen_date() url_step1 = self.topChartsPage.get_url() # step 8 self.topChartsPage.switch_tab(tab) if tab == "youtube": selected_date_f = self.api_client.get_charts_trending_dates_markets()["charts"]["max"] else: selected_date = self.topChartsPage.get_chosen_date() selected_date_f = datetime.strptime(selected_date, "%m/%d/%y").strftime("%Y-%m-%d") self.tp.verify_params_in_url({self.topChartsPage.tab: tab, self.topChartsPage.market: AppConfig.get("market")["us"]["market"], self.topChartsPage.date: selected_date_f}) self.topChartsPage.go_back() assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) self.topChartsPage.switch_tab(tab) self.topChartsPage.switch_tab(self.topChartsPage.SPOTIFY_TYPE) assert_that(datepicker_date_step1).is_equal_to(self.topChartsPage.get_chosen_date()) assert_that(url_step1).is_equal_to(self.topChartsPage.get_url()) @parameterized.expand(["youtube", "shazam", "amazon"]) @allure.story("AP-9977") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-9668][Top Charts] DL for Spotify and Apple tabs verification. STEPS 11") @allure.description("TC Verifies: Default DL opening and navigating beetwen all Top Charts tabs for: Spotify Top 200 Daily, Spotify Top 200 Weekly, Apple Top 100 STEPS 11") def test_dl_top_charts_spotify_apple_tabs_steps_11(self, tab): self.loginPage.login_with_worker() self.tp.select_market(AppConfig.get("market")["us"]["name"]) self.topChartsPage.open_top_chart_page() # step 11 self.topChartsPage.change_sub_tab(self.topChartsPage.WEEKLY) self.topChartsPage.get_chosen_date() url_step2 = self.topChartsPage.get_url() self.topChartsPage.switch_tab(tab) self.topChartsPage.go_back() assert_that(url_step2).is_equal_to(self.topChartsPage.get_url())