import unittest import allure import pytest from assertpy import assert_that from faker import Faker from app.src.helpers.api_data_provider import ApiDataProvider from app.src.pages.chart_digest_page import ChartDigestPage from app.src.pages.login_page import LoginPage from app.src.pages.profile_page import ProfilePage from app.src.pages.search_page import SearchPage from app.src.pages.starred_page import StarredPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up", "authorized_api") class IsrcTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self, authorized_api): self.api = authorized_api self.loginPage = LoginPage(self.driver, authorized_api) self.chartDigestPage = ChartDigestPage(self.driver, authorized_api) self.profilePage = ProfilePage(self.driver) self.searchPage = SearchPage(self.driver, authorized_api) self.starredPage = StarredPage(self.driver, authorized_api) self.trackPage = TrackPage(self.driver, authorized_api) self.data_provider = ApiDataProvider(authorized_api) self.fake = Faker() self.market = ["United Kingdom", "gb"] self.track_name = self.data_provider.get_common_top_track_for_apple_spotify(self.market[1]) @allure.story("https://data-analytics.atlassian.net/browse/AG-5260") @allure.severity(allure.severity_level.NORMAL) @allure.title("Star/Unstar track (Apple)") @allure.description("All tracks with the same isrc should be starred/unstarred on apple tab of full charts") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4217") @pytest.mark.regression def test_star_unstar_track_charts_apple(self): track_position_in_chart = 1 self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(self.market[0]).select_chart_digest_tab() self.chartDigestPage.select_dsp("APPLE MUSIC").open_full_charts().search_track_in_full_charts(self.track_name) self.chartDigestPage.swipe_track_full_charts(track_position_in_chart).star_on_full_charts(track_position_in_chart).select_dsp("SPOTIFY").search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_starred(self.track_name), "Track is starred in charts page spotify tab").is_true() self.chartDigestPage.click_back_button().select_search_tab() self.searchPage.search_for(self.track_name) assert_that(self.searchPage.is_track_starred(self.track_name), "Track is starred in global search").is_true() self.searchPage.open_track_page_from_results(1).click_back_button() self.searchPage.clear_search_field() assert_that(self.searchPage.is_track_starred(self.track_name), "Track is starred in recent search").is_true() self.searchPage.close_keyboard_by_swipe() self.searchPage.select_chart_digest_tab() self.chartDigestPage.open_full_charts().select_dsp("APPLE MUSIC").search_track_in_full_charts(self.track_name).swipe_track_full_charts(track_position_in_chart).unstar_on_full_charts(track_position_in_chart).select_dsp("SPOTIFY").search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_unstarred(self.track_name), "Track is unstarred in charts page spotify tab").is_true() self.chartDigestPage.click_back_button().select_search_tab() self.searchPage.search_for(self.track_name) assert_that(self.searchPage.is_track_unstarred(self.track_name), "Track is unstarred in global search").is_true() self.searchPage.clear_search_field() assert_that(self.searchPage.is_track_unstarred(self.track_name), "Track is unstarred in recent search").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5260") @allure.severity(allure.severity_level.NORMAL) @allure.title("Star/Unstar track (Spotify)") @allure.description("All tracks with the same isrc should be starred/unstarred on spotify tab of full charts") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4218") @pytest.mark.regression def test_star_unstar_track_charts_spotify(self): self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(self.market[0]).select_chart_digest_tab() self.chartDigestPage.select_dsp("SPOTIFY").open_full_charts().search_track_in_full_charts(self.track_name) self.chartDigestPage.swipe_track_full_charts(1).star_on_full_charts(1).select_dsp("APPLE MUSIC").search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_starred(self.track_name), "Track is starred in charts page spotify tab").is_true() self.chartDigestPage.click_back_button().select_search_tab() self.searchPage.search_for(self.track_name) assert_that(self.searchPage.is_track_starred(self.track_name), "Track is starred in global search").is_true() self.searchPage.open_track_page_from_results(1).click_back_button() self.searchPage.clear_search_field() assert_that(self.searchPage.is_track_starred(self.track_name), "Track is starred in recent search").is_true() self.searchPage.select_chart_digest_tab() self.chartDigestPage.open_full_charts().select_dsp("SPOTIFY").search_track_in_full_charts(self.track_name).swipe_track_full_charts(1).unstar_on_full_charts(1).select_dsp("APPLE MUSIC").search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_unstarred(self.track_name), "Track is unstarred in charts page apple tab").is_true() self.chartDigestPage.click_back_button().select_search_tab() self.searchPage.search_for(self.track_name) assert_that(self.searchPage.is_track_unstarred(self.track_name), "Track is unstarred in global search").is_true() self.searchPage.clear_search_field() assert_that(self.searchPage.is_track_unstarred(self.track_name), "Track is unstarred in recent search").is_true() @allure.story("https://data-analytics.atlassian.net/browse/AG-5260") @allure.severity(allure.severity_level.NORMAL) @allure.title("Star/Unstar track from Search") @allure.description("All tracks with the same isrc should be starred/unstarred from global and recent search") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-4150," "https://data-analytics.atlassian.net/browse/AG-4157") @pytest.mark.regression def test_star_unstar_track_search(self): self.loginPage.login_as_regular_user() self.profilePage.open_profile_screen_and_select_market(self.market[0]).select_chart_digest_tab() self.chartDigestPage.select_dsp("SPOTIFY").open_full_charts().search_track_in_full_charts(self.track_name) self.chartDigestPage.click_back_button().select_search_tab() self.searchPage.search_for(self.track_name).swipe_track_on_search_results(1).star_on_search_results(1) assert_that(self.searchPage.is_track_starred(self.track_name), "Track is starred in global search").is_true() self.searchPage.open_track_page_from_results(1).click_back_button() self.searchPage.clear_search_field() assert_that(self.searchPage.is_track_starred(self.track_name), "Track is starred in recent search").is_true() self.searchPage.select_chart_digest_tab() self.chartDigestPage.open_full_charts().search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_starred(self.track_name), "Track is starred in charts page spotify tab").is_true() self.chartDigestPage.select_dsp("APPLE MUSIC").search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_starred(self.track_name), "Track is starred in charts page apple tab").is_true() self.chartDigestPage.click_back_button().select_search_tab() self.searchPage.search_for(self.track_name).swipe_track_on_search_results(1).unstar_on_search_results(1) assert_that(self.searchPage.is_track_unstarred(self.track_name), "Track is unstarred in recent search").is_true() self.searchPage.select_chart_digest_tab() self.chartDigestPage.open_full_charts().select_dsp("SPOTIFY").search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_unstarred(self.track_name), "Track is starred in charts page spotify tab").is_true() self.chartDigestPage.select_dsp("APPLE MUSIC") self.chartDigestPage.search_track_in_full_charts(self.track_name) assert_that(self.chartDigestPage.is_track_unstarred(self.track_name), "Track is starred in charts page apple tab").is_true()