import random 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.api_client import ApiClient 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.trackPage = TrackPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-7622") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5825][Top Charts. Shazam] Pop-up Period verification") @allure.description("TC verifies that users can change the period on the pop-up on the Top Charts page → 'Shazam Daily Top 200' tab.") def test_top_shazam_popup_period_verification(self): self.loginPage.login_with_worker() self.trackPage.select_market(AppConfig.get("market")["global"]["name"]) self.topChartsPage.open_top_chart_page() self.topChartsPage.switch_tab(self.topChartsPage.SHAZAM_TYPE) position = random.choice([1, 2, 3, 4, 5]) self.topChartsPage.shazam_open_popup(position) start_end_period_first = self.trackPage.get_calendar_start_date, self.trackPage.get_calendar_end_date() # step 1 self.trackPage.verify_date_picker() # step 3-5, 7 self.topChartsPage.graph_verify_predefined_periods() # step 6 self.topChartsPage.popup_calendar_verify_hint() # step 8, 10, 12 self.topChartsPage.verify_popup_calendar_navigation() # step 9 axis_before = self.trackPage.graph_get_xaxis() self.trackPage.select_previous_mounth_period() if not self.topChartsPage.verify_pop_up_no_data(False): axis_after = self.trackPage.graph_get_xaxis() assert_that(axis_before).is_not_equal_to(axis_after) # step 11 self.topChartsPage.shazam_close_popup() self.topChartsPage.shazam_open_popup(position) start_end_period_second = self.trackPage.get_calendar_start_date, self.trackPage.get_calendar_end_date() assert_that(start_end_period_first).is_equal_to(start_end_period_second) # NOT AUTOMATED - STEPS 2, 5(skeleton, TBD is not automated)