import logging import unittest import allure import pytest from assertpy import assert_that from faker import Faker from ui_automation_framework.utils import logger as cl from app.src.helpers.api_data_provider import ApiDataProvider from app.src.helpers.data_formaters import DataFormatter from app.src.helpers.waiting_wrapper import wait from app.src.pages.chart_digest_page import ChartDigestPage from app.src.pages.login_page import LoginPage from app.src.pages.profile_page import ProfilePage from app.src.pages.search_page import SearchPage from app.src.pages.streams_by_markets_page import StreamsByMarketsPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up", "authorized_api") class MarketDetailedTest(unittest.TestCase): log = cl.Logger(logging.DEBUG) @pytest.fixture(autouse=True) def classSetup(self, authorized_api): self.api = authorized_api self.loginPage = LoginPage(self.driver, authorized_api) self.chartDigestPage = ChartDigestPage(self.driver, authorized_api) self.trackPage = TrackPage(self.driver, authorized_api) self.searchPage = SearchPage(self.driver, authorized_api) self.data_provider = ApiDataProvider(authorized_api) self.profilePage = ProfilePage(self.driver) self.streamsPage = StreamsByMarketsPage(self.driver, authorized_api) self.fake = Faker() # The test below may fail in condition latest day >= last friday of the month as actual chart week won't be # displayed @allure.story("https://data-analytics.atlassian.net/browse/AG-5268") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market Detailed - KPI") @allure.description("Verify KPI cards for spotify track on Markets Detailed screen for Spotify track") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4819," "https://data-analytics.atlassian.net/browse/AG-4820," "https://data-analytics.atlassian.net/browse/AG-4821," "https://data-analytics.atlassian.net/browse/AG-4822") @pytest.mark.regression def test_card_content(self): market = "United States" track_data = self.data_provider.get_top_charts_spotify_track_data() track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() global_card_content = self.trackPage.get_global_market_card_content() self.trackPage.open_market_detailed_page() last_date_date = self.trackPage.get_last_date_card_date() last_date_value = self.trackPage.get_last_date_card_value() last_date_trend = self.trackPage.get_last_date_card_trend() assert_that(global_card_content).described_as("Last date card").contains(last_date_date).described_as("Last date card").contains(last_date_value).described_as("Last date card").contains(last_date_trend) latest_week_value = self.trackPage.get_last_week_card_value() latest_week_trend = self.trackPage.get_last_week_card_trend() latest_week_dates = self.trackPage.get_last_week_card_dates() assert_that(global_card_content).described_as("Verified last week card").contains(latest_week_dates).contains(latest_week_value).contains(latest_week_trend) past_chart_week_date = self.trackPage.get_past_chart_week_card_date() past_chart_week_value = self.trackPage.get_past_chart_week_card_value() past_chart_week_trend = self.trackPage.get_past_chart_week_card_trend() assert_that(global_card_content).described_as("Verified past chart week card").contains(past_chart_week_date).contains(past_chart_week_value).contains(past_chart_week_trend) actual_chart_week_date = self.trackPage.get_actual_chart_week_card_date() actual_chart_week_value = self.trackPage.get_actual_chart_week_card_value() assert_that(global_card_content).described_as("Verified actual chart week card").contains(actual_chart_week_date).contains(actual_chart_week_value) all_time_value = self.trackPage.get_all_time_card_value() assert_that(global_card_content).described_as("ALL TIME card").contains(all_time_value) # The test below may fail in condition latest day >= last friday of the month as actual chart week won't be # displayed @allure.story("https://data-analytics.atlassian.net/browse/AG-5268") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market Detailed - KPI") @allure.description("Verify KPI cards for spotify track on Markets Detailed screen for Sony track") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4819," "https://data-analytics.atlassian.net/browse/AG-4820," "https://data-analytics.atlassian.net/browse/AG-4821," "https://data-analytics.atlassian.net/browse/AG-4822") @pytest.mark.regression @pytest.mark.skip("No locators") def test_cards_content_sony(self): market = ["United Kingdom", "gb"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) isrc = track_data[1] track = track_data[0] streams_count = self.trackPage.get_api_streams_count_market(isrc, market[1]) global_streams_count = self.trackPage.get_api_streams_count_global(isrc, market[1]) dates = self.trackPage.get_api_dates(isrc, market[1]) is_current_chart_week_shown = dates[4] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() global_card_content = self.trackPage.get_global_market_card_content() market_card_content = self.trackPage.get_local_market_card_content() if is_current_chart_week_shown: global_streams_api_chart_week = global_streams_count[0] market_streams_api_chart_week = streams_count[0] dates_api_chart_week = dates[3] assert_that(market_card_content).described_as("Streams count").contains(market_streams_api_chart_week).described_as("Dates checking").contains(dates_api_chart_week) assert_that(global_card_content).described_as("Streams count global").contains(global_streams_api_chart_week) global_streams_api_rolling_week = global_streams_count[1] global_streams_api_latest_date = global_streams_count[2] global_streams_api_current_week = global_streams_count[3] market_streams_api_rolling_week = streams_count[1] market_streams_api_latest_date = streams_count[2] market_streams_api_current_week = streams_count[3] dates_api_latest_date = dates[0] dates_api_cur_week = dates[1] dates_api_rolling_week = dates[2] if is_current_chart_week_shown: assert_that(market_card_content).described_as("Streams count").contains(market_streams_api_rolling_week).described_as("Dates ").contains(dates_api_cur_week) assert_that(global_card_content).described_as("Streams count").contains(global_streams_api_rolling_week) assert_that(market_card_content).described_as("streams count").contains(market_streams_api_current_week).described_as("streams count").contains(market_streams_api_latest_date).described_as("date").contains(dates_api_latest_date).described_as("date").contains(dates_api_rolling_week) assert_that(global_card_content).described_as("Streams count").contains(global_streams_api_current_week).contains(global_streams_api_latest_date) self.trackPage.open_market_specific_market_detailed_page() last_date_date = self.trackPage.get_last_date_card_date() last_date_value = self.trackPage.get_last_date_card_value() last_date_trend = self.trackPage.get_last_date_card_trend() assert_that(market_card_content).described_as("Last date").contains(last_date_date).contains(last_date_value).contains(last_date_trend) latest_week_value = self.trackPage.get_last_week_card_value() latest_week_trend = self.trackPage.get_last_week_card_trend() latest_week_dates = self.trackPage.get_last_week_card_dates() assert_that(market_card_content).described_as("Last week card").contains(latest_week_dates).contains(latest_week_value).contains(latest_week_trend) past_chart_week_date = self.trackPage.get_past_chart_week_card_date() past_chart_week_value = self.trackPage.get_past_chart_week_card_value() past_chart_week_trend = self.trackPage.get_past_chart_week_card_trend() assert_that(market_card_content).described_as("Past chart week card").contains(past_chart_week_date).contains(past_chart_week_value).contains(past_chart_week_trend) if is_current_chart_week_shown: actual_chart_week_date = self.trackPage.get_actual_chart_week_card_date() actual_chart_week_value = self.trackPage.get_actual_chart_week_card_value() assert_that(market_card_content).described_as("Actual chart week card").contains(actual_chart_week_date).contains(actual_chart_week_value) all_time_value = self.trackPage.get_all_time_card_value() assert_that(market_card_content).described_as("ALL TIME card").contains(all_time_value) @allure.story("https://data-analytics.atlassian.net/browse/AG-5268") @allure.severity(allure.severity_level.NORMAL) @allure.title("Filtering by date on extended market screen") @allure.description("User should be able to specify date period filtering on extended market screen") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-4967" "https://data-analytics.atlassian.net/browse/AG-4965," "https://data-analytics.atlassian.net/browse/AG-4968," "https://data-analytics.atlassian.net/browse/AG-4969," "https://data-analytics.atlassian.net/browse/AG-4972," "https://data-analytics.atlassian.net/browse/AG-4973" ) @pytest.mark.smoke def test_date_picker_spotify(self): market = "Australia" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().open_date_picker() assert_that(self.trackPage.is_date_picker_opened(), "Verified date picker popup is opened").is_true() picker_dates = self.trackPage.get_date_picker_dates() self.trackPage.select_1_year_date_filter() assert_that(self.trackPage.is_1_year_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_4_weeks_date_filter() assert_that(self.trackPage.is_4_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker() self.trackPage.select_8_weeks_date_filter() assert_that(self.trackPage.is_8_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_12_weeks_date_filter() assert_that(self.trackPage.is_12_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_26_weeks_date_filter() assert_that(self.trackPage.is_26_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_2_weeks_date_filter() assert_that(self.trackPage.is_2_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5268") @allure.severity(allure.severity_level.NORMAL) @allure.title("Filtering by date on extended market screen") @allure.description("User should be able to specify date period filtering on extended market screen") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-4967" "https://data-analytics.atlassian.net/browse/AG-4965," "https://data-analytics.atlassian.net/browse/AG-4968," "https://data-analytics.atlassian.net/browse/AG-4969," "https://data-analytics.atlassian.net/browse/AG-4972," "https://data-analytics.atlassian.net/browse/AG-4973" ) @pytest.mark.smoke def test_date_picker_apple(self): market = "Australia" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().open_date_picker() assert_that(self.trackPage.is_date_picker_opened(), "Verified date picker popup is opened").is_true() picker_dates = self.trackPage.get_date_picker_dates() self.trackPage.select_1_year_date_filter() assert_that(self.trackPage.is_1_year_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_4_weeks_date_filter() assert_that(self.trackPage.is_4_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_8_weeks_date_filter() assert_that(self.trackPage.is_8_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_12_weeks_date_filter() assert_that(self.trackPage.is_12_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_26_weeks_date_filter() assert_that(self.trackPage.is_26_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() self.trackPage.open_date_picker().select_2_weeks_date_filter() assert_that(self.trackPage.is_2_weeks_date_filter_applied(picker_dates), "Verified filter applied").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5268") @allure.severity(allure.severity_level.NORMAL) @allure.title("Date picker. Negative scenarios") @allure.description("Close without selection. Only one option is can be selected. No streams for period") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5368" "https://data-analytics.atlassian.net/browse/AG-4970," "https://data-analytics.atlassian.net/browse/AG-4971") @pytest.mark.regression def test_date_picker_negative(self): market = "Bahrain" track_no_data = "Franco Un-American - Live" self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track_no_data) self.searchPage.open_track_page_from_results(1) self.trackPage.open_market_specific_market_detailed_page().open_date_picker().select_4_weeks_date_filter() assert_that(self.trackPage.is_no_streams_for_period_on_market_details(), "Streams are shown for selected period").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5270") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market selector") @allure.description("User should be able to change market on detailed market page") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5166," "https://data-analytics.atlassian.net/browse/AG-5167," "https://data-analytics.atlassian.net/browse/AG-5168," "https://data-analytics.atlassian.net/browse/AG-5170") @pytest.mark.smoke def test_market_selector(self): main_market = ["United States", "US"] second_market = ["Mexico", "MX"] third_market = ["China", "CN"] track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(main_market[0]).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() last_date_value = self.trackPage.get_last_date_card_value() self.trackPage.click_market_selector() assert_that(self.trackPage.is_market_selector_opened(), "Verified market selector is opened").is_true() self.trackPage.select_market_from_the_list(second_market[0]) assert_that(self.trackPage.is_market_changed(second_market[1]), "Verified market is set for the track").is_true() us_date_value = self.trackPage.get_last_date_card_value() assert_that(us_date_value).is_not_equal_to(last_date_value) self.trackPage.click_market_selector().select_market_via_search(third_market[0]) assert_that(self.trackPage.is_market_changed(third_market[1]), "Verified market is set for the track").is_true() cn_date_value = self.trackPage.get_last_date_card_value() assert_that(us_date_value).is_not_equal_to(cn_date_value) self.trackPage.click_back_button().click_back_button() self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_market_selected(main_market[1], main_market[0]), "Verified market is set across app").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5271") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Overview (default)") @allure.description("User should be able to get access to streams overview section") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-1818," "https://data-analytics.atlassian.net/browse/AG-4997," "https://data-analytics.atlassian.net/browse/AG-2786") @pytest.mark.smoke def test_streams_overview_default_view(self): market = "Australia" track_1 = "Dance Monkey" track_2 = "Watermelon Sugar" track_3 = "Everything I wanted" self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track_1) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() assert_that(self.trackPage.are_streams_overview_graphs_shown(), "Verified streams overview cards are displayed").is_true() self.trackPage.click_back_button().click_back_button() self.searchPage.clear_search_field().search_for(track_2) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() assert_that(self.trackPage.are_streams_overview_graphs_shown(), "Verified streams overview cards are displayed").is_true() self.trackPage.click_back_button().click_back_button() self.searchPage.clear_search_field().search_for(track_3) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() assert_that(self.trackPage.no_streams_overview_graphs(), "Verified no streams overview for all DSPs").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5272") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Overview (detailed)") @allure.description("User should see detailed graph for streams overview section in landscape orientation") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-1820," "https://data-analytics.atlassian.net/browse/AG-1821," "https://data-analytics.atlassian.net/browse/AG-2813," "https://data-analytics.atlassian.net/browse/AG-2814," "https://data-analytics.atlassian.net/browse/AG-5123," "https://data-analytics.atlassian.net/browse/AG-2815" ) @pytest.mark.smoke def test_streams_overview_detailed_view_apple(self): market = "Australia" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() assert_that(self.trackPage.are_streams_overview_graphs_shown(), "Verified streams overview cards are displayed").is_true() self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_spotify_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_apple_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_amazon_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5272") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Overview (detailed)") @allure.description("User should see detailed graph for streams overview section in landscape orientation") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-1820," "https://data-analytics.atlassian.net/browse/AG-1821," "https://data-analytics.atlassian.net/browse/AG-2813," "https://data-analytics.atlassian.net/browse/AG-2814," "https://data-analytics.atlassian.net/browse/AG-5123," "https://data-analytics.atlassian.net/browse/AG-2815" ) @pytest.mark.smoke def test_streams_overview_detailed_view_spotify(self): market = "Australia" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() assert_that(self.trackPage.are_streams_overview_graphs_shown(), "Verified streams overview cards are displayed").is_true() self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_spotify_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_apple_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_amazon_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_streams_overview_for_detailed_info().close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5273") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Monitoring") @allure.description("User should get access to streams monitoring by DSPs") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-1846," "https://data-analytics.atlassian.net/browse/AG-4923," "https://data-analytics.atlassian.net/browse/AG-4924," "https://data-analytics.atlassian.net/browse/AG-4925," "https://data-analytics.atlassian.net/browse/AG-4926") @pytest.mark.smoke def test_streams_monitoring_spotify(self): market = "Australia" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_specific_market_detailed_page().scroll_to_streams_monitoring() assert_that(self.trackPage.is_streams_monitoring_shown(), "Verified streams monitoring section is displayed").is_true() self.trackPage.select_stream_monitoring_apple_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100(), "Verifying lean back and forward values").is_true() self.trackPage.select_stream_monitoring_amazon_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100(), "Verifying lean back and forward values").is_true() self.trackPage.select_stream_monitoring_spotify_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100(), "Verifying lean back and forward values").is_true() self.trackPage.select_stream_monitoring_by_dsp_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100_by_dsp(), "Verifying lean back and forward values").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5273") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Monitoring") @allure.description("User should get access to streams monitoring by DSPs") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-1846," "https://data-analytics.atlassian.net/browse/AG-4923," "https://data-analytics.atlassian.net/browse/AG-4924," "https://data-analytics.atlassian.net/browse/AG-4925," "https://data-analytics.atlassian.net/browse/AG-4926") @pytest.mark.smoke def test_streams_monitoring_apple(self): market = "Australia" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_specific_market_detailed_page().scroll_to_streams_monitoring() assert_that(self.trackPage.is_streams_monitoring_shown(), "Verified streams monitoring section is displayed").is_true() self.trackPage.select_stream_monitoring_apple_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100(), "Verifying lean back and forward values").is_true() self.trackPage.select_stream_monitoring_amazon_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100(), "Verifying lean back and forward values").is_true() self.trackPage.select_stream_monitoring_spotify_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100(), "Verifying lean back and forward values").is_true() self.trackPage.select_stream_monitoring_by_dsp_tab() assert_that(self.trackPage.are_lean_back_and_forward_values_100_by_dsp(), "Verifying lean back and forward values").is_true() @allure.story("AG-5936") @allure.severity(allure.severity_level.NORMAL) @allure.title("Logic of the priority of the selected market") @allure.description("User should be able to see Global, Home and selectedmarkets on the top of the list") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5188") @pytest.mark.smoke def test_markets_priority_logic(self): home_market = "Australia" new_selected_market = "Canada" track = self.data_provider.get_top_charts_spotify_track_data("au")[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(home_market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened") self.trackPage.open_market_detailed_page().click_market_selector() first_market = self.trackPage.get_market_name_by_position(2) second_market = self.trackPage.get_market_name_by_position(3) assert_that(first_market).is_equal_to("Global") assert_that(second_market).is_equal_to(home_market) self.trackPage.select_market_via_search(new_selected_market).click_market_selector() first_market = self.trackPage.get_market_name_by_position(2) second_market = self.trackPage.get_market_name_by_position(3) third_market = self.trackPage.get_market_name_by_position(4) assert_that(first_market).is_equal_to("Global") assert_that(second_market).is_equal_to(new_selected_market) assert_that(third_market).is_equal_to(home_market) @allure.story("AG-5936") @allure.severity(allure.severity_level.NORMAL) @allure.title("Logic of the priority of the selected market") @allure.description("User should be able to see Global, Home and selected " "markets on the top of the list") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5188") @pytest.mark.smoke def test_markets_priority_logic_global(self): new_selected_market = "Canada" track = self.data_provider.get_top_charts_spotify_track_data("ca")[0] self.loginPage.login_as_regular_user() self.profilePage.select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().click_market_selector().select_market_via_search(new_selected_market).click_market_selector() first_market = self.trackPage.get_market_name_by_position_with_icons(2) second_market = self.trackPage.get_market_name_by_position(3) assert_that(first_market).contains("\ue92c Global") assert_that(second_market).is_equal_to(new_selected_market) @allure.story("AG-5936") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market is set to default (Home/Global market) when exit the Market detailed page or user Cancel the selection") @allure.description("Market is set to default (Home/Global market) when exit the Market detailed page") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5207," "https://data-analytics.atlassian.net/browse/AG-5230," "https://data-analytics.atlassian.net/browse/AG-5169") @pytest.mark.smoke def test_market_is_set_to_default(self): home_market = "Australia" new_selected_market = "Canada" track_data = self.data_provider.get_top_charts_spotify_track_data("au") track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(home_market).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().click_market_selector().select_market_via_search(new_selected_market) assert_that(self.trackPage.is_market_changed("CA"), "Verified market is set for the track").is_true() self.trackPage.swipe_back().open_market_detailed_page() assert_that(self.trackPage.is_market_changed("Global"), "Verified market is set for the track").is_true() self.trackPage.swipe_back().open_market_specific_market_detailed_page().click_market_selector().select_market_via_search(new_selected_market) assert_that(self.trackPage.is_market_changed("CA"), "Verified market is set for the track").is_true() self.trackPage.swipe_back().open_market_specific_market_detailed_page() assert_that(self.trackPage.is_market_changed("AU"), "Verified market is set for the track").is_true() self.trackPage.click_market_selector().select_market_from_the_list_and_cancel(new_selected_market) assert_that(self.trackPage.is_market_changed("AU"), "Verified market is set for the track").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7447") @allure.severity(allure.severity_level.NORMAL) @allure.title("UI/API integration") @allure.description("Correctness and content for streams monitoring") @pytest.mark.smoke def test_streams_monitoring_api(self): market = ["United Kingdom", "gb"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) track = track_data[0] isrc = track_data[1] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track) self.searchPage.open_track_page_from_results(1) api_data = self.trackPage.open_market_specific_market_detailed_page().get_streams_monitoring_api(f"isrc={isrc}", f"market={market[1]}") ui_spotify = self.trackPage.get_lean_back_lean_forward() for value in api_data[0]: assert_that(ui_spotify).described_as("Spotify stream monitoring data").contains(value) ui_apple = self.trackPage.scroll_to_streams_monitoring().select_stream_monitoring_apple_tab().get_lean_back_lean_forward() for value in api_data[1]: assert_that(ui_apple).described_as("Apple stream monitoring data").contains(value) ui_amazon = self.trackPage.select_stream_monitoring_amazon_tab().get_lean_back_lean_forward() for value in api_data[2]: assert_that(ui_amazon).described_as("Amazon stream monitoring data").contains(value) @allure.story("https://data-analytics.atlassian.net/browse/AG-7599") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Overview. Trends icons") @allure.description("Trends icon on streams overview should represent actual trend") @pytest.mark.smoke def test_market_cards_trend_icons(self): market = ["United Kingdom", "gb"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) track_name = track_data[0] track_isrc = track_data[1] api_trends = self.trackPage.get_api_streams_trends_global(track_isrc, market[1]) self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track_name).open_track_page_from_results(1) ui_trends = self.trackPage.get_global_market_trends_data() market_api_trends = self.trackPage.get_api_streams_trends_market(track_isrc, market[1]) market_ui_trends = self.trackPage.get_local_market_trends_data() self.trackPage.open_market_specific_market_detailed_page() last_date_trend = self.trackPage.get_last_date_card_trend_icon() latest_week_trend = self.trackPage.get_last_week_card_trend_icon() past_chart_week_trend = self.trackPage.get_past_chart_week_card_trend_icon() assert_that(last_date_trend).is_equal_to(market_ui_trends[1][0]) # "Trend icons in market details page don't match") assert_that(latest_week_trend).is_equal_to(market_ui_trends[1][1]) # "Trend icons in market details page don't match") assert_that(past_chart_week_trend).is_equal_to(market_ui_trends[1][2]) # "Trend icons in market details page don't match" for i in range(len(market_api_trends)): assert_that(market_ui_trends[0][i]).described_as("Trends matching").contains(str(abs(market_api_trends[i]))) for i in range(len(market_ui_trends)): if market_api_trends[i] > 0: icon = "\ue905" elif market_api_trends[i] < 0: icon = "\ue902" else: icon = "\ue904" assert_that(market_ui_trends[1][i]).described_as("Trend icon").is_equal_to(icon) for i in range(len(api_trends)): assert_that(ui_trends[0][i]).described_as("Trends matching").contains(str(abs(api_trends[i]))) for i in range(len(api_trends)): if api_trends[i] > 0: icon = "\ue905" elif api_trends[i] < 0: icon = "\ue902" else: icon = "\ue904" assert_that(ui_trends[1][i]).described_as("Trend icon").is_equal_to(icon) @allure.story("https://data-analytics.atlassian.net/browse/AG-7009") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams overview (detailed mode) -- Global market") @allure.description("Analyzing the detailed combined streams graph on Sony tracks card") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-1824", "https://data-analytics.atlassian.net/browse/AG-1825", ) @pytest.mark.regression def test_combined_graphs_on_streams_overview_global_market(self): days_period = 13 track_data = self.data_provider.get_top_charts_spotify_track_data() isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_spotify = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] detailed_streams_global_apple = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] detailed_streams_global_amazon = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] list_data_spotify = [i["y"] for i in detailed_streams_global_spotify["vendors"]["spotify"] if i["y"]] max_y_spotify = max(list_data_spotify) y_axis_data_spotify = str(DataFormatter.round_streams(list_data_spotify[0])) list_data_amazon = [i["y"] for i in detailed_streams_global_amazon["vendors"]["amazon"] if i["y"]] max_y_amazon = max(list_data_amazon) y_axis_data_amazon = str(DataFormatter.round_streams(list_data_amazon[0])) list_data_apple = [i["y"] for i in detailed_streams_global_apple["vendors"]["apple"] if i["y"]] max_y_apple = max(list_data_apple) y_axis_data_apple = str(DataFormatter.round_streams(list_data_apple[0])) max_y_ind = max(max_y_spotify, max_y_apple, max_y_amazon) max_y = max_y_ind + 0.05 * max_y_ind y_axis_top_value = str(DataFormatter.round_streams(max_y)) self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed = self.trackPage.get_streams_performance_card_data() all_data_detailed = streams_card_data_detailed.split() assert_that(all_data_detailed[5]).described_as("Date format on the detailed card ").contains(dates[0].strftime("%m/%d/%y")) assert_that(streams_card_data_detailed).described_as("Date format on the plot").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the plot").contains(dates[1].strftime("%m/%d/%y")).described_as("Y-axis value ").contains(y_axis_top_value).described_as( "Streams value on Y-axis for vendor (Spotify)" ).contains(y_axis_data_spotify).described_as("Streams value on Y-axis for vendor (Amazon)").contains(y_axis_data_amazon).described_as("Streams value on Y-axis for vendor (Apple)").contains(y_axis_data_apple) self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_date_picker().select_4_weeks_date_filter() days_period = 27 dates = self.data_provider.get_track_start_end_dates(isrc, days_period) self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed = self.trackPage.get_streams_performance_card_data() all_data_detailed = streams_card_data_detailed.split() assert_that(all_data_detailed[5]).described_as("Date format on the detailed card").contains(dates[0].strftime("%m/%d/%y")) assert_that(streams_card_data_detailed).described_as("Date format on the plot").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the plot").contains(dates[1].strftime("%m/%d/%y")) self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7009") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams overview (detailed mode) -- Specific US market") @allure.description("Analyzing the detailed combined streams graph on Sony tracks card") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-1824", "https://data-analytics.atlassian.net/browse/AG-1825", ) @pytest.mark.regression def test_combined_graphs_on_streams_overview_specific_market(self): days_period = 13 market = ["United States", "us"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_spotify = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market[1]}", "per_vendors=true")["body"] detailed_streams_global_apple = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market[1]}", "per_vendors=true")["body"] detailed_streams_global_amazon = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market[1]}", "per_vendors=true")["body"] list_data_spotify = [i["y"] for i in detailed_streams_global_spotify["vendors"]["spotify"] if i["y"]] max_y_spotify = max(list_data_spotify) y_axis_data_spotify = str(DataFormatter.round_streams(list_data_spotify[0])) list_data_amazon = [i["y"] for i in detailed_streams_global_amazon["vendors"]["amazon"] if i["y"]] max_y_amazon = max(list_data_amazon) y_axis_data_amazon = str(DataFormatter.round_streams(list_data_amazon[0])) list_data_apple = [i["y"] for i in detailed_streams_global_apple["vendors"]["apple"] if i["y"]] max_y_apple = max(list_data_apple) y_axis_data_apple = str(DataFormatter.round_streams(list_data_apple[0])) max_y_ind = max(max_y_spotify, max_y_apple, max_y_amazon) max_y = max_y_ind + 0.05 * max_y_ind y_axis_top_value = str(DataFormatter.round_streams(max_y)) self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_specific_market_detailed_page() self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed = self.trackPage.get_streams_performance_card_data() all_data_detailed = streams_card_data_detailed.split() assert_that(all_data_detailed[5]).described_as("Date format on the detailed card").contains(dates[0].strftime("%m/%d/%y")) assert_that(streams_card_data_detailed).described_as("Date format on the detailed plot").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the detailed plot").contains(dates[1].strftime("%m/%d/%y")).described_as("Y-axis value").contains( y_axis_top_value ).described_as("Streams value on Y-axis for vendor (Spotify)").contains(y_axis_data_spotify).described_as("Streams value on Y-axis for vendor (Amazon)").contains(y_axis_data_amazon).described_as("Streams value on Y-axis for vendor (Apple) ").contains(y_axis_data_apple) self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() self.trackPage.open_date_picker().select_4_weeks_date_filter() days_period = 27 dates = self.data_provider.get_track_start_end_dates(isrc, days_period) self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed = self.trackPage.get_streams_performance_card_data() all_data_detailed = streams_card_data_detailed.split() assert_that(all_data_detailed[5]).described_as("Date format on the detailed card").contains(dates[0].strftime("%m/%d/%y")) assert_that(streams_card_data_detailed).described_as("Inspecting format of X-axis").contains(dates[0].strftime("%m/%d/%y")).described_as("Inspecting date range of X-axis").contains(dates[1].strftime("%m/%d/%y")) self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7009") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams detailed overview - Spotify") @allure.description("Analyzing the detailed combined streams graph on Sony tracks card") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-2817", "https://data-analytics.atlassian.net/browse/AG-2820", ) @pytest.mark.regression def test_detailed_graphs_on_streams_overview_for_spotify(self): days_period = 13 market = ["United States", "us"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_spotify = self.api.dsp.get_dsp_api_detailed_graph_streams(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "vendor=spotify")["body"]["coordinates"] market_small = ["Micronesia", "FM"] detailed_streams_small_market = self.api.dsp.get_dsp_api_streams_graph( f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market_small[1]}", "per_vendors=true", )["body"] list_data_small_market = [i["y"] for i in detailed_streams_small_market["coordinates"] if i["y"]] max_y_small_market = max(list_data_small_market) max_y_small_y_axis = max_y_small_market + 0.05 * max_y_small_market max_y_small_y_axis = str(DataFormatter.round_streams(max_y_small_y_axis)) list_data_spotify = [i["y"]["total"] for i in detailed_streams_global_spotify if i["y"]] max_y_spotify = max(list_data_spotify) + 0.05 * max(list_data_spotify) y_axis_data_spotify = str(DataFormatter.round_streams(list_data_spotify[0])) y_axis_top_value_spotify = str(DataFormatter.round_streams(max_y_spotify)) self.loginPage.login_as_regular_user().select_chart_digest_tab() self.chartDigestPage.open_full_charts() wait(self.chartDigestPage.is_full_charts_opened, timeout=40, sleep=0.01) self.chartDigestPage.search_track_in_full_charts(track) # track_name = self.chartDigestPage.get_full_charts_track_title(1) self.searchPage.open_track_page_from_results(1) # assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() self.trackPage.open_spotify_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed_spotify = self.trackPage.get_streams_performance_card_data_spotify() assert_that(streams_card_data_detailed_spotify).described_as("Date format on the detailed card ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the detailed card ").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Spotify)" ).contains(y_axis_data_spotify).described_as("Y-axis value ").contains(y_axis_top_value_spotify).described_as("Missed list of data from available sources").contains("Radio") self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed_per_vendor, "Verified detailed view is closed").is_true() self.trackPage.close_track_page() self.streamsPage.click_top_5_show_all().open_all_markets_tab().search_for_market(market_small[0]).click_top_market(1) self.trackPage.open_combined_streams_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_opened_small_markets(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed_small_market = self.trackPage.get_streams_performance_card_data() all_data_detailed_small_market = streams_card_data_detailed_small_market.split() assert_that(all_data_detailed_small_market).described_as("Y-axis value is wrong").contains(max_y_small_y_axis) self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed(), "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7009") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams detailed overview - Amazon") @allure.description("Analyzing the detailed combined streams graph on Sony tracks card") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-2817", "https://data-analytics.atlassian.net/browse/AG-2820", ) @pytest.mark.regression def test_detailed_graphs_on_streams_overview_for_amazon(self): days_period = 13 track_data = self.data_provider.get_top_charts_spotify_track_data() isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_amazon = self.api.dsp.get_dsp_api_detailed_graph_streams(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "vendor=amazon")["body"]["coordinates"] list_data_amazon = [i["y"]["total"] for i in detailed_streams_global_amazon if i["y"]] max_y_amazon = max(list_data_amazon) + 0.05 * max(list_data_amazon) y_axis_data_amazon = str(DataFormatter.round_streams(list_data_amazon[0])) y_axis_top_value_amazon = str(DataFormatter.round_streams(max_y_amazon)) self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().open_amazon_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed_amazon = self.trackPage.get_streams_performance_card_data_amazon() assert_that(streams_card_data_detailed_amazon).described_as("Date format on the detailed card").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the detailed card ").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Amazon)" ).contains(y_axis_data_amazon).described_as("Y-axis value").contains(y_axis_top_value_amazon).described_as("Missed list of data from available sources").contains("Album") self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed_per_vendor, "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7009") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams detailed overview - Apple") @allure.description("Analyzing the detailed combined streams graph on Sony tracks card") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-2817", "https://data-analytics.atlassian.net/browse/AG-2820", ) @pytest.mark.regression def test_detailed_graphs_on_streams_overview_for_apple(self): days_period = 13 track_data = self.data_provider.get_top_charts_spotify_track_data() isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_apple = self.api.dsp.get_dsp_api_detailed_graph_streams(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "vendor=apple")["body"]["coordinates"] list_data_apple = [i["y"]["total"] for i in detailed_streams_global_apple if i["y"]] max_y_apple = max(list_data_apple) + 0.05 * max(list_data_apple) y_axis_data_apple = str(DataFormatter.round_streams(list_data_apple[0])) y_axis_top_value_apple = str(DataFormatter.round_streams(max_y_apple)) self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().open_apple_stream_detailed_view() assert_that(self.trackPage.is_dsp_detailed_streams_overview_opened(), "Verified detailed view is opened").is_true() self.trackPage.tap_beginning_of_the_graph() streams_card_data_detailed_apple = self.trackPage.get_streams_performance_card_data_apple() assert_that(streams_card_data_detailed_apple).described_as("Date format on the detailed card ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the detailed card").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Apple)" ).contains(y_axis_data_apple).described_as("Y-axis value").contains(y_axis_top_value_apple).described_as("Missed list of data from available sources").contains("Discovery") self.trackPage.close_streams_overview_detailed_view() assert_that(self.trackPage.is_detailed_streams_overview_closed_per_vendor, "Verified detailed view is closed").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7010") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams overview (default mode) -- Global market") @allure.description("Analyzing the default stream graphs for Sony tracks") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-1246", "https://data-analytics.atlassian.net/browse/AG-1254", ) @pytest.mark.regression def test_default_graphs_for_streams_global_market(self): days_period = 13 track_data = self.data_provider.get_top_charts_spotify_track_data() isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_spotify = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] detailed_streams_global_apple = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] detailed_streams_global_amazon = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] list_data_spotify = [i["y"] for i in detailed_streams_global_spotify["vendors"]["spotify"] if i["y"]] max_y_spotify_plot = max(list_data_spotify) + 0.05 * max(list_data_spotify) max_y_spotify_plot = str(DataFormatter.round_streams(max_y_spotify_plot)) list_data_amazon = [i["y"] for i in detailed_streams_global_amazon["vendors"]["amazon"] if i["y"]] max_y_amazon_plot = max(list_data_amazon) + 0.05 * max(list_data_amazon) max_y_amazon_plot = str(DataFormatter.round_streams(max_y_amazon_plot)) list_data_apple = [i["y"] for i in detailed_streams_global_apple["vendors"]["apple"] if i["y"]] max_y_apple_plot = max(list_data_apple) + 0.05 * max(list_data_apple) max_y_apple_plot = str(DataFormatter.round_streams(max_y_apple_plot)) max_y_total = max(map(sum, zip(list_data_spotify, list_data_amazon, list_data_apple))) max_y = max_y_total + 0.05 * max_y_total y_axis_top_combined = str(DataFormatter.round_streams(max_y)) self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page() assert_that(self.trackPage.are_streams_overview_graphs_shown(), "Verified streams overview cards are displayed").is_true() streams_card_data_detailed_combined = self.trackPage.get_streams_default_plot_data_combined() streams_card_data_detailed_apple = self.trackPage.get_streams_default_plot_data_apple() streams_card_data_detailed_spotify = self.trackPage.get_streams_default_plot_data_spotify() streams_card_data_detailed_amazon = self.trackPage.get_streams_default_plot_data_amazon() self.trackPage.swipe_spotify_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_spotify).described_as("Date format on the default view ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Spotify)" ).contains(max_y_spotify_plot) assert_that(streams_card_data_detailed_combined).described_as("Date format on the default view ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Combined)" ).contains(y_axis_top_combined) self.trackPage.swipe_apple_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ) assert_that(streams_card_data_detailed_apple).described_as("Date format on the default view").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Apple)" ).contains(max_y_apple_plot) self.trackPage.swipe_amazon_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_amazon).described_as("Date format on the default card").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default card ").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Amazon) " ).contains(max_y_amazon_plot) @allure.story("https://data-analytics.atlassian.net/browse/AG-7010") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams overview (default mode) -- Global market") @allure.description("Analyzing the default stream graphs for Sony tracks") @allure.testcase( "https://data-analytics.atlassian.net/browse/AG-1246", "https://data-analytics.atlassian.net/browse/AG-1254", ) @pytest.mark.regression def test_default_graphs_for_streams_specific_market(self): days_period = 13 market = ["United States", "us"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_spotify = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market[1]}", "per_vendors=true")["body"] detailed_streams_global_apple = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market[1]}", "per_vendors=true")["body"] detailed_streams_global_amazon = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", f"market={market[1]}", "per_vendors=true")["body"] list_data_spotify = [i["y"] for i in detailed_streams_global_spotify["vendors"]["spotify"] if i["y"]] max_y_spotify_plot = max(list_data_spotify) + 0.05 * max(list_data_spotify) max_y_spotify_plot = str(DataFormatter.round_streams(max_y_spotify_plot)) list_data_amazon = [i["y"] for i in detailed_streams_global_amazon["vendors"]["amazon"] if i["y"]] max_y_amazon_plot = max(list_data_amazon) + 0.05 * max(list_data_amazon) max_y_amazon_plot = str(DataFormatter.round_streams(max_y_amazon_plot)) list_data_apple = [i["y"] for i in detailed_streams_global_apple["vendors"]["apple"] if i["y"]] max_y_apple_plot = max(list_data_apple) + 0.05 * max(list_data_apple) max_y_apple_plot = str(DataFormatter.round_streams(max_y_apple_plot)) max_y_total = max(map(sum, zip(list_data_spotify, list_data_amazon, list_data_apple))) max_y = max_y_total + 0.05 * max_y_total y_axis_top_combined = str(DataFormatter.round_streams(max_y)) self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_specific_market_detailed_page() wait(self.trackPage.are_streams_overview_graphs_shown, waiting_for="Streams overview cards to be displayed") streams_card_data_detailed_combined = self.trackPage.get_streams_default_plot_data_combined() streams_card_data_detailed_apple = self.trackPage.get_streams_default_plot_data_apple() streams_card_data_detailed_spotify = self.trackPage.get_streams_default_plot_data_spotify() streams_card_data_detailed_amazon = self.trackPage.get_streams_default_plot_data_amazon() self.trackPage.swipe_spotify_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_spotify).described_as("Date format on the default view").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Spotify)" ).contains(max_y_spotify_plot) assert_that(streams_card_data_detailed_combined).described_as("Date format on the default view ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view ").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Combined)" ).contains(y_axis_top_combined) self.trackPage.swipe_apple_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_apple).described_as("Date format on the default view").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Apple)" ).contains(max_y_apple_plot) self.trackPage.swipe_amazon_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_amazon).described_as("Date format on the default card").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default card ").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Amazon)" ).contains(max_y_amazon_plot) @allure.story("https://data-analytics.atlassian.net/browse/AG-7010") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams overview (default mode, 4 weeks) -- Global market") @allure.description("Analyzing the default stream graphs for Sony tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-1244") @pytest.mark.regression def test_default_graphs_for_streams_global_market_4weeks(self): days_period = 27 track_data = self.data_provider.get_top_charts_spotify_track_data() isrc = track_data[1] track = track_data[0] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) detailed_streams_global_spotify = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] detailed_streams_global_apple = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] detailed_streams_global_amazon = self.api.dsp.get_dsp_api_streams_graph(f"isrc={isrc}", f"start_date={dates[0]}", f"end_date={dates[1]}", "market=global", "per_vendors=true")["body"] list_data_spotify = [i["y"] for i in detailed_streams_global_spotify["vendors"]["spotify"] if i["y"]] max_y_spotify_plot = max(list_data_spotify) + 0.05 * max(list_data_spotify) max_y_spotify_plot = str(DataFormatter.round_streams(max_y_spotify_plot)) list_data_amazon = [i["y"] for i in detailed_streams_global_amazon["vendors"]["amazon"] if i["y"]] max_y_amazon_plot = max(list_data_amazon) + 0.05 * max(list_data_amazon) max_y_amazon_plot = str(DataFormatter.round_streams(max_y_amazon_plot)) list_data_apple = [i["y"] for i in detailed_streams_global_apple["vendors"]["apple"] if i["y"]] max_y_apple_plot = max(list_data_apple) + 0.05 * max(list_data_apple) max_y_apple_plot = str(DataFormatter.round_streams(max_y_apple_plot)) max_y_total = max(map(sum, zip(list_data_spotify, list_data_amazon, list_data_apple))) max_y = max_y_total + 0.05 * max_y_total y_axis_top_combined = str(DataFormatter.round_streams(max_y)) self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().open_date_picker().select_4_weeks_date_filter() assert_that(self.trackPage.are_streams_overview_graphs_shown(), "Verified streams overview cards are displayed").is_true() streams_card_data_detailed_combined = self.trackPage.get_streams_default_plot_data_combined() streams_card_data_detailed_apple = self.trackPage.get_streams_default_plot_data_apple() streams_card_data_detailed_spotify = self.trackPage.get_streams_default_plot_data_spotify() streams_card_data_detailed_amazon = self.trackPage.get_streams_default_plot_data_amazon() assert_that(streams_card_data_detailed_combined).described_as("Date format on the default view ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Combined) " ).contains(y_axis_top_combined) self.trackPage.swipe_spotify_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_spotify).described_as("Date format on the default view ").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Spotify)" ).contains(max_y_spotify_plot) self.trackPage.swipe_apple_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_apple).described_as("Date format on the default view").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default view").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Apple)" ).contains(max_y_apple_plot) self.trackPage.swipe_amazon_stream_detailed_view() assert_that( self.trackPage.are_one_of_streams_overview_graphs_shown(), "Some of verified streams overview cards are displayed", ).is_true() assert_that(streams_card_data_detailed_amazon).described_as("Date format on the default card").contains(dates[0].strftime("%m/%d/%y")).described_as("Date format and range on the default card").contains(dates[1].strftime("%m/%d/%y")).described_as( "Streams value on Y-axis for vendor (Amazon)" ).contains(max_y_amazon_plot) @allure.story("https://data-analytics.atlassian.net/browse/AG-7010") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Streams overview for absense of latest streams ") @allure.description("Analyzing the default graph with no latest streams") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5013") @pytest.mark.regression def test_default_graphs_for_non_streams(self): market = ["United States", "us"] track_1 = "Supermassive Black Hole" self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track_1) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() assert_that(self.trackPage.no_streams_overview_graphs(), "Verified no streams overview for all DSPs").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7014") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Monitoring Graphs") @allure.description("Analyzing the Streams Monitoring stats and graphs") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-1852," "https://data-analytics.atlassian.net/browse/AG-2896," "https://data-analytics.atlassian.net/browse/AG-1863," "https://data-analytics.atlassian.net/browse/AG-1868," "https://data-analytics.atlassian.net/browse/AG-3036") @pytest.mark.regression def test_streams_monitoring_graphs(self): days_period = 13 market = ["United States", "us"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) track = track_data[0] isrc = track_data[1] dates = self.data_provider.get_track_start_end_dates(isrc, days_period) self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market[0]).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_specific_market_detailed_page() api_data_streams = self.trackPage.get_streams_monitoring_count_no_rounding(f"isrc={isrc}", f"market={market[1]}") button_data = self.trackPage.get_date_picker_button() assert_that(button_data).described_as("Date range button format").contains(dates[0].strftime("%m/%d/%y")).contains(dates[1].strftime("%m/%d/%y")) self.trackPage.scroll_to_streams_monitoring() assert_that(self.trackPage.is_streams_monitoring_shown(), "Verified streams monitoring section is displayed").is_true() streams_monitoring_data = self.trackPage.get_streams_monitoring_data() assert_that(streams_monitoring_data).described_as("Date range on the streams monitoring card (Spotify)").contains(dates[0].strftime("%m/%d/%y")).contains(dates[1].strftime("%m/%d/%y")) values_spotify = [] for value in api_data_streams[0]: values_spotify.append(float(value)) sum_spotify = str(DataFormatter.round_streams(sum(values_spotify))) sum_spotify_num = sum(values_spotify) assert_that(streams_monitoring_data).described_as("Spotify stream monitoring data").contains(sum_spotify) self.trackPage.select_stream_monitoring_apple_tab() streams_monitoring_data_apple = self.trackPage.get_streams_monitoring_data() values_apple = [] for value in api_data_streams[1]: values_apple.append(float(value)) sum_apple = str(DataFormatter.round_streams(sum(values_apple))) sum_apple_num = sum(values_apple) assert_that(streams_monitoring_data_apple).described_as("Apple stream monitoring data").contains(sum_apple).described_as("Date range on the streams monitoring card (Apple)").contains(dates[0].strftime("%m/%d/%y")).described_as("Date range on the streams monitoring card (Apple)").contains( dates[1].strftime("%m/%d/%y") ) self.trackPage.select_stream_monitoring_amazon_tab() streams_monitoring_data_amazon = self.trackPage.get_streams_monitoring_data() values_amazon = [] for value in api_data_streams[2]: values_amazon.append(float(value)) sum_amazon = str(DataFormatter.round_streams(sum(values_amazon))) sum_amazon_num = sum(values_amazon) assert_that(streams_monitoring_data_amazon).described_as("Amazon stream monitoring data").contains(sum_amazon).described_as("Date range on the streams monitoring card (Amazon)").contains(dates[0].strftime("%m/%d/%y")).described_as( "Date range on the streams monitoring card (Amazon)" ).contains(dates[1].strftime("%m/%d/%y")) self.trackPage.select_stream_monitoring_by_dsp_tab() streams_monitoring_data_dsp = self.trackPage.get_streams_monitoring_data() assert_that(streams_monitoring_data_dsp).described_as("Date range on the streams monitoring card is wrong (DSP)").contains(dates[0].strftime("%m/%d/%y")).contains(dates[1].strftime("%m/%d/%y")) total_sum = sum_amazon_num + sum_apple_num + sum_spotify_num frac_spotify = sum_spotify_num * 100 / total_sum frac_apple = sum_apple_num * 100 / total_sum frac_amazon = sum_amazon_num * 100 / total_sum total_sum_dsp_check = str(DataFormatter.round_streams(total_sum)) if any(el < 0.5 for el in [frac_spotify, frac_apple, frac_amazon]): assert_that(streams_monitoring_data_dsp).described_as('No "~0%" case in the streams statistics').contains("~0%") else: assert_that(streams_monitoring_data_dsp).described_as("Wrong DSP sum data for track").contains(total_sum_dsp_check) @allure.story("https://data-analytics.atlassian.net/browse/AG-7014") @allure.severity(allure.severity_level.NORMAL) @allure.title("Streams Monitoring Graphs (no vendor data)") @allure.description("Analyzing the Streams Monitoring stats and graphs in case absence of vendor data") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5314") @pytest.mark.regression def test_absence_of_streams_monitoring_graphs(self): market = ["United States", "us"] market_small = ["Albania", "al"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) track = track_data[0] self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(market_small[0]).select_search_tab() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_specific_market_detailed_page() self.trackPage.scroll_to_streams_monitoring() self.trackPage.select_stream_monitoring_apple_tab() assert_that(self.trackPage.no_apple_streams_displayed(), "Verified Apple streams info").is_true() # Commented out due to https://data-analytics.atlassian.net/browse/AG-8354 # @allure.story("https://data-analytics.atlassian.net/browse/AG-7014") # @allure.severity(allure.severity_level.NORMAL) # @allure.title("Streams Monitoring Graphs (negligible percent of vendor data)") # @allure.description("Analyzing the Streams Monitoring stats and graphs in case of negligible stats of vendor data") # @allure.testcase( # "https://data-analytics.atlassian.net/browse/AG-5313") # @pytest.mark.smoke # def test_small_number_of_streams_monitoring(self): # market_small = ['New Zealand', 'NZ'] # track = 'Dance Monkey' # isrc = "QZES71982312" # # self.loginPage.login_as_regular_user() # self.profilePage.open_profile_screen_and_select_market(market_small[0]).select_search_tab() # self.searchPage.search_for(track) # # track_name = self.searchPage.get_result_track_title(1) # self.searchPage.open_track_page_from_results(1) # assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened") # self.trackPage.open_market_specific_market_detailed_page() # # api_data_streams = self.trackPage.get_streams_monitoring_count_no_rounding(f"isrc={isrc}", f"market={market_small[1]}") # # values_amazon = [] # for value in api_data_streams[2]: # values_amazon.append(float(value)) # sum_amazon = sum(values_amazon) # # values_apple = [] # for value in api_data_streams[1]: # values_apple.append(float(value)) # sum_apple = sum(values_apple) # # values_spotify = [] # for value in api_data_streams[0]: # values_spotify.append(float(value)) # sum_spotify = sum(values_spotify) # # total_sum = sum_amazon + sum_apple + sum_spotify # # frac_spotify = sum_spotify * 100 / total_sum # frac_apple = sum_apple * 100 / total_sum # frac_amazon = sum_amazon * 100 / total_sum # # if any(el < 0.5 for el in [frac_spotify, frac_apple, frac_amazon]): # self.trackPage.scroll_to_streams_monitoring() # self.trackPage.select_stream_monitoring_by_dsp_tab() # streams_monitoring_data_dsp = self.trackPage.get_streams_monitoring_data() # self.assertIn("~0%", streams_monitoring_data_dsp, 'No "~0%" case in the streams statistics ') @allure.story("https://data-analytics.atlassian.net/browse/AG-7013") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market Detailed KPI") @allure.description("Analyzing the Market Detailed page (Spotify)") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4815," "https://data-analytics.atlassian.net/browse/AG-4817," "https://data-analytics.atlassian.net/browse/AG-4818," "https://data-analytics.atlassian.net/browse/AG-4894,") @pytest.mark.regression def test_market_detailed_kpi(self): market = ["United States", "us"] track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) track = track_data[0] self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().click_market_selector() self.trackPage.select_market_via_search(market[0]) assert_that(self.trackPage.is_market_selected(market[1].upper(), market[0]), "Market is selected").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7013") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market Detailed KPI") @allure.description("Analyzing the Market Detailed page (Apple)") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4815," "https://data-analytics.atlassian.net/browse/AG-4817," "https://data-analytics.atlassian.net/browse/AG-4818," "https://data-analytics.atlassian.net/browse/AG-4894,") @pytest.mark.regression def test_market_detailed_kpi_apple(self): market = ["United States", "us"] apple_data = self.data_provider.get_top_charts_apple_track_data(index=4) track_apple = self.data_provider.get_search_results_api(f"isrc:{apple_data[1]}")[apple_data[1]] self.loginPage.login_as_regular_user() self.searchPage.search_for(track_apple) track_name_apple = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name_apple), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().click_market_selector() self.trackPage.select_market_via_search(market[0]) assert_that(self.trackPage.is_market_selected(market[1].upper(), market[0]), "Market is selected").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-7011") @allure.severity(allure.severity_level.NORMAL) @allure.title("Market Detailed Market Selector") @allure.description("Analyzing the behaviour of Market Selector") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-5171," "https://data-analytics.atlassian.net/browse/AG-5173," "https://data-analytics.atlassian.net/browse/AG-5174," "https://data-analytics.atlassian.net/browse/AG-5206,") @pytest.mark.regression def test_market_selector_options(self): market = ["United States", "us"] market_wrong = "ddfdfdfdf" track_data = self.data_provider.get_top_charts_spotify_track_data(market[1]) track = track_data[0] self.loginPage.login_as_regular_user() self.searchPage.search_for(track) track_name = self.searchPage.get_result_track_title(1) self.searchPage.open_track_page_from_results(1) assert_that(self.trackPage.is_track_page_opened(track_name), "Verified track page is opened").is_true() self.trackPage.open_market_detailed_page().click_market_selector() self.trackPage.select_market_via_search_without_done(market_wrong) assert_that(self.trackPage.is_market_section_available_without_correct_data(), "Market does not exist").is_true() self.trackPage.clear_search_field().click_market_search_cancel_button() assert_that(self.trackPage.is_market_selected(market[1], market[0]), "Market is selected").is_false() self.trackPage.click_market_selector().select_market_via_search_without_done(market[0]) self.trackPage.click_market_search_cancel_button() assert_that(self.trackPage.is_market_selected(market[1], market[0]), "Market is selected").is_false()