import logging import time 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.chart_digest import ChartDigestPage from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.gtp_cpot_popup import GTPCPOTPopup from app.src.pages.gtp_hh_modal import GTPHotHitsModal from app.src.pages.left_navigation_panel import LeftNavigationPanel 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) global_market = AppConfig.get("market")["global"]["name"] bu_tab_name = "Bubbling Under" oh_tab_name = "Orchard Highlight" ch_tab_name = "Catalogue Highlight" op_tab_name = "Ongoing Priorities" date_1 = "2020-12-28" date_2 = "2022-03-14" previous_tab_hh = "Previous" not_featured_hh_tab = "Not Featured" current_hh_tab = "Current" @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.left_panel = LeftNavigationPanel(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.gtp_hh_modal = GTPHotHitsModal(self.driver) self.charts_digest = ChartDigestPage(self.driver) self.gtp_cpot_popup = GTPCPOTPopup(self.driver) @allure.story("AP-4482") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Amplitude] Verification of GTP page events. STEPS 1-7") @allure.description("""TC Verifies events when user working with GTP page.""") def test_gtp_page_1_7(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 gtp_card_info = self.charts_digest.get_gtp_track_info() gtp_tracks_count = self.charts_digest.get_gtp_tracks_count() if gtp_card_info[0]["track-name"] != "N/A": if gtp_tracks_count > 1: self.charts_digest.gtp_swipe_right() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["banner_arrow_event_type"]) self.charts_digest.gtp_swipe_left() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["banner_arrow_event_type"]) # step 2 self.charts_digest.gtp_card_open_track() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.TRACK_PAGE["event_type"]) # step 3 # artist self.charts_digest.open_charts_digest_page() self.charts_digest.gtp_card_open_artist() events = self.amplitude_helper.wait_and_get_amplitude_events(4) self.amplitude_helper.verify_for_event_type(events[2], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.ARTIST_PAGE["event_type"]) # hot hits self.charts_digest.open_charts_digest_page() is_hot_hits_absent = self.charts_digest.gtp_card_hot_hits_absent() self.charts_digest.log.info("Hot hits value: " + str(is_hot_hits_absent)) events = self.amplitude_helper.wait_and_get_amplitude_events(2) if is_hot_hits_absent is False: self.gtp.verify_hot_hits_tooltip_and_click(verify_tooltip=False) events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.GTP_PAGE["hot_hits_opened"]) self.gtp_hh_modal.close_hot_hits_modal() # chart position is_chart_position_absent = self.charts_digest.gtp_card_charts_position_absent() if is_chart_position_absent is False: self.gtp.open_cpot_popup() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.GTP_PAGE["chart_position_opened"]) self.gtp_cpot_popup.close_popup() # step 4 self.charts_digest.open_gtp_from_dashboard() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.CHARTS_DIGEST_PAGE["gtp_view_button"]) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.GTP_PAGE["event_type"]) # step 5 self.gtp.select_first_date_of_the_month() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["change_date"]) # step 6 self.gtp.select_gtp_market(self.global_market) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["change_market"]) assert_that(events[0]["event_properties"]["gtp_market_selector"]).is_equal_to(self.global_market) # step 7 # bubbling under time.sleep(10) self.gtp.open_tab(self.gtp.TAB_BU) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["change_tab"]) assert_that(events[0]["event_properties"]["gtp_tab"]).is_equal_to(self.bu_tab_name) # orchard highlight self.gtp.open_tab(self.gtp.TAB_OH) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["change_tab"]) assert_that(events[0]["event_properties"]["gtp_tab"]).is_equal_to(self.oh_tab_name) # catalogue highlight self.gtp.open_tab(self.gtp.TAB_CH) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["change_tab"]) assert_that(events[0]["event_properties"]["gtp_tab"]).is_equal_to(self.ch_tab_name) # ongoing priorities self.gtp.open_tab(self.gtp.TAB_OP) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["change_tab"]) assert_that(events[0]["event_properties"]["gtp_tab"]).is_equal_to(self.op_tab_name) @allure.story("AP-4482") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Amplitude] Verification of GTP page events. STEPS 8-11") @allure.description("""TC Verifies events when user working with GTP page.""") def test_gtp_page_8_11(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 8 # track name self.gtp.open_gtp_page_from_url(market=AppConfig.get("market")["us"]["market"], date=self.date_1) self.gtp.click_track_name_verify() events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[4], self.amplitude_helper.TRACK_PAGE["event_type"]) # artist name self.gtp.open_gtp_page_from_url(market=AppConfig.get("market")["us"]["market"], date=self.date_1) self.gtp.click_artist_name_verify() events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[4], self.amplitude_helper.ARTIST_PAGE["event_type"]) # hot hits self.gtp.open_gtp_page_from_url(market=AppConfig.get("market")["us"]["market"], date=self.date_1) self.gtp.verify_hot_hits_tooltip_and_click(verify_tooltip=False) events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[4], self.amplitude_helper.GTP_PAGE["hot_hits_opened"]) self.gtp_hh_modal.close_hot_hits_modal() # chart position self.gtp.open_cpot_popup() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["interacted_card_event_type"]) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.GTP_PAGE["chart_position_opened"]) self.gtp_cpot_popup.close_popup() # step 9 # hot hits from table self.gtp.open_hot_hits_from_table() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["hot_hits_opened"]) self.gtp_hh_modal.close_hot_hits_modal() # charts position from table self.gtp.open_cpot_from_table() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.GTP_PAGE["chart_position_opened"]) self.gtp_cpot_popup.close_popup() # step 10 self.charts_digest.open_charts_digest_page() self.left_panel.open_gtp() events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.HAMBURGER_MENU["event_type_link"]) assert_that(events[3]["event_properties"]["link_destination"]).is_equal_to(self.amplitude_helper.GTP_PAGE["link_destination"]) self.amplitude_helper.verify_for_event_type(events[4], self.amplitude_helper.GTP_PAGE["event_type"])