from appium.webdriver.common.appiumby import AppiumBy as By from helpers.platform.ios.locators import ios_label_equals, ios_other_by_name from ..base_screen import BaseScreen from helpers.test_data import localization class MyFavoritesScreen(BaseScreen): songs_tab = "starredSoundRecordings" products_tab = "starredProducts" artists_tab = "starredParticipants" labels_tab = "starredLabels" artists_notification_settings = ios_label_equals( 'ARTISTS NOTIFICATION SETTINGS') recommended_songs_title = "Recommended Songs" recommended_songs = \ '**/XCUIElementTypeOther[`label CONTAINS "topTracksItem"`]' recommended_products_title = "Recommended Products" recommended_products = \ '**/XCUIElementTypeOther[`label CONTAINS "product"`]' recommended_labels_settings = ios_label_equals( 'LABELS NOTIFICATION SETTINGS', element_type='XCUIElementTypeOther', ) recommended_labels_title = "Recommended Labels" recommended_labels = '' def assert_artists_tab_is_selected(self): assert self.waiter(10, By.IOS_CLASS_CHAIN, self.artists_notification_settings) def select_tab(self, tab_name): tab_element = getattr(self, tab_name) self.driver.find_element(By.ID, tab_element).click() def assert_recommended_songs_are_shown(self): assert self.waiter(10, By.ID, self.recommended_songs_title) self.driver.find_elements(By.IOS_CLASS_CHAIN, self.recommended_songs) def assert_recommended_products_are_shown(self): assert self.waiter(10, By.ID, self.recommended_products_title) self.driver.find_elements(By.IOS_CLASS_CHAIN, self.recommended_products) def assert_recommended_labels_are_shown(self): assert self.waiter(10, By.IOS_CLASS_CHAIN, self.recommended_labels_settings) # TODO: Implementation for finding recommended labels def verify_my_favorites_screen_is_localized(self, context): localization_data = ( localization.MY_FAVORITES_LOCALIZATION)[context.current_language] song_settings = localization_data["songs_notification_settings"] self.waiter(10, By.IOS_CLASS_CHAIN, ios_other_by_name(song_settings)) self.waiter(10, By.ACCESSIBILITY_ID, localization_data['recommended_songs'])