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.position_playlist_popup import PositionPlaylistPopup 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.pip = PositionPlaylistPopup(self.driver) self.tp = TrackPage(self.driver) @parameterized.expand(["current", "past"]) @allure.story("AP-8263") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7985][Amplitude] Track Page Details events verification STEPS 1-6") @allure.description("[AP-7985][Amplitude] Track Page Details events verification STEPS 1-6") def test_tp_td_events_verification_steps_1_6(self, tab): self.loginPage.login_with_worker() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_event_user_properties(events[0]) self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track42")["id"], market_id=AppConfig.get("market")["global"]["url"]) self.amplitude_helper.wait_and_get_amplitude_events(2, False) # step 1, 11 if tab == "past": self.tp.td_switch_to_past_playlists_tab() self.amplitude_helper.wait_and_get_amplitude_events() dsps = [[AppConfig.get("dsp")["spotify"]], [AppConfig.get("dsp")["apple"]], AppConfig.get("dsp")["all_dsps"]] else: dsps = [[AppConfig.get("dsp")["amazon"]], [AppConfig.get("dsp")["spotify"]], [AppConfig.get("dsp")["spotify"], AppConfig.get("dsp")["apple"]], [AppConfig.get("dsp")["apple"]], AppConfig.get("dsp")["all_dsps"]] for dsp in dsps: self.tp.td_change_dsp(dsp) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["td_dsp"]).is_equal_to(dsp) # step 2 if tab == "current": for entity in ["stations", "playlists", ["stations", "playlists"]]: self.tp.td_change_entities(entity) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) if entity == ["stations", "playlists"]: assert_that(events[0]["event_properties"]["td_entity"]).is_equal_to("All Entities") else: assert_that(events[0]["event_properties"]["td_entity"].lower()).is_equal_to(entity) # step 3, 12 for type in [[AppConfig.get("type")["editorial"]], [AppConfig.get("type")["personalized"]], [AppConfig.get("type")["editorial"], AppConfig.get("type")["personalized"]]]: self.tp.td_change_type(type) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) if type == [AppConfig.get("type")["editorial"], AppConfig.get("type")["personalized"]]: assert_that(events[0]["event_properties"]["td_type"]).is_equal_to("All Types") else: assert_that(events[0]["event_properties"]["td_type"]).is_equal_to(type[0]) # step 4, 13 if tab == "current": categories = [[AppConfig.get("owner_category")["apple_curators"]], [AppConfig.get("owner_category")["amazon_curators"], AppConfig.get("owner_category")["artist"], AppConfig.get("owner_category")["sony"]], AppConfig.get("owner_category")["all_owner_categories"]] else: categories = [[AppConfig.get("owner_category")["apple_curators"]], [AppConfig.get("owner_category")["artist"], AppConfig.get("owner_category")["sony"], AppConfig.get("owner_category")["spotify"]], AppConfig.get("owner_category")["all_owner_categories"]] for category in categories: self.tp.td_change_owner_category_to(category) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["td_own_category"]).is_equal_to(category) # step 5, 14 for market in [[AppConfig.get("market")["global"]["name"]], [AppConfig.get("market")["us"]["name"]], [AppConfig.get("market")["australia"]["name"], AppConfig.get("market")["brazil"]["name"]], "All Owner Markets"]: self.tp.td_change_owner_market_to(market) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["td_market"]).is_equal_to(market) # step 6 if tab == "current": self.tp.td_switch_market_toggle(self.tp.MARKETS_ALL["tab"]) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["top_markets_all_playlists_clicked"]).is_equal_to("All Markets") self.tp.td_switch_market_toggle(self.tp.MARKETS_TOP["tab"]) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["top_markets_all_playlists_clicked"]).is_equal_to("Top Markets") @parameterized.expand(["current", "past"]) @allure.story("AP-8263") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7985][Amplitude] Track Page Details events verification STEPS 7-8") @allure.description("[AP-7985][Amplitude] Track Page Details events verification STEPS 7-8") def test_tp_td_events_verification_steps_7_8(self, tab): self.loginPage.login_with_worker() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_event_user_properties(events[0]) # step 7 if tab == "past": self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track42")["id"], market_id=AppConfig.get("market")["global"]["url"]) self.amplitude_helper.wait_and_get_amplitude_events(2, False) self.tp.td_switch_to_past_playlists_tab() self.amplitude_helper.wait_and_get_amplitude_events() else: self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track42")["id"], market_id=AppConfig.get("market")["sweden"]["url"]) self.amplitude_helper.wait_and_get_amplitude_events(2, False) self.tp.td_switch_to_worldwide_streams() events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["worldwide_country_streams_clicked"]).is_equal_to("Worldwide Streams") self.tp.td_switch_to_worldwide_streams(ww=False) events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["worldwide_country_streams_clicked"]).is_equal_to("SE Streams") # step 8, 15 url = self.tp.get_url() self.tp.td_click_on_playlist_name(0) playlist_id = self.tp.get_url().split("/")[-1] playlist_name = self.tp.get_track_title(True) events = self.amplitude_helper.wait_and_get_amplitude_events(2) assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[0]["event_properties"]["td_playlist_clicked"].split(" ")[0]).is_equal_to(playlist_name.split(" ")[0]) assert_that(events[1]["event_type"]).is_equal_to(self.amplitude_helper.PLAYLIST_PAGE["event_type"]) assert_that(events[1]["event_properties"]["dsp_type"]).is_equal_to(AppConfig.get("dsp")["spotify"]) assert_that(events[1]["event_properties"]["playlist_id"]).is_equal_to(playlist_id) assert_that(events[1]["event_properties"]["playlist_name"].split(" ")[0]).is_equal_to(playlist_name.split(" ")[0]) self.tp.open_url(url) self.tp.td_change_dsp(AppConfig.get("dsp")["apple"]) if tab == "current": self.tp.td_change_entities(AppConfig.get("source")["playlists"]) self.tp.td_click_on_playlist_name(0) playlist_id = self.tp.get_url().split("/")[-1].split("?")[0] playlist_name = self.tp.get_track_title(True) events = self.amplitude_helper.wait_and_get_amplitude_events(count=5, strict=False) assert_that(events[-2]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[-2]["event_properties"]["td_playlist_clicked"]).is_equal_to(playlist_name) assert_that(events[-1]["event_type"]).is_equal_to(self.amplitude_helper.PLAYLIST_PAGE["event_type"]) assert_that(events[-1]["event_properties"]["dsp_type"]).is_equal_to(AppConfig.get("dsp")["apple"]) assert_that(events[-1]["event_properties"]["playlist_id"]).is_equal_to(playlist_id) assert_that(events[-1]["event_properties"]["playlist_name"]).is_equal_to(playlist_name) if tab == "current": self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track42")["id"], market_id=AppConfig.get("market")["global"]["url"]) self.tp.td_change_dsp(AppConfig.get("dsp")["amazon"]) self.tp.td_change_entities("playlists") self.tp.td_click_on_playlist_name(0) playlist_name = self.tp.get_track_title(True) events = self.amplitude_helper.wait_and_get_amplitude_events(count=4, strict=False) assert_that(events[-2]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_page_interacted"]) assert_that(events[-2]["event_properties"]["td_playlist_clicked"]).is_equal_to(playlist_name) assert_that(events[-1]["event_type"]).is_equal_to(self.amplitude_helper.PLAYLIST_PAGE["event_type"]) assert_that(events[-1]["event_properties"]["dsp_type"]).is_equal_to(AppConfig.get("dsp")["amazon"]) assert_that(events[-1]["event_properties"]["playlist_id"]).starts_with("amazon_") assert_that(events[-1]["event_properties"]["playlist_name"]).is_equal_to(playlist_name) @parameterized.expand(["current", "past"]) @allure.story("AP-8263") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7985][Amplitude] Track Page Details events verification STEPS 9-10") @allure.description("[AP-7985][Amplitude] Track Page Details events verification STEPS 9-10") def test_tp_td_events_verification_steps_9_10(self, tab): self.loginPage.login_with_worker() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_event_user_properties(events[0]) self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) self.amplitude_helper.wait_and_get_amplitude_events(2, False) # step 9, 16 if tab == "past": self.tp.td_switch_to_past_playlists_tab() self.amplitude_helper.wait_and_get_amplitude_events() tab_in_event = "Past Playlists" else: tab_in_event = "Current Playlists and Stations" self.tp.td_click_export() events = self.amplitude_helper.wait_and_get_amplitude_events() assert_that(events[-1]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["td_export_clicked"]) assert_that(events[-1]["event_properties"]["tab"]).is_equal_to(tab_in_event) # step 10, 17 self.pip.open_popup() events = self.amplitude_helper.wait_and_get_amplitude_events() metadata = self.pip.get_metadata() names = self.pip.get_playlist_track_names() assert_that(events[0]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tp_popup_opened"]) assert_that(events[0]["event_properties"]["playlist_name"].strip()).is_equal_to(names["playlist"]) assert_that(events[0]["event_properties"]["playlist_id"]).is_equal_to(metadata["playlist_id"]) assert_that(events[0]["event_properties"]["track_name"]).is_equal_to(names["track"]) assert_that(events[0]["event_properties"]["track_artist"].split(",")[0]).is_equal_to(self.pip.get_artist_name().split(",")[0]) assert_that(events[0]["event_properties"]["track_id"]).is_equal_to(metadata["track_id"]) self.pip.close_popup() self.tp.td_change_dsp(AppConfig.get("dsp")["apple"]) self.pip.open_popup() events = self.amplitude_helper.wait_and_get_amplitude_events(2) metadata = self.pip.get_metadata() names = self.pip.get_playlist_track_names() assert_that(events[-1]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tp_popup_opened"]) assert_that(events[-1]["event_properties"]["playlist_name"].strip()).is_equal_to(names["playlist"]) assert_that(events[-1]["event_properties"]["playlist_id"]).is_equal_to(metadata["playlist_id"]) assert_that(events[-1]["event_properties"]["track_name"]).is_equal_to(names["track"]) assert_that(events[-1]["event_properties"]["track_artist"].split(",")[0]).is_equal_to(self.pip.get_artist_name().split(",")[0]) assert_that(events[-1]["event_properties"]["track_id"]).is_equal_to(metadata["track_id"]) self.pip.close_popup() if tab == "current": self.tp.td_change_dsp(AppConfig.get("dsp")["amazon"]) self.tp.td_change_entities(AppConfig.get("source")["playlists"]) self.pip.open_popup() events = self.amplitude_helper.wait_and_get_amplitude_events(3) metadata = self.pip.get_metadata() names = self.pip.get_playlist_track_names() assert_that(events[-1]["event_type"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["tp_popup_opened"]) assert_that(events[-1]["event_properties"]["playlist_name"].strip()).is_equal_to(names["playlist"]) assert_that(events[-1]["event_properties"]["playlist_id"].split("_")[0]).is_equal_to(metadata["playlist_id"].split("_")[0]) assert_that(events[-1]["event_properties"]["track_name"]).is_equal_to(names["track"]) assert_that(events[-1]["event_properties"]["track_artist"].split(",")[0]).is_equal_to(self.pip.get_artist_name().split(",")[0]) assert_that(events[-1]["event_properties"]["track_id"]).is_equal_to(metadata["track_id"]) self.pip.close_popup()