import logging import time 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.api_client import ApiClient 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.login_page import LoginPage from app.src.pages.track_page import TrackPage from app.src.pages.tt_dashboard_page import TTDashboardPage from app.src.pages.tt_dashboard_pot_popup import TTDashboardPOTPopup from app.src.pages.tt_dashboard_top10 import TTDashboardTOP10Popup @pytest.mark.usefixtures("set_up", "one_time_set_up") class Amplitude(unittest.TestCase): log = cl.Logger(logging.DEBUG) date_1 = "2021-08-02" @pytest.fixture(autouse=True) def classSetup(self): self.log = cl.Logger(logging.DEBUG) self.loginPage = LoginPage(self.driver) self.ts = TestStatus(self.driver) self.track_page = TrackPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.amplitude_helper = AmplitudeHelper(self.driver) self.tt_dashboard = TTDashboardPage(self.driver) self.tt_dashboard_potp = TTDashboardPOTPopup(self.driver) self.tt_dashboard_top10 = TTDashboardTOP10Popup(self.driver) self.chart_digest = ChartDigestPage(self.driver) self.api_client = ApiClient() @parameterized.expand( [ ("daily", "Daily"), ("7days", "7 Days"), ] ) @allure.story("AP-7366") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7197][Amplitude] Sony TikTok Toplist page -> By Creations Change tab events") @allure.description("""TC verifies events fired in Amplitude when users work with Sony TikTok Toplist page → By Creations Change tab. """) def test_tt_dashboard_bcc_tab_events_verification(self, view, view_ui): self.loginPage.login_with_worker() self.chart_digest.is_opened() self.tt_dashboard.open() # step 1, 9-11 events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_for_event_type(events[-1], self.amplitude_helper.TT_DASHBOARD_PAGE["event_type"]) assert_that(events[-1]["event_properties"]).is_empty() self.tt_dashboard.select_view(view) events = self.amplitude_helper.wait_and_get_amplitude_events() self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TT_DASHBOARD_PAGE["event_page_filtered"]) assert_that(events[0]["event_properties"]["tt_toplists_period"]).is_equal_to(view_ui) # step 2 self.gtp.enter_datepicker_date_manually(date=self.date_1, location="tt_dashboard") events = self.amplitude_helper.wait_and_get_amplitude_events() self.amplitude_helper.verify_for_event_type(events[-1], self.amplitude_helper.TT_DASHBOARD_PAGE["event_page_filtered"]) assert_that(events[-1]["event_properties"]["tt_toplists_date"]).is_equal_to(self.date_1) # step 3 self.tt_dashboard.change_market(AppConfig.get("market")["us"]["name"]) events = self.amplitude_helper.wait_and_get_amplitude_events() self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TT_DASHBOARD_PAGE["event_page_filtered"]) assert_that(events[0]["event_properties"]["tt_toplists_country"]).is_equal_to(AppConfig.get("market")["us"]["name"]) # step 4 self.tt_dashboard.filter_by("t") events = self.amplitude_helper.wait_and_get_amplitude_events(0) assert_that(events).is_length(0) # step 5 time.sleep(2) self.tt_dashboard.click_element("1-close-icon") events = self.amplitude_helper.wait_and_get_amplitude_events(strict=False) self.amplitude_helper.verify_for_event_type(events[-1], self.amplitude_helper.TT_DASHBOARD_PAGE["event_page_search"]) assert_that(events[-1]["event_properties"]).is_empty() # step 6 self.tt_dashboard.click_element("tiktok-dashboard-scope-bar-export-btn") events = self.amplitude_helper.wait_and_get_amplitude_events() self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TT_DASHBOARD_PAGE["event_page_export"]) # step 7 self.tt_dashboard_potp.open() id = self.tt_dashboard_potp.get_track_link_id() isrc = self.api_client.get_isrc_by_spotify_id("_gl", id)["external_ids"]["isrc"] track_name = self.tt_dashboard_potp.get_track_name() track_artist = self.tt_dashboard_potp.get_artist_name().replace(", ", ",") events = self.amplitude_helper.wait_and_get_amplitude_events(strict=False) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TT_DASHBOARD_PAGE["event_potp_opened"]) assert_that(events[0]["event_properties"]).is_equal_to({"isrc": isrc, "track_id": id, "track_name": track_name, "track_artist": track_artist}) # step 8 self.tt_dashboard_potp.close() self.tt_dashboard_top10.open() spotify_id = self.tt_dashboard_top10.get_track_id() isrc = self.api_client.get_isrc_by_spotify_id("_gl", spotify_id)["external_ids"]["isrc"] track_name = self.tt_dashboard_top10.get_track_name() track_artist = self.tt_dashboard_top10.get_artist_name().replace(", ", ",") events = self.amplitude_helper.wait_and_get_amplitude_events() self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.TT_DASHBOARD_PAGE["event_top10_opened"]) assert_that(events[0]["event_properties"]).is_equal_to({"isrc": isrc, "track_id": spotify_id, "track_name": track_name, "track_artist": track_artist})