import logging import unittest import allure import pytest from assertpy import assert_that from faker import Faker from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import logger as cl from app.src.pages.login_page import LoginPage 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 RecentPlaylistSearchTest(unittest.TestCase): log = cl.Logger(logging.DEBUG) @pytest.fixture(autouse=True) def classSetup(self, authorized_api): self.api = authorized_api self.loginPage = LoginPage(self.driver, authorized_api) self.searchPage = SearchPage(self.driver, authorized_api) self.trackPage = TrackPage(self.driver, authorized_api) self.starredPage = StarredPage(self.driver, authorized_api) self.ts = TestStatus(self.driver) self.fake = Faker() @allure.story("https://data-analytics.atlassian.net/browse/AG-4758") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Recent Searches list after opening playlists from ApolloGo") @allure.description("User should be able to see playlists from the recent searches") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-2264" "https://data-analytics.atlassian.net/browse/AG-2297" "https://data-analytics.atlassian.net/browse/AG-2260") @pytest.mark.smoke def test_recent_searches_list(self): first_query = self.fake.word() second_query = self.fake.word() self.loginPage.login_as_regular_user() last_track_name = self.searchPage.click_playlists_tab().get_result_playlists_title_full(20) self.searchPage.search_for(first_query) first_track_name = self.searchPage.get_result_playlists_title(1) self.searchPage.open_playlist_page_from_results(1).click_back_button() self.searchPage.clear_search_field() first_track_recent = self.searchPage.get_result_playlists_title_full(1) last_track_name_updated = self.searchPage.get_result_playlists_title_full(20) assert_that(last_track_name_updated).is_not_equal_to(last_track_name) assert_that(first_track_recent).contains(first_track_name.lower()) self.searchPage.search_for(second_query) second_track_name = self.searchPage.get_result_playlists_title(1) self.searchPage.open_playlist_page_from_results(1).click_back_button() self.searchPage.clear_search_field() second_track_recent = self.searchPage.get_result_playlists_title_full(1) assert_that(second_track_recent).contains(second_track_name.lower()) # Last opened track should be the first in the search list # TODO: Need to implement partial entry in tests # old_first_track_title = self.searchPage.get_result_playlists_title_full(1) # old_second_track = self.searchPage.get_result_playlists_title_full(2) # self.searchPage.open_playlist_page_from_results(2).click_back_button() # new_first_track_title = self.searchPage.get_result_playlists_title_full(1) # assert_that(new_first_track_title).is_not_equal_to(old_first_track_title) # assert_that(new_first_track_title).is_equal_to(old_second_track) @allure.story("https://data-analytics.atlassian.net/browse/AG-4869") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Scrolling through recent search") @allure.description("Results are scrollable, limit is 20") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-2253") @pytest.mark.smoke def test_search_results_scroll(self): self.loginPage.login_as_regular_user() self.searchPage.click_playlists_tab().scroll_down_search_results() assert_that(self.searchPage.is_track_scrolled(), "Track is scrolled").is_true()