File: test_assert_no_toolbar_changes.py

package info (click to toggle)
firefox 147.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,532 kB
  • sloc: cpp: 7,607,356; javascript: 6,533,348; ansic: 3,775,236; python: 1,415,508; xml: 634,561; asm: 438,949; java: 186,241; sh: 62,760; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (88 lines) | stat: -rw-r--r-- 3,562 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 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
        # (https://bugzilla.mozilla.org/show_bug.cgi?id=1959688).
        # 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()