import logging import unittest import allure import pytest from assertpy import assert_that from parameterized import parameterized from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from 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) by_views = "By Views" by_creations = "By Creations" all_contents = "All Contents" by_ugc_pgc = "By UGC/PGC" @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) @parameterized.expand( [ ("spotify", AppConfig.get("track40")["id"], AppConfig.get("track40")["name"]), ("apple", str(AppConfig.get("track44")["apple_id"]), AppConfig.get("track44")["name"]), ] ) @allure.story("AP-5407") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5129][Amplitude] Export on Track page 'Performance' section") @allure.description("""TC Verifies export events when different filters are selected in Track Page 'Performance' section""") def test_export_in_track_performance(self, dsp, track_id, track_name): 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_track_page(apple_spotify=dsp, track_id=track_id, market=AppConfig.get("market")["us"]["url"]) self.track_page.is_track_page_title_present(track_name) self.track_page.select_dsp("Spotify") dsp = self.track_page.get_current_dsp() source = self.track_page.get_source_type() assert_that(dsp).is_equal_to(AppConfig.get("dsp")["spotify"]) assert_that(source).is_equal_to(AppConfig.get("source")["by_source"]) self.track_page.click_export() self.track_page.click_export_as_csv() events = self.amplitude_helper.wait_and_get_amplitude_events(4) 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # step 2 # spotify -> all streams self.track_page.change_source_type(AppConfig.get("source")["all_streams"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # spotify -> lean fwd/back self.track_page.change_source_type(AppConfig.get("source")["lf_lb"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # apple -> by source self.track_page.select_dsp(AppConfig.get("dsp")["apple"]) source = self.track_page.get_source_type() assert_that(source).is_equal_to(AppConfig.get("source")["by_source"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # apple -> all streams self.track_page.change_source_type(AppConfig.get("source")["all_streams"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # apple -> lean fwd/back self.track_page.change_source_type(AppConfig.get("source")["lf_lb"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # amazon -> by source self.track_page.select_dsp(AppConfig.get("dsp")["amazon"]) source = self.track_page.get_source_type() assert_that(source).is_equal_to(AppConfig.get("source")["by_source"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # amazon -> all streams self.track_page.change_source_type(AppConfig.get("source")["all_streams"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # amazon -> lean fwd/back self.track_page.change_source_type(AppConfig.get("source")["lf_lb"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # amazon -> by voice self.track_page.change_source_type(self.track_page.dd_by_voice) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # amazon -> by tier self.track_page.change_source_type(self.track_page.dd_by_tier) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # all streams self.track_page.select_dsp(AppConfig.get("dsp")["total_streams"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # by dsp self.track_page.select_dsp(AppConfig.get("dsp")["by_dsp"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["streams_and_sources_tab_opened"])) # steps 3-4 # kpi by markets -> all streams self.track_page.switch_to_streams_by_markets_tab() self.track_page.select_dsp(AppConfig.get("dsp")["total_streams"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["by_markets_tab_opened"])) # kpi by markets -> spotify self.track_page.select_dsp(AppConfig.get("dsp")["spotify"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["by_markets_tab_opened"])) # kpi by markets -> apple self.track_page.select_dsp(AppConfig.get("dsp")["apple"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["by_markets_tab_opened"])) # kpi by markets -> amazon self.track_page.select_dsp(AppConfig.get("dsp")["amazon"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["by_markets_tab_opened"])) # kpi by markets -> tiktok self.track_page.select_dsp(AppConfig.get("dsp")["tiktok"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["by_markets_tab_opened"])) # step 5 # YouTube -> by source self.track_page.refresh() self.track_page.switch_to_youtube_video_performance() source = self.track_page.get_source_type() assert_that(source).is_equal_to(AppConfig.get("source")["by_source"]) self.track_page.click_export() self.track_page.click_export_as_csv() events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.amplitude_helper.verify_for_event_type(events[4], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[4]["event_properties"]["tp_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # step 6 # YouTube -> all views self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["all_views"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # youtube -> by video self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["by_video"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # youtube -> lean fwd/back self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["lf_lb"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # youtube -> by likes self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["by_likes"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # youtube -> by dislikes self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["by_dislikes"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # youtube -> by comments self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["by_comments"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # youtube -> by shares self.track_page.vp_youtube_change_source_view(AppConfig.get("source")["by_shares"]) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["video_performance_tab_opened"])) # step 7 # tiktok self.track_page.tp_switch_to_tiktok_tab() # by views + by ugc/pgc self.track_page.tp_select_type_tiktok(self.by_views) self.track_page.tp_select_content_type_tiktok(self.by_ugc_pgc) self.track_page.click_export() self.track_page.click_export_as_csv() events = self.amplitude_helper.wait_and_get_amplitude_events(4) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.TRACK_PAGE["filtered_event_type"]) assert_that(assert_that(events[3]["event_properties"]["tp_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tiktok_tab_opened"])) # by views + all contents self.track_page.tp_select_content_type_tiktok(self.all_contents) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tiktok_tab_opened"])) # by creations + all contents self.track_page.tp_select_type_tiktok(self.by_creations) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tiktok_tab_opened"])) # by creations + by ugc/pgc self.track_page.tp_select_content_type_tiktok(self.by_ugc_pgc) self.track_page.click_export() self.track_page.click_export_as_csv() 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_export_csv"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tiktok_tab_opened"]))