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.comparison_page import TrackComparisonPage from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.login_page import LoginPage from app.src.pages.top_charts_page import TopChartsPage 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) self.topChartsPage = TopChartsPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.comparison = TrackComparisonPage(self.driver) @allure.story("AP-6496") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-6112] [Charts > YT Trending] Amplitude events verification.") @allure.description( """TC verifies that appropriate events are logged in Amplitude when user is working with YT Trending section on the Top Charts page.""" ) def test_top_charts_yt_trending(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.topChartsPage.open_top_chart_page() self.topChartsPage.top_chart_page_is_opened() self.topChartsPage.switch_tab(self.topChartsPage.YOUTUBE_TYPE) events = self.amplitude_helper.wait_and_get_amplitude_events(4) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.TOP_CHARTS_PAGE["youtube_event_type"]) # step 2 assert_that(events[3]["event_type"]).is_not_equal_to(self.amplitude_helper.TOP_CHARTS_PAGE["youtube_filtered_event_type"]) # step 3 self.topChartsPage.select_trending_previous_month_first_day_date() selected_date = self.topChartsPage.get_selected_trending_date() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TOP_CHARTS_PAGE["youtube_filtered_event_type"]) assert_that(events[0]["event_properties"]["trending_chp_date"]).is_equal_to(selected_date) # step 4 self.topChartsPage.select_trending_market(AppConfig.get("market")["canada"]["name"]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TOP_CHARTS_PAGE["youtube_filtered_event_type"]) assert_that(events[0]["event_properties"]["trending_chp_country"]).is_equal_to(AppConfig.get("market")["canada"]["name"]) # step 5 self.topChartsPage.top_charts_tables_filtering(dsp=self.topChartsPage.TRENDING_TYPE, text="f") events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TOP_CHARTS_PAGE["youtube_search"]) # step 6 self.topChartsPage.click_top_charts_trending_export() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TOP_CHARTS_PAGE["youtube_export"]) # step 7 self.comparison.open_new_tab() self.track_page.open_current_url_in_new_tab() events = self.amplitude_helper.wait_and_get_amplitude_events(4) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.TOP_CHARTS_PAGE["youtube_event_type"])