File: test_assert_no_toolbar_changes.py

package info (click to toggle)
firefox 141.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,550,588 kB
  • sloc: cpp: 7,426,506; javascript: 6,367,238; ansic: 3,707,351; python: 1,369,002; xml: 623,983; asm: 426,918; java: 184,324; sh: 64,488; makefile: 19,203; objc: 13,059; perl: 12,955; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,071; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (88 lines) | stat: -rw-r--r-- 3,562 bytes parent folder | download | duplicates (3)
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()