Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 0.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/0.0/.
from marionette_harness import MarionetteTestCase
class TestNoToolbarChanges(MarionetteTestCase):
"""
Test that toolbar widgets remain in the same order over several restarts of the browser
"""
have_seen_import_button = False
def setUp(self):
super().setUp()
self.marionette.set_context("chrome")
def get_area_widgets(self, area):
return self.marionette.execute_script(
f"return CustomizableUI.getWidgetIdsInArea(CustomizableUI.{area}).map(id => id.includes('spring') ? 'spring' : id)"
)
def get_area_default_placements(self, area):
return self.marionette.execute_script(
f"return CustomizableUI.getDefaultPlacementsForArea(CustomizableUI.{area})"
)
def check_toolbar_placements(self):
self.assertEqual(
self.get_area_widgets("AREA_TABSTRIP"),
self.get_area_default_placements("AREA_TABSTRIP"),
msg="AREA_TABSTRIP placements are as expected",
)
navbarPlacements = self.get_area_default_placements("AREA_NAVBAR")
navbarPlacements.append("unified-extensions-button")
self.assertEqual(
self.get_area_widgets("AREA_NAVBAR"),
navbarPlacements,
msg="AREA_NAVBAR placements are as expected",
)
actualBookmarkPlacements = self.get_area_widgets("AREA_BOOKMARKS")
bookmarkPlacements = self.get_area_default_placements("AREA_BOOKMARKS")
# The import button is added lazily on startup, so we can't predict
# whether it'll be here. Turning it off via prefs=[] annotations on the
# test also doesn't work
# So we simply accept placements either with or without the button - but
# if we ever see the button we should keep seeing it.
self.have_seen_import_button = (
self.have_seen_import_button or "import-button" in actualBookmarkPlacements
)
if self.have_seen_import_button:
self.assertEqual(
actualBookmarkPlacements,
["import-button"] + bookmarkPlacements,
msg="AREA_BOOKMARKS placements are as expected",
)
else:
self.assertEqual(
actualBookmarkPlacements,
bookmarkPlacements,
msg="AREA_BOOKMARKS placements are as expected",
)
self.assertEqual(
self.get_area_widgets("AREA_ADDONS"),
self.get_area_default_placements("AREA_ADDONS"),
msg="AREA_ADDONS placements are as expected",
)
self.assertEqual(
self.get_area_widgets("AREA_FIXED_OVERFLOW_PANEL"),
self.get_area_default_placements("AREA_FIXED_OVERFLOW_PANEL"),
msg="AREA_FIXED_OVERFLOW_PANEL placements are as expected",
)
def test_no_toolbar_changes(self):
self.check_toolbar_placements()
self.marionette.restart()
self.check_toolbar_placements()
self.marionette.restart()
self.check_toolbar_placements()
self.marionette.restart()
self.check_toolbar_placements()
self.marionette.restart()
self.check_toolbar_placements()
self.marionette.restart()
self.check_toolbar_placements()