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,48 @@
# 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/.
import time
from marionette_driver import expected, By, Wait
from gaiatest.apps.base import Base
class BookmarkMenu(Base):
name = "Bookmark"
manifest_url = '{}bookmark{}/manifest.webapp'.format(Base.DEFAULT_PROTOCOL,Base.DEFAULT_APP_HOSTNAME)
# System app - add bookmark to homescreen dialog
_add_bookmark_to_home_screen_frame_locator = (By.CSS_SELECTOR, 'iframe[src^="app://bookmark"][src$="save.html"]')
_add_bookmark_to_home_screen_dialog_button_locator = (By.ID, 'done-button')
_bookmark_title_input_locator = (By.ID, 'bookmark-title')
def __init__(self, marionette):
Base.__init__(self, marionette)
self.wait_to_be_displayed()
self.apps.switch_to_displayed_app()
def tap_add_bookmark_to_home_screen_dialog_button(self):
element = Wait(self.marionette).until(expected.element_present(
*self._add_bookmark_to_home_screen_dialog_button_locator))
Wait(self.marionette).until(expected.element_displayed(element))
# This sleep is necessary for the button to react to the tap call
time.sleep(0.2)
self.tap_element_from_system_app(element)
# Wait for the Add to bookmark frame to be dismissed
self.wait_to_not_be_displayed()
self.apps.switch_to_displayed_app()
def type_bookmark_title(self, value):
element = self.marionette.find_element(
*self._bookmark_title_input_locator)
# Wait for the default value to load into the input field
Wait(self.marionette).until(lambda m: element.get_attribute('value') != '')
element.clear()
self.keyboard.send(value)
self.keyboard.dismiss()

View file

@ -0,0 +1,35 @@
# 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 import GaiaApps
from gaiatest.apps.base import PageRegion
class BottomBar(PageRegion):
_bottom_bar_locator = (By.ID, 'bottombar')
_remove_locator = (By.ID, 'remove')
_done_locator = (By.ID, 'done')
def __init__(self, marionette):
GaiaApps(marionette).switch_to_displayed_app()
root = Wait(marionette).until(
expected.element_present(*self._bottom_bar_locator))
Wait(marionette).until(expected.element_displayed(root))
window_height = marionette.execute_script('return window.wrappedJSObject.innerHeight')
Wait(marionette).until(lambda m: int(root.rect['y'] + root.size['height']) == window_height)
PageRegion.__init__(self, marionette, root)
def tap_remove(self):
self.root_element.find_element(*self._remove_locator).tap()
from gaiatest.apps.homescreen.regions.confirm_dialog import ConfirmDialog
return ConfirmDialog(self.marionette)
def tap_exit_edit_mode(self):
self.apps.switch_to_displayed_app()
self.root_element = self.marionette.find_element(*self._bottom_bar_locator)
self.root_element.find_element(*self._done_locator).tap()

View file

@ -0,0 +1,27 @@
# 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/.
import time
from marionette_driver import expected, By, Wait
from gaiatest.apps.base import Base
from gaiatest.apps.homescreen.regions.bottom_bar import BottomBar
class ConfirmDialog(Base):
_confirm_button_locator = (By.CSS_SELECTOR, 'gaia-confirm .confirm')
def tap_confirm(self, bookmark=False):
# TODO add a good wait here when Bug 1008961 is resolved
time.sleep(1)
if not bookmark:
self.marionette.switch_to_frame()
confirm = Wait(self.marionette).until(expected.element_present(
*self._confirm_button_locator))
Wait(self.marionette).until(expected.element_displayed(confirm))
confirm.tap()
return BottomBar(self.marionette)

View file

@ -0,0 +1,23 @@
# 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/.
import time
from marionette_driver import expected, By, Wait
from gaiatest.apps.base import Base
class ConfirmInstall(Base):
_confirm_install_button_locator = (By.ID, 'app-install-install-button')
def tap_confirm(self):
# TODO add a good wait here when Bug 1008961 is resolved
self.marionette.switch_to_frame()
confirm = Wait(self.marionette).until(expected.element_present(
*self._confirm_install_button_locator))
Wait(self.marionette).until(expected.element_displayed(confirm))
confirm.tap()
self.apps.switch_to_displayed_app()

View file

@ -0,0 +1,32 @@
# 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 PermissionDialog(Base):
_permission_dialog_locator = (By.ID, 'permission-dialog')
_permission_dialog_message_locator = (By.ID, 'permission-message')
_permission_confirm_button_locator = (By.ID, 'permission-yes')
_permission_dismiss_button_locator = (By.ID, 'permission-no')
def wait_for_permission_dialog_displayed(self):
Wait(self.marionette).until(expected.element_displayed(
Wait(self.marionette).until(expected.element_present(
*self._permission_dialog_locator))))
@property
def permission_dialog_message(self):
return self.marionette.find_element(*self._permission_dialog_message_locator).text
def tap_to_confirm_permission(self):
self.marionette.find_element(*self._permission_confirm_button_locator).tap()
from gaiatest.apps.system.app import System
return System(self.marionette)
def tap_to_dismiss_permission(self):
self.marionette.find_element(*self._permission_dismiss_button_locator).tap()