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, CoreConfig from app.api_client import ApiClient from ...pages.login_page import LoginPage from ...pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): global_market = AppConfig.get("market")["global"]["name"] canada_market = AppConfig.get("market")["canada"]["name"] us_market = AppConfig.get("market")["us"]["name"] market_dd_exp_tooltip = "2 Markets" canada = AppConfig.get("market")["canada"]["market"] us = AppConfig.get("market")["us"]["market"] all_streams = AppConfig.get("source")["all_streams"] by_source = AppConfig.get("source")["by_source"] by_dsp = AppConfig.get("dsp")["by_dsp"] spotify = AppConfig.get("dsp")["spotify"] @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-4772") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4526] Data recalculation for multiple selected markets. SPOTIFY.") @allure.description("""TC verifies that after selecting several markets data on the UI is recalculated properly.""") def test_spotify_data_recalc_multiple_markets(self): user = self.loginPage.login_with_worker() token = self.api_client.authorize(user=user) self.tp.select_market(self.global_market) self.tp.open_spotify_track_page(AppConfig.get("track40")["id"]) self.tp.select_dsp(AppConfig.get("dsp")["spotify"]) # step 1 self.tp.market_dd_choose_few_countries([self.canada_market, self.us_market]) market_dd_tooltip = self.tp.graph_get_selected_market() assert_that(market_dd_tooltip).is_equal_to(self.market_dd_exp_tooltip) # step 2 self.tp.open_current_url_with_param("&str_gr_start_date=2020-10-10&str_gr_end_date=2020-10-11") self.tp.is_graph_period_displayed() tooltip_sources_values = self.tp.graph_get_tooltip_totals(count=1)[0]["values"][:-1] tooltip_total_sources = self.tp.graph_get_tooltip_totals(count=1)[0]["values"][-1:] tooltip_sources_percentage = self.tp.graph_get_tooltip_totals(count=1)[0]["percentage"] api_sources = self.tp.graph_legend_get_api_values_spotify( markets=[self.us, self.canada], start_date="2020-10-10", end_date="2020-10-10", isrc=AppConfig.get("track40")["isrc"], ) api_sources_values = [ api_sources["lb"]["other"], api_sources["lf"]["search"], api_sources["lf"]["artist_page"], api_sources["lf"]["album_page"], api_sources["lf"]["play_queue"], api_sources["lb"]["chart"], api_sources["lb"]["daily_mix"], api_sources["lb"]["radio"], api_sources["lb"]["discover_weekly"], api_sources["lb"]["release_radar"], api_sources["lb"]["playlists"], api_sources["lf"]["collection"], ] api_sources_percentage = [] for p in api_sources_values: api_sources_percentage.append(self.tp.apply_rounding_percentage(p / api_sources["total"] * 100)) assert_that(tooltip_sources_values).is_equal_to(api_sources_values) assert_that(tooltip_total_sources[0]).is_equal_to(api_sources["total"]) assert_that(tooltip_sources_percentage).is_equal_to(api_sources_percentage) # step 3 self.tp.change_source_type(self.all_streams) all_streams_tooltip = self.tp.graph_get_tooltips()[0].split("\n")[2].split(" ")[0].replace(",", "") assert_that(str(all_streams_tooltip)).is_equal_to(str(api_sources["total"])) self.tp.select_dsp(self.by_dsp) tooltip_by_dsp = self.tp.get_tooltip_info_track_performance() spotify_total_by_dsp = tooltip_by_dsp["spotify"][0] assert_that(str(spotify_total_by_dsp)).is_equal_to(str(api_sources["total"])) # step 4,5 self.tp.go_to_url(CoreConfig.ENV_BASE_URL + "/spotify/track/3tjFYV6RSFtuktYl3ZtYcq?market=14&str_gr_country=ca%2Cus&str_gr_start_date=2020-10-01&str_gr_end_date=2020-10-31") self.tp.select_dsp(self.spotify) lean_values = self.tp.get_lean_values() lf_values = lean_values["lean_forward_by_source"] lb_values = lean_values["lean_back_by_source"] api_lb_lf_sources_values = self.tp.graph_legend_get_api_values_spotify( markets=[self.us, self.canada], start_date="2020-10-01", end_date="2020-10-31", isrc=AppConfig.get("track40")["isrc"], ) api_lf_sources_values = [ api_lb_lf_sources_values["lf"]["collection"], api_lb_lf_sources_values["lf"]["play_queue"], api_lb_lf_sources_values["lf"]["album_page"], api_lb_lf_sources_values["lf"]["artist_page"], api_lb_lf_sources_values["lf"]["search"], ] api_lb_sources_values = [ api_lb_lf_sources_values["lb"]["playlists"], api_lb_lf_sources_values["lb"]["release_radar"], api_lb_lf_sources_values["lb"]["discover_weekly"], api_lb_lf_sources_values["lb"]["radio"], api_lb_lf_sources_values["lb"]["daily_mix"], api_lb_lf_sources_values["lb"]["chart"], api_lb_lf_sources_values["lb"]["other"], ] assert_that(lf_values).is_equal_to(api_lf_sources_values) assert_that(lb_values).is_equal_to(api_lb_sources_values) # step 6 legend_streams_total = str(self.tp.get_streams_in_period_total()).replace(",", "") assert_that(legend_streams_total).is_equal_to(str(api_lb_lf_sources_values["total"])) # step7 self.tp.change_source_type(self.all_streams) all_streams_spotify_total = self.tp.get_streams_values_all_streams() assert_that(all_streams_spotify_total["dsp_value"]).is_equal_to(api_lb_lf_sources_values["total"]) self.tp.select_dsp(self.by_dsp) by_dsp_spotify_total = self.tp.get_streams_values_by_dsp() assert_that(by_dsp_spotify_total["spotify_value"]).is_equal_to(api_lb_lf_sources_values["total"]) # step 8, 9 self.tp.select_dsp(self.spotify) save_and_skips = self.tp.get_save_and_skips() api_save_and_skips = self.tp.get_api_save_and_skips_spotify( isrcs=[AppConfig.get("track40")["isrc"]], start_date="2020-10-01", end_date="2020-10-31", markets=[self.us, self.canada], token=token, ) assert_that(save_and_skips[1]).is_equal_to(api_save_and_skips["saves"]) # step 10, 11 age_groups_tooltip_info = self.tp.get_age_groups_tooltip_info()["streams"] gender_groups_tooltip_info = self.tp.get_gender_groups_tooltip_info()["streams"] api_age_gender = self.tp.get_api_age_gender_values_spotify( isrc=AppConfig.get("track40")["isrc"], start_date="2020-10-01", end_date="2020-10-31", markets=[self.us, self.canada], token=token, ) assert_that(age_groups_tooltip_info).is_equal_to(api_age_gender["ages"]) assert_that(gender_groups_tooltip_info).is_equal_to(api_age_gender["genders"]) # step 12 self.tp.stream_and_source_choose_region(self.tp.REGION_NORTH_AMERICA) save_and_skips_region = self.tp.get_save_and_skips() age_groups_region = self.tp.get_age_groups_tooltip_info()["streams"] gender_groups_region = self.tp.get_gender_groups_tooltip_info()["streams"] assert_that(save_and_skips_region[0]).is_equal_to(api_save_and_skips["streams"]) assert_that(save_and_skips_region[1]).is_equal_to(api_save_and_skips["saves"]) assert_that(age_groups_region).is_equal_to(api_age_gender["ages"]) assert_that(gender_groups_region).is_equal_to(api_age_gender["genders"]) @parameterized.expand( [ ("Middle East", AppConfig.get("regions")["middle_east"]["api"]), ("CIS", AppConfig.get("regions")["cis"]["api"]), ("Asia", AppConfig.get("regions")["asia"]["api"]), ("Europe", AppConfig.get("regions")["europe"]["api"]), ("Latin-Iberia", AppConfig.get("regions")["latin_iberia"]["api"]), ("Africa", AppConfig.get("regions")["africa"]["api"]), ("Oceania", AppConfig.get("regions")["oceania"]["api"]), ("UK", AppConfig.get("regions")["uk"]["api"]), ] ) @allure.story("AP-4772") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4526] Data recalculation for multiple selected markets. SPOTIFY. STEP 13") @allure.description("TC verifies that after selecting several markets data on the UI is recalculated properly. STEP 13") def test_select_several_countries_spotify_step_13(self, region, markets): user = self.loginPage.login_with_worker() token = self.api_client.authorize(user=user) self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) url_base = self.tp.get_url() self.tp.open_url(f"{url_base}&str_gr_dsp=2&str_gr_view=2&str_gr_start_date=2020-10-01&str_gr_end_date=2020-10-31") self.tp.select_dsp(self.spotify) self.tp.stream_and_source_choose_region(region) api_save_and_skips = self.tp.get_api_save_and_skips_spotify( isrcs=[AppConfig.get("track40")["isrc"]], start_date="2020-10-01", end_date="2020-10-31", markets=markets, token=token, ) api_age_gender = self.tp.get_api_age_gender_values_spotify( isrc=AppConfig.get("track40")["isrc"], start_date="2020-10-01", end_date="2020-10-31", markets=markets, token=token, ) save_and_skips_region = self.tp.get_save_and_skips() age_groups_region = self.tp.get_age_groups_tooltip_info()["streams"] gender_groups_region = self.tp.get_gender_groups_tooltip_info()["streams"] assert_that(save_and_skips_region[0]).is_equal_to(api_save_and_skips["streams"]) assert_that(save_and_skips_region[1]).is_equal_to(api_save_and_skips["saves"]) assert_that(age_groups_region).is_equal_to(api_age_gender["ages"]) assert_that(gender_groups_region).is_equal_to(api_age_gender["genders"])