Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
93 lines
4 KiB
Python
Executable file
93 lines
4 KiB
Python
Executable file
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
from marionette_driver import expected, By, Wait
|
|
|
|
from gaiatest.apps.base import Base
|
|
from gaiatest.apps.music.regions.list_view import AlbumsView, ArtistsView, SongsView
|
|
|
|
|
|
class Music(Base):
|
|
|
|
name = 'Music'
|
|
manifest_url = '{}music{}/manifest.webapp'.format(Base.DEFAULT_PROTOCOL, Base.DEFAULT_APP_HOSTNAME)
|
|
|
|
_loading_spinner_locator = (By.ID, 'spinner-overlay')
|
|
_active_view_locator = (By.CSS_SELECTOR, 'iframe.active[src*="/views/home/index.html"]')
|
|
_music_tiles_locator = (By.ID, 'tiles')
|
|
_views_locator = (By.ID, 'views')
|
|
_tabs_locator = (By.ID, 'tabs')
|
|
_empty_overlay_shadow_DOM_locator = (By.ID, 'empty-overlay')
|
|
_empty_music_title_locator = (By.CSS_SELECTOR, '[data-l10n-id="empty-title"]')
|
|
_empty_music_text_locator = (By.CSS_SELECTOR, '[data-l10n-id="empty-text"]')
|
|
_albums_tab_locator = (By.CSS_SELECTOR, '[data-l10n-id="albums-tab"]')
|
|
_songs_tab_locator = (By.CSS_SELECTOR, '[data-l10n-id="songs-tab"]')
|
|
_artists_tab_locator = (By.CSS_SELECTOR, '[data-l10n-id="artists-tab"]')
|
|
_title_locator = (By.ID, 'header-title')
|
|
|
|
def launch(self):
|
|
Base.launch(self)
|
|
Wait(self.marionette).until(expected.element_not_displayed(
|
|
*self._loading_spinner_locator))
|
|
|
|
def wait_for_music_tiles_displayed(self):
|
|
Wait(self.marionette).until(expected.element_displayed(*self._active_view_locator))
|
|
self.marionette.switch_to_frame(self.marionette.find_element(*self._active_view_locator))
|
|
Wait(self.marionette).until(expected.element_displayed(*self._music_tiles_locator))
|
|
self.apps.switch_to_displayed_app()
|
|
|
|
def wait_for_empty_message_to_load(self):
|
|
self.marionette.switch_to_shadow_root(self.marionette.find_element(*self._empty_overlay_shadow_DOM_locator))
|
|
Wait(self.marionette).until(lambda m: self.empty_music_title != '')
|
|
Wait(self.marionette).until(lambda m: self.empty_music_text != '')
|
|
self.apps.switch_to_displayed_app()
|
|
|
|
def wait_for_view_displayed(self, view_name):
|
|
title = self.marionette.find_element(*self._title_locator)
|
|
Wait(self.marionette).until(expected.element_displayed(title))
|
|
Wait(self.marionette).until(lambda m: title.text == view_name)
|
|
|
|
@property
|
|
def empty_music_title(self):
|
|
return self.marionette.find_element(*self._empty_music_title_locator).text
|
|
|
|
@property
|
|
def empty_music_text(self):
|
|
return self.marionette.find_element(*self._empty_music_text_locator).text
|
|
|
|
@property
|
|
def views(self):
|
|
return self.marionette.find_element(*self._views_locator)
|
|
|
|
@property
|
|
def tabs(self):
|
|
return self.marionette.find_element(*self._tabs_locator)
|
|
|
|
def tap_albums_tab(self):
|
|
element = Wait(self.marionette).until(
|
|
expected.element_present(*self._albums_tab_locator))
|
|
Wait(self.marionette).until(expected.element_displayed(element))
|
|
element.tap()
|
|
return AlbumsView(self.marionette)
|
|
|
|
def tap_songs_tab(self):
|
|
element = Wait(self.marionette).until(
|
|
expected.element_present(*self._songs_tab_locator))
|
|
Wait(self.marionette).until(expected.element_displayed(element))
|
|
element.tap()
|
|
return SongsView(self.marionette)
|
|
|
|
def tap_artists_tab(self):
|
|
element = Wait(self.marionette).until(
|
|
expected.element_present(*self._artists_tab_locator))
|
|
Wait(self.marionette).until(expected.element_displayed(element))
|
|
element.tap()
|
|
return ArtistsView(self.marionette)
|
|
|
|
def a11y_click_albums_tab(self):
|
|
element = Wait(self.marionette).until(
|
|
expected.element_present(*self._albums_tab_locator))
|
|
Wait(self.marionette).until(expected.element_displayed(element))
|
|
self.accessibility.click(element)
|
|
return AlbumsView(self.marionette)
|