# 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
[docs]class Clock(Base):
name = 'Clock'
_visible_clock_locator = (By.CSS_SELECTOR, '#clock-view .visible')
_clock_views = {"stopwatch": "stopwatch-tab", "alarm": "alarm-tab", "timer": "timer-tab"}
[docs] def launch(self):
Base.launch(self)
Wait(self.marionette).until(expected.element_displayed(
Wait(self.marionette).until(expected.element_present(
*self._visible_clock_locator))))
[docs] def switch_view(self, view_name):
Wait(self.marionette).until(
expected.element_present(*(By.ID, self._clock_views.get(view_name)))).tap()
if view_name == 'stopwatch':
from gaiatest.apps.clock.regions.stopwatch import StopWatch
return StopWatch(self.marionette)
elif view_name == 'timer':
from gaiatest.apps.clock.regions.timer import Timer
return Timer(self.marionette)
elif view_name == 'alarm':
from gaiatest.apps.clock.regions.alarm import Alarm
return Alarm(self.marionette)
else:
raise AttributeError('{} is not a view that you can switch to'.format(view_name))