Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,120 @@
# 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
class Phone(Base):
name = "Phone"
entry_point = "dialer"
manifest_url = '{}communications{}/manifest.webapp'.format(Base.DEFAULT_PROTOCOL,Base.DEFAULT_APP_HOSTNAME)
_dialog_locator = (By.ID, 'confirmation-message')
_dialog_title_locator = (By.XPATH, "//*[@id='confirmation-message']/section/h1")
_call_log_toolbar_button_locator = (By.ID, 'option-recents')
_call_log_toolbar_locator = (By.ID, 'recents-panel')
_contacts_view_locator = (By.ID, 'option-contacts')
_keypad_toolbar_button_locator = (By.ID, 'option-keypad')
_keypad_toolbar_locator = (By.ID, 'keypad-panel')
_call_group_menu_locator = (By.CLASS_NAME, 'call-group-menu')
_cancel_action_menu_locator = (By.ID, 'cancel-action-menu')
_contacts_toolbar_locator = (By.ID, 'iframe-contacts-container')
_contacts_frame_locator = (By.ID, 'iframe-contacts')
def launch(self):
Base.launch(self)
Wait(self.marionette).until(
expected.element_displayed(*self._keypad_toolbar_button_locator))
@property
def keypad(self):
from gaiatest.apps.phone.regions.keypad import Keypad
return Keypad(self.marionette)
def _switch_to_contacts_frame(self):
# This is a nested frame and we cannot locate it with AppWindowManager
frame = Wait(self.marionette).until(
expected.element_present(*self._contacts_frame_locator))
self.marionette.switch_to_frame(frame)
from gaiatest.apps.contacts.app import Contacts
return Contacts(self.marionette)
def tap_contacts(self):
self.marionette.find_element(*self._contacts_view_locator).tap()
return self._switch_to_contacts_frame()
def a11y_click_contacts(self):
self.accessibility.click(self.marionette.find_element(
*self._contacts_view_locator))
return self._switch_to_contacts_frame()
@property
def call_screen(self):
from gaiatest.apps.phone.regions.call_screen import CallScreen
return CallScreen(self.marionette)
@property
def call_log(self):
from gaiatest.apps.phone.regions.call_log import CallLog
return CallLog(self.marionette)
@property
def confirmation_dialog_text(self):
return self.marionette.find_element(*self._dialog_title_locator).text
def wait_for_confirmation_dialog(self):
Wait(self.marionette).until(
expected.element_displayed(*self._dialog_locator))
def tap_call_log_toolbar_button(self):
element = Wait(self.marionette).until(
expected.element_present(*self._call_log_toolbar_button_locator))
Wait(self.marionette).until(expected.element_displayed(element))
element.tap()
return self.call_log
def a11y_click_call_log_toolbar_button(self):
element = Wait(self.marionette).until(
expected.element_present(*self._call_log_toolbar_button_locator))
Wait(self.marionette).until(expected.element_displayed(element))
self.accessibility.click(element)
return self.call_log
def tap_keypad_toolbar_button(self):
element = Wait(self.marionette).until(
expected.element_present(*self._keypad_toolbar_button_locator))
Wait(self.marionette).until(expected.element_displayed(element))
element.tap()
return self.keypad
def a11y_click_keypad_toolbar_button(self):
element = Wait(self.marionette).until(
expected.element_present(*self._keypad_toolbar_button_locator))
Wait(self.marionette).until(expected.element_displayed(element))
self.accessibility.click(element)
return self.keypad
def make_call_and_hang_up(self, phone_number):
"""Just makes a call and hangs up. Does not do any assertions."""
call_screen = self.keypad.call_number(phone_number)
call_screen.wait_for_outgoing_call()
call_screen.hang_up()
def a11y_make_call(self, phone_number):
call_screen = self.keypad.a11y_call_number(phone_number)
call_screen.wait_for_outgoing_call()
def a11y_hang_up(self):
self.call_screen.a11y_hang_up()
def a11y_make_call_and_hang_up(self, phone_number):
"""Just makes a call and hangs up using the screen reader. Does not do any assertions."""
self.a11y_make_call(phone_number)
self.a11y_hang_up()