test_sidebar_button_removal.py (2942B)
1 # This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 5 from marionette_harness import MarionetteTestCase 6 7 customization_pref = "browser.uiCustomization.state" 8 9 10 class TestSidebarButtonRemoval(MarionetteTestCase): 11 def setUp(self): 12 super().setUp() 13 self.marionette.set_context("chrome") 14 15 def tearDown(self): 16 try: 17 # Make sure subsequent tests get a clean profile 18 self.marionette.restart(in_app=False, clean=True) 19 finally: 20 super().tearDown() 21 22 def get_sidebar_cui_area(self): 23 area = self.marionette.execute_script( 24 """ 25 const window = BrowserWindowTracker.getTopWindow(); 26 return window.CustomizableUI.getPlacementOfWidget("sidebar-button")?.area; 27 """ 28 ) 29 return area 30 31 def test_sidebar_enable_at_restart(self): 32 self.marionette.enforce_gecko_prefs({"sidebar.revamp": False}) 33 self.assertEqual( 34 self.get_sidebar_cui_area(), 35 None, 36 "The sidebar-button is not placed in a toolbar", 37 ) 38 # enable revamp at the next startup 39 self.marionette.enforce_gecko_prefs({"sidebar.revamp": True}) 40 self.assertEqual( 41 self.get_sidebar_cui_area(), 42 "nav-bar", 43 "The sidebar-button gets placed in the nav-bar by default when starting up with revamp=true", 44 ) 45 46 def test_sidebar_enable_at_runtime_remove_button(self): 47 self.marionette.enforce_gecko_prefs({"sidebar.revamp": False}) 48 self.assertEqual( 49 self.get_sidebar_cui_area(), 50 None, 51 "The sidebar-button is not placed in a toolbar", 52 ) 53 self.marionette.set_pref("sidebar.revamp", True) 54 self.assertEqual( 55 self.get_sidebar_cui_area(), 56 "nav-bar", 57 "The sidebar-button is in the nav-bar", 58 ) 59 60 # Remove the button 61 self.marionette.execute_script( 62 """ 63 const window = BrowserWindowTracker.getTopWindow(); 64 return window.CustomizableUI.removeWidgetFromArea("sidebar-button"); 65 """ 66 ) 67 self.assertEqual( 68 self.get_sidebar_cui_area(), 69 None, 70 "The sidebar-button is not placed in a toolbar", 71 ) 72 self.assertEqual( 73 self.marionette.get_pref( 74 "browser.toolbarbuttons.introduced.sidebar-button" 75 ), 76 True, 77 "The 'introduced' pref is set", 78 ) 79 80 self.marionette.restart(in_app=True, clean=False) 81 self.marionette.set_context("chrome") 82 83 self.assertEqual( 84 self.get_sidebar_cui_area(), 85 None, 86 "The sidebar-button is not restored to the nav-bar", 87 )