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.api_client import ApiClient from app.src.pages.album_page import AlbumPage from app.src.pages.amplitude_helper import AmplitudeHelper from app.src.pages.apple_playlist_page import ApplePlaylistPage from app.src.pages.artist_page import ArtistPage from app.src.pages.chart_digest import ChartDigestPage from app.src.pages.login_page import LoginPage from app.src.pages.most_added_track_page import MostAddedTrackPage from app.src.pages.my_starred_tracks_page import MyStarredTracksPage 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.api_client = ApiClient() self.loginPage = LoginPage(self.driver) self.ts = TestStatus(self.driver) self.chart_digest = ChartDigestPage(self.driver) self.amplitude_helper = AmplitudeHelper(self.driver) self.track_page = TrackPage(self.driver) self.my_starred_tracks_page = MyStarredTracksPage(self.driver) self.apple_playlist_page = ApplePlaylistPage(self.driver) self.artist_page = ArtistPage(self.driver) self.album_page = AlbumPage(self.driver) self.most_added_track = MostAddedTrackPage(self.driver) @allure.issue("https://data-analytics.atlassian.net/browse/AP-8516") @pytest.mark.flaky(reruns=0) @allure.story("AP-2239") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-2127, AP-3406] Amplitude Events: main pages view (track, playlist, artist, album, account, charts digest, track comparison)") @allure.description("""TC Verifies main pages view (track, playlist, artist, album, account, charts digest, track comparison)""") def test_star_unstar_events(self): user = self.loginPage.get_user_email_with_worker() token = self.api_client.authorize(user=user) self.loginPage.login_with_worker() self.chart_digest.is_opened() self.track_page.select_market(AppConfig.get("market")["us"]["name"]) self.chart_digest.is_opened() events = self.amplitude_helper.wait_and_get_amplitude_events(4, False) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_event_user_properties(events[0]) starred_tracks = self.api_client.get_starred_tracks(token=token) self.my_starred_tracks_page.delete_all_starred_tracks(tracks_list=starred_tracks, token=token) # step 1 self.track_page.open_spotify_track_page(AppConfig.get("track40")["id"]) self.track_page.is_track_page_title_present(AppConfig.get("track40")["name"]) events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.track_page.star_track() events = self.amplitude_helper.wait_and_get_amplitude_events(2) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(1) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.TRACK_PAGE["track_favorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_favorited_source"]) assert_that(events[1]["event_properties"]["track_id"]).is_equal_to(AppConfig.get("track40")["id"]) assert_that(events[1]["event_properties"]["is_sony"]).is_true() assert_that(events[1]["event_properties"]["track_name"]).is_equal_to(AppConfig.get("track40")["name"]) assert_that(events[1]["event_properties"]["track_artist"]).is_equal_to(AppConfig.get("track40")["artist"]) # step 2 self.apple_playlist_page.open_apple_playlist_page(AppConfig.get("playlist9")["apple_id"]) self.apple_playlist_page.title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.apple_playlist_page.star_track_in_apple_playlist() events = self.amplitude_helper.wait_and_get_amplitude_events(2) track_data = self.apple_playlist_page.get_playlist_track_data(market=AppConfig.get("market")["us"]["api"], track_number=0) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(2) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.PLAYLIST_PAGE["track_favorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.PLAYLIST_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(track_data["playParams"]["id"]) assert_that(events[1]["event_properties"]["track_name"]).is_equal_to(track_data["name"]) assert_that(events[1]["event_properties"]["track_artist"]).is_equal_to(track_data["artistName"]) # step 3 self.artist_page.open_artist_page(AppConfig.get("artist2")["id"]) self.artist_page.title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.artist_page.star_track_in_artist_page() events = self.amplitude_helper.wait_and_get_amplitude_events(2) artist_tracks = self.api_client.get_tracks_from_artists_page(artist_id=AppConfig.get("artist2")["id"], market=AppConfig.get("market")["us"]["api"]) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(3) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.ARTIST_PAGE["track_favorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.ARTIST_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(artist_tracks["items"][0]["spotifyTrack"]["trackId"]) assert_that(events[1]["event_properties"]["track_name"]).is_equal_to(artist_tracks["items"][0]["spotifyTrack"]["trackName"]) assert_that(events[1]["event_properties"]["track_artist"]).is_equal_to(artist_tracks["items"][0]["spotifyTrack"]["artists"][0]["name"]) # step 4 self.album_page.open_album_page(AppConfig.get("album1")["id"]) self.album_page.album_title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.album_page.star_track_in_album_page() events = self.amplitude_helper.wait_and_get_amplitude_events(2) track_data = self.album_page.get_track_data_from_tracks_list(track_number=1) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(4) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.ALBUM_PAGE["track_favorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.ALBUM_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(track_data["track_id"]) assert_that(events[1]["event_properties"]["track_name"]).is_equal_to(track_data["track_name"]) event_artists = events[1]["event_properties"]["track_artist"].split(", ") assert_that(event_artists).is_equal_to(track_data["track_artists"]) # step 5 self.most_added_track.open_most_added_page() self.most_added_track.title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.most_added_track.star_track_in_most_added_track_page() events = self.amplitude_helper.wait_and_get_amplitude_events(2) most_added_track_data = self.most_added_track.get_most_added_track_data(track_number=1) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(5) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.MOST_ADDED_TRACK_PAGE["track_favorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.MOST_ADDED_TRACK_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(most_added_track_data["track_id"]) assert_that(events[1]["event_properties"]["track_name"]).is_equal_to(most_added_track_data["track_name"]) event_artists = events[1]["event_properties"]["track_artist"].split(", ") assert_that(event_artists).is_equal_to(most_added_track_data["track_artists"]) # step 6 # unstar from track page self.track_page.open_spotify_track_page(AppConfig.get("track40")["id"]) self.track_page.is_track_page_title_present(AppConfig.get("track40")["name"]) events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.track_page.unstar_track() events = self.amplitude_helper.wait_and_get_amplitude_events(2) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(4) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.TRACK_PAGE["track_unfavorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.TRACK_PAGE["track_favorited_source"]) assert_that(events[1]["event_properties"]["track_id"]).is_equal_to(AppConfig.get("track40")["id"]) # unstar from playlist page self.apple_playlist_page.open_apple_playlist_page(AppConfig.get("playlist9")["apple_id"]) self.apple_playlist_page.title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.apple_playlist_page.unstar_track_in_apple_playlist() events = self.amplitude_helper.wait_and_get_amplitude_events(2) track_data = self.apple_playlist_page.get_playlist_track_data(market=AppConfig.get("market")["us"]["api"], track_number=0) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(3) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.PLAYLIST_PAGE["track_unfavorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.PLAYLIST_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(track_data["playParams"]["id"]) # unstar from artist page self.artist_page.open_artist_page(AppConfig.get("artist2")["id"]) self.artist_page.title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(5) self.artist_page.unstar_track_in_artist_page() events = self.amplitude_helper.wait_and_get_amplitude_events(2) artist_tracks = self.api_client.get_tracks_from_artists_page(artist_id=AppConfig.get("artist2")["id"], market=AppConfig.get("market")["us"]["api"]) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(2) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.ARTIST_PAGE["track_unfavorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.ARTIST_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(artist_tracks["items"][0]["spotifyTrack"]["trackId"]) # unstar from album self.album_page.open_album_page(AppConfig.get("album1")["id"]) self.album_page.album_title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.album_page.unstar_track_in_album_page() events = self.amplitude_helper.wait_and_get_amplitude_events(2) track_data = self.album_page.get_track_data_from_tracks_list(track_number=1) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(1) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.ALBUM_PAGE["track_unfavorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.ALBUM_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(track_data["track_id"]) # unstar from most added track self.most_added_track.open_most_added_page() self.most_added_track.title_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.most_added_track.unstar_track_in_most_added_track_page() events = self.amplitude_helper.wait_and_get_amplitude_events(2) most_added_track_data = self.most_added_track.get_most_added_track_data(track_number=1) assert_that(events[0]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(0) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.MOST_ADDED_TRACK_PAGE["track_unfavorited_event_type"]) assert_that(events[1]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.MOST_ADDED_TRACK_PAGE["track_favorited_source"]) assert_that(str(events[1]["event_properties"]["track_id"])).is_equal_to(most_added_track_data["track_id"]) # step 7 self.track_page.open_spotify_track_page(AppConfig.get("track40")["id"]) self.track_page.is_track_page_title_present(AppConfig.get("track40")["name"]) self.track_page.star_track() events = self.amplitude_helper.wait_and_get_amplitude_events(4) self.my_starred_tracks_page.open_my_starred_tracks_page() self.my_starred_tracks_page.unstar_track_in_my_starred_tracks_page() events = self.amplitude_helper.wait_and_get_amplitude_events(4) assert_that(events[2]["user_properties"]["$set"]["total_starred_tracks"]).is_equal_to(0) self.amplitude_helper.verify_for_event_type(events[3], self.amplitude_helper.MY_STARRED_TRACKS_PAGE["track_unfavorited_event_type"]) assert_that(events[3]["event_properties"]["source"]).is_equal_to(self.amplitude_helper.MY_STARRED_TRACKS_PAGE["track_favorited_source"]) assert_that(events[3]["event_properties"]["track_id"]).is_equal_to(AppConfig.get("track40")["id"])