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.left_navigation_panel import LeftNavigationPanel from app.src.pages.login_page import LoginPage from app.src.pages.new_music_friday import NewMusicFridayPage from app.src.pages.new_music_friday_popup import NewMusicFridayPopup 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) nmf_sony = "Sony" nmf_non_sony = "Non-Sony" search_value = "Travis" all_featured = "All" @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.nmf_page = NewMusicFridayPage(self.driver) self.left_panel = LeftNavigationPanel(self.driver) self.nmf_popup = NewMusicFridayPopup(self.driver) @allure.story("AP-6034") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5953][Amplitude] NMF page events") @allure.description("""TC Verifies events when user working with NMF page""") def test_nmf_page(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.left_panel.open_right_hamburger_menu_pages(self.left_panel.link_nmf) self.nmf_page.header_is_present() events = self.amplitude_helper.wait_and_get_amplitude_events(3) self.amplitude_helper.verify_for_event_type(events[2], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["event_type"]) # step 2 selected_date = self.nmf_page.select_date_in_date_dd() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_date"]).is_equal_to(selected_date) # step 3 # sony self.nmf_page.filter_by_sony_non_sony([self.nmf_page.filter_sony]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_owner"]).is_equal_to(self.nmf_sony) # non-sony self.nmf_page.filter_by_sony_non_sony([self.nmf_page.filter_non_sony]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_owner"]).is_equal_to(self.nmf_non_sony) # sony + non-sony self.nmf_page.filter_by_sony_non_sony([self.nmf_page.filter_sony, self.nmf_page.filter_non_sony]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_owner"]).is_equal_to(self.all_featured) # step 4 # alphabetical self.nmf_page.sort_by(self.nmf_page.sort_alphabetical) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_sorting"]).is_equal_to(self.nmf_page.sort_alphabetical) # track position self.nmf_page.sort_by(self.nmf_page.sort_track_position) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_sorting"]).is_equal_to(self.nmf_page.sort_track_position) # top markets self.nmf_page.sort_by(self.nmf_page.sort_top_markets) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_sorting"]).is_equal_to(self.nmf_page.sort_top_markets) # step 5-6 self.nmf_page.enter_nmf_search_value(self.search_value) self.nmf_page.focus_out_of_the_search_field() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["search_event_type"]) # step 7 self.nmf_page.nmf_click_export() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_PAGE["export_event_type"])