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) by_views = "By Views" by_creations = "By Creations" bar_chart = "Bar Chart" line_graph = "Line Graph" @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-6653") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-6550][Amplitude] Changing DSP on Track Page 'KPI by Markets' tab") @allure.description("""TC Verifies events when different DSPs are selected in KPI by Markets tab""") def test_dsp_selection_on_track_by_markets(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 # all streams self.track_page.open_spotify_track_page(AppConfig.get("track42")["id"]) self.track_page.is_track_page_title_present(AppConfig.get("track42")["name"]) self.track_page.switch_to_streams_by_markets_tab() dsp = self.track_page.get_current_dsp() assert_that(dsp).is_equal_to(AppConfig.get("dsp")["spotify"]) self.track_page.select_dsp(AppConfig.get("dsp")["total_streams"]) 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(events[3]["event_properties"]["tp_dsp_selector"]).is_equal_to(AppConfig.get("dsp")["total_streams"]) # spotify 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(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(AppConfig.get("dsp")["spotify"]) # apple self.track_page.select_dsp(AppConfig.get("dsp")["apple"]) 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(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(AppConfig.get("dsp")["apple"]) # amazon self.track_page.select_dsp(AppConfig.get("dsp")["amazon"]) 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(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(AppConfig.get("dsp")["amazon"]) # tiktok self.track_page.select_dsp(AppConfig.get("dsp")["tiktok"]) 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(events[0]["event_properties"]["tp_dsp_selector"]).is_equal_to(AppConfig.get("dsp")["tiktok"]) # step 2 # by views self.track_page.tp_select_type_tiktok(self.by_views) 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(events[0]["event_properties"]["tp_tt_type"]).is_equal_to(self.by_views) # by creations self.track_page.tp_select_type_tiktok(self.by_creations) 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(events[0]["event_properties"]["tp_tt_type"]).is_equal_to(self.by_creations) # step 3 # bar chart self.track_page.choose_graph_view_bar_chart() 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(events[0]["event_properties"]["tp_graph_type_selector"]).is_equal_to(self.bar_chart) # line 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(events[0]["event_properties"]["tp_graph_type_selector"]).is_equal_to(self.line_graph)