import logging import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from ui_automation_framework.utils import logger as cl from app.src.pages.amplitude_helper import AmplitudeHelper from app.src.pages.login_page import LoginPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class Amplitude(unittest.TestCase): log = cl.Logger(logging.DEBUG) @pytest.fixture(autouse=True) def classSetup(self): self.log = cl.Logger(logging.DEBUG) self.loginPage = LoginPage(self.driver) self.ts = TestStatus(self.driver) self.amplitude_helper = AmplitudeHelper(self.driver) self.track_page = TrackPage(self.driver) @allure.issue("https://data-analytics.atlassian.net/browse/AP-8789") @pytest.mark.flaky(reruns=0) @allure.story("AP-2445") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-2372, AP-4628][Amplitude] Verify event for tracking DSP selection on Track Page") @allure.description("""TC Verifies events when different DSPs are selected in Track Page""") def test_dsp_selection_on_track_page(self): self.loginPage.login_with_worker() self.track_page.select_market(AppConfig.get("market")["us"]["name"]) events = self.amplitude_helper.wait_and_get_amplitude_events(5, False) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_event_user_properties(events[0]) # step 1 self.track_page.open_spotify_track_page(AppConfig.get("track40")["id"]) self.track_page.is_track_page_title_present(AppConfig.get("track40")["name"]) self.track_page.select_dsp(AppConfig.get("dsp")["apple"]) events = self.amplitude_helper.wait_and_get_amplitude_events(3) self.amplitude_helper.verify_for_event_type(events[2], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[2]["event_properties"]["tp_dsp_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["apple_dsp_selected"])) self.track_page.select_dsp(AppConfig.get("dsp")["total_streams"]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["all_streams_dsp_selected"])) self.track_page.select_dsp(AppConfig.get("dsp")["by_dsp"]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["by_dsp_dsp_selected"])) self.track_page.select_dsp(AppConfig.get("dsp")["spotify"]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["spotify_dsp_selected"])) # step 2 # amazon by voice self.track_page.select_dsp(AppConfig.get("dsp")["amazon"]) self.track_page.change_source_type(self.track_page.dd_by_voice) events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_dsp_selected"])) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[1]["event_properties"]["tp_dsp_breakdown_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_voice_selected"])) self.track_page.select_dsp(AppConfig.get("dsp")["amazon"]) # amazon all streams self.track_page.change_source_type(self.track_page.dd_all_streams) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_all_streams_selected"])) # amazon by source self.track_page.change_source_type(self.track_page.dd_by_source) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_source_selected"])) # amazon lean fwd / back self.track_page.change_source_type(self.track_page.dd_lean_back_forward) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_lean_fwd_back"])) # amazon by tier self.track_page.change_source_type(self.track_page.dd_by_tier) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_tier_selected"])) # step 3 # amazon by tier ad-supported self.track_page.choose_tier_options([self.track_page.tier_options[1]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_amazon_tiers"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_ad_supported_tier"])) # amazon by tier prime self.track_page.choose_tier_options([self.track_page.tier_options[2]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_amazon_tiers"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_prime_tier"])) # amazon by tier unlimited self.track_page.choose_tier_options([self.track_page.tier_options[3]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_amazon_tiers"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_unlimited_tier"])) # amazon by tier all tiers self.track_page.choose_tier_options([self.track_page.tier_options[0]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_amazon_tiers"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_all_tiers"])) # amazon by tier all tiers self.track_page.choose_tier_options([self.track_page.tier_options[2], self.track_page.tier_options[3]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_amazon_tiers"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_prime_unlimited_tier"])) # step 4 self.track_page.change_source_type(self.track_page.dd_by_source) # album self.track_page.change_source_values([self.track_page.AMAZON_BY_SOURCE[1]]) events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[1]["event_properties"]["tp_dsp_breakdown_sub_selector_sources"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_source_album"])) # artist self.track_page.change_source_values([self.track_page.AMAZON_BY_SOURCE[2]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_sources"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_source_artist"])) # all sources self.track_page.change_source_values([self.track_page.AMAZON_BY_SOURCE[0]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_sources"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_source_all_sources"])) # all sources except playlist sources_list_without_playlist = self.track_page.AMAZON_BY_SOURCE[1:3] + self.track_page.AMAZON_BY_SOURCE[4:] self.track_page.change_source_values(sources_list_without_playlist) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_breakdown_sub_selector_sources"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["amazon_by_source_with_out_playlist"])) # step 5 # Australia self.track_page.market_dd_choose_few_countries([AppConfig.get("market")["australia"]["name"]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector"]).is_equal_to([AppConfig.get("market")["australia"]["name"]])) # United States self.track_page.market_dd_choose_few_countries([AppConfig.get("market")["us"]["name"]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector"]).is_equal_to([AppConfig.get("market")["us"]["name"]])) # all markets self.track_page.market_dd_choose_few_countries([self.track_page.all_markets]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector"]).is_equal_to("All markets")) # Canada and Netherlands self.track_page.market_dd_choose_few_countries([AppConfig.get("market")["canada"]["name"], AppConfig.get("market")["nl"]["name"]]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector"]).is_equal_to([AppConfig.get("market")["canada"]["name"], AppConfig.get("market")["nl"]["name"]])) # step 6 # Ex-US self.track_page.stream_and_source_choose_region(self.track_page.REGION_EX_US) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector_fast_selection"]).is_equal_to(self.track_page.REGION_EX_US)) # Asia self.track_page.stream_and_source_choose_region(self.track_page.REGION_ASIA) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector_fast_selection"]).is_equal_to(self.track_page.REGION_ASIA)) # CIS self.track_page.stream_and_source_choose_region(self.track_page.REGION_CIS) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_dsp_market_selector_fast_selection"]).is_equal_to(self.track_page.REGION_CIS)) # step 7 self.track_page.change_source_type(self.track_page.dd_by_tier) self.track_page.choose_graph_view_area_graph_percentage() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[1]["event_properties"]["tp_graph_type_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["graph_type_area_graph_percentage"])) self.track_page.choose_graph_view_area_graph() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_graph_type_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["graph_type_area_graph"])) self.track_page.choose_graph_view_line_graph_direct() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[0]["event_properties"]["tp_graph_type_selector"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["graph_type_line_graph"]))