import datetime import unittest 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.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): city_darwin = "Darwin" @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) @parameterized.expand([("global", "All Cities"), ("us", "All Cities"), ("us", "Chicago")]) @allure.story("AP-7584") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5822][Shazam] Top-200 chart table data verification") @allure.description("TC verifies data in the table on Top Charts → Shazam Daily Top 200.") def test_top_shazam_chart_table_data_verification(self, market, city): 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) self.topChartsPage.select_shazam_market(AppConfig.get("market")[market]["name"]) if city != "All Cities": self.topChartsPage.select_shazam_city(city) city_api = self.trackPage.parameter_from_url(self.topChartsPage.city) else: city_api = "" # step 1, 14-15 date_ui = self.topChartsPage.get_shazam_date_ui() market_api = self.trackPage.parameter_from_url(self.topChartsPage.market) first_track_api = self.api_client.get_shazam_charts(market=market_api, date=date_ui, city=city_api)["items"][0] table_ui = self.topChartsPage.get_all_from_table_shazam(False) assert_that(first_track_api["track"]["name"]).is_equal_to(table_ui["titles"][0].split("\n")[0]) # step 12 assert_that(datetime.datetime.strptime(first_track_api["track"]["release_date"], "%Y-%m-%d").strftime(AppConfig.get("date_formats")["mm/dd/yy"])).is_equal_to(table_ui["release_date"][0]) assert_that(abs(first_track_api["peak"]["position"])).is_equal_to(table_ui["peak_positions"][0]) assert_that(datetime.datetime.strptime(first_track_api["peak"]["date"], "%Y-%m-%d").strftime(AppConfig.get("date_formats")["mm/dd/yy"])).is_equal_to(table_ui["peak_dates"][0]) assert_that(first_track_api["shazams"]).is_equal_to(table_ui["lifetime_shazam"][0]) assert_that(first_track_api["days_on_chart"]).is_equal_to(table_ui["lifetime_days"][0]) # NOT AUTOMATED - STEPS 2-11, 13, 16