# 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 SetupEmail(Base):
_name_locator = (By.CSS_SELECTOR, 'cards-setup-account-info input.sup-info-name')
_email_locator = (By.CSS_SELECTOR, 'cards-setup-account-info input.sup-info-email')
_next_locator = (By.CSS_SELECTOR, '.sup-info-next-btn')
_continue_button_locator = ('class name', 'sup-show-mail-btn sup-form-btn recommend')
_check_for_new_messages_locator = (By.CSS_SELECTOR, '.tng-account-check-interval.mail-select')
_account_prefs_section_locator = (By.CSS_SELECTOR, 'cards-setup-account-prefs section')
_account_prefs_next_locator = (By.CSS_SELECTOR, 'cards-setup-account-prefs .sup-info-next-btn')
_done_section_locator = (By.CSS_SELECTOR, 'cards-setup-done section')
def __init__(self, marionette):
Base.__init__(self, marionette)
Wait(self.marionette).until(expected.element_displayed(
Wait(self.marionette).until(expected.element_present(
*self._name_locator))))
[docs] def type_name(self, value):
self.marionette.find_element(*self._name_locator).send_keys(value)
[docs] def type_email(self, value):
self.marionette.find_element(*self._email_locator).send_keys(value)
[docs] def tap_next(self):
self.marionette.find_element(*self._next_locator).tap()
[docs] def tap_account_prefs_next(self):
next = Wait(self.marionette, timeout=120).until(
expected.element_present(*self._account_prefs_next_locator))
Wait(self.marionette, timeout=120).until(
expected.element_displayed(next))
next.tap()
[docs] def wait_for_setup_complete(self):
element = Wait(self.marionette).until(
expected.element_present(*self._done_section_locator))
Wait(self.marionette).until(lambda m: element.location['x'] == 0)
[docs] def tap_continue(self):
self.marionette.find_element(*self._continue_button_locator).tap()
[docs]class ManualSetupEmail(Base):
name = 'E-Mail' # hack to be able to use select
_name_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config input.sup-info-name')
_email_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config input.sup-info-email')
_password_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config input.sup-info-password')
_account_type_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-account-type')
_imap_username_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-composite-username')
_imap_password_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-composite-password')
_imap_hostname_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-composite-hostname')
_imap_port_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-composite-port')
_smtp_username_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-smtp-username')
_smtp_password_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-smtp-password')
_smtp_hostname_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-smtp-hostname')
_smtp_port_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-smtp-port')
_activesync_hostname_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-activesync-hostname')
_activesync_username_locator = (By.CSS_SELECTOR, 'cards-setup-manual-config .sup-manual-activesync-username')
_next_locator = (By.CSS_SELECTOR, '.sup-manual-next-btn')
_continue_button_locator = (By.CLASS_NAME, 'sup-show-mail-btn sup-form-btn recommend')
_check_for_new_messages_locator = (By.CSS_SELECTOR, '.tng-account-check-interval.mail-select')
_account_prefs_section_locator = (By.CSS_SELECTOR, 'cards-setup-account-prefs')
_account_prefs_next_locator = (By.CSS_SELECTOR, 'cards-setup-account-prefs .sup-info-next-btn')
_done_section_locator = (By.CSS_SELECTOR, 'cards-setup-done section')
def __init__(self, marionette):
Base.__init__(self, marionette)
Wait(self.marionette).until(expected.element_displayed(
Wait(self.marionette).until(expected.element_present(
*self._name_locator))))
[docs] def type_name(self, value):
el = self.marionette.find_element(*self._name_locator)
el.clear()
el.send_keys(value)
self.keyboard.dismiss()
[docs] def type_email(self, value):
el = self.marionette.find_element(*self._email_locator)
el.clear()
el.send_keys(value)
self.keyboard.dismiss()
[docs] def type_password(self, value):
el = self.marionette.find_element(*self._password_locator)
el.clear()
el.send_keys(value)
self.keyboard.dismiss()
[docs] def select_account_type(self, value):
account_type = self.marionette.find_element(*self._account_type_locator)
account_type.click()
self.marionette.switch_to_frame()
self.select(value)
[docs] def type_imap_name(self, value):
el = self.marionette.find_element(*self._imap_username_locator)
el.clear()
el.send_keys(value)
[docs] def type_imap_hostname(self, value):
el = self.marionette.find_element(*self._imap_hostname_locator)
el.clear()
el.send_keys(value)
[docs] def type_imap_password(self, value):
el = self.marionette.find_element(*self._imap_password_locator)
el.clear()
el.send_keys(value)
[docs] def type_imap_port(self, value):
el = self.marionette.find_element(*self._imap_port_locator)
el.clear()
el.send_keys(value)
[docs] def type_smtp_name(self, value):
el = self.marionette.find_element(*self._smtp_username_locator)
el.clear()
el.send_keys(value)
[docs] def type_smtp_hostname(self, value):
el = self.marionette.find_element(*self._smtp_hostname_locator)
el.clear()
el.send_keys(value)
[docs] def type_smtp_password(self, value):
el = self.marionette.find_element(*self._smtp_password_locator)
el.clear()
el.send_keys(value)
[docs] def type_smtp_port(self, value):
el = self.marionette.find_element(*self._smtp_port_locator)
el.clear()
el.send_keys(value)
self.keyboard.dismiss()
[docs] def type_activesync_name(self, value):
el = self.marionette.find_element(*self._activesync_username_locator)
el.clear()
el.send_keys(value)
self.keyboard.dismiss()
[docs] def type_activesync_hostname(self, value):
el = self.marionette.find_element(*self._activesync_hostname_locator)
el.clear()
el.send_keys(value)
[docs] def tap_next(self):
next = Wait(self.marionette).until(expected.element_present(*self._next_locator))
Wait(self.marionette).until(lambda m: next.get_attribute('disabled') != 'true')
next.tap()
account = Wait(self.marionette).until(
expected.element_present(*self._account_prefs_section_locator))
Wait(self.marionette).until(lambda m: account.location['x'] == 0)
Wait(self.marionette, timeout=120).until(expected.element_displayed(
Wait(self.marionette, timeout=120).until(expected.element_present(
*self._account_prefs_next_locator))))
[docs] def check_for_emails_interval(self, value):
# The following pref change allows us to check the mail within 1 second or longer,
# rather than the default value of 100 seconds
# The UI data layer of the UI is changed, because the minimum check mail time value is 5 min,
# which is far too long to check for in a test. This allows us to check earlier
with self.marionette.using_context('chrome'):
self.marionette.execute_script(
"Services.prefs.setIntPref('dom.requestSync.minInterval', 1);")
self.marionette.execute_script("""
document.querySelector("[data-l10n-id = settings-check-every-5min]").value = '%s';
""" % value)
self.marionette.find_element(*self._check_for_new_messages_locator).tap()
self.select('Every 5 minutes')
[docs] def tap_account_prefs_next(self):
self.marionette.find_element(*self._account_prefs_next_locator).tap()
[docs] def wait_for_setup_complete(self):
done = Wait(self.marionette).until(
expected.element_present(*self._done_section_locator))
Wait(self.marionette).until(lambda m: done.location['x'] == 0)
[docs] def tap_continue(self):
self.marionette.find_element(*self._continue_button_locator).tap()