summaryrefslogtreecommitdiffstats
path: root/tests/rustdoc-gui/pocket-menu.goml
blob: 404e574030591ab63b5208a4885b92890e7b9d48 (plain)
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
// This test ensures that the "pocket menus" are working as expected.
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
// First we check that the help menu doesn't exist yet.
assert-false: "#help-button .popover"
// Then we display the help menu.
click: "#help-button"
assert: "#help-button .popover"
assert-css: ("#help-button .popover", {"display": "block"})

// Now we click somewhere else on the page to ensure it is handling the blur event
// correctly.
click: ".sidebar"
assert-css: ("#help-button .popover", {"display": "none"})

// Now we will check that we cannot have two "pocket menus" displayed at the same time.
click: "#help-button"
assert-css: ("#help-button .popover", {"display": "block"})
click: "#settings-menu"
assert-css: ("#help-button .popover", {"display": "none"})
assert-css: ("#settings-menu .popover", {"display": "block"})

// Now the other way.
click: "#help-button"
assert-css: ("#help-button .popover", {"display": "block"})
assert-css: ("#settings-menu .popover", {"display": "none"})

// Now verify that clicking the help menu again closes it.
click: "#help-button"
assert-css: ("#help-button .popover", {"display": "none"})
assert-css: ("#settings-menu .popover", {"display": "none"})

define-function: (
    "check-popover-colors",
    (theme, border_color),
    block {
        set-local-storage: {
            "rustdoc-theme": |theme|,
            "rustdoc-use-system-theme": "false",
        }
        reload:

        click: "#help-button"
        assert-css: (
            "#help-button .popover",
            {"display": "block", "border-color": |border_color|},
        )
        compare-elements-css: ("#help-button .popover", "#help-button .top", ["border-color"])
        compare-elements-css: ("#help-button .popover", "#help-button .bottom", ["border-color"])
    }
)

// We check the borders color now:
call-function: ("check-popover-colors", {
    "theme": "ayu",
    "border_color": "#5c6773",
})
call-function: ("check-popover-colors", {
    "theme": "dark",
    "border_color": "#e0e0e0",
})
call-function: ("check-popover-colors", {
    "theme": "light",
    "border_color": "#e0e0e0",
})

// Opening the mobile sidebar should close the settings popover.
set-window-size: (650, 600)
click: "#settings-menu a"
assert-css: ("#settings-menu .popover", {"display": "block"})
click: ".sidebar-menu-toggle"
assert: "//*[@class='sidebar shown']"
assert-css: ("#settings-menu .popover", {"display": "none"})
// Opening the settings popover should close the sidebar.
click: "#settings-menu a"
assert-css: ("#settings-menu .popover", {"display": "block"})
assert-false: "//*[@class='sidebar shown']"

// Opening the settings popover at start (which async loads stuff) should also close.
reload:
click: ".sidebar-menu-toggle"
assert: "//*[@class='sidebar shown']"
assert-false: "#settings-menu .popover"
click: "#settings-menu a"
assert-false: "//*[@class='sidebar shown']"
wait-for: "#settings-menu .popover"