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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
// This test ensures that the elements in the sidebar are displayed correctly.
include: "utils.goml"
javascript: false
go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
// Since the javascript is disabled, there shouldn't be a toggle.
wait-for-css: (".sidebar", {"display": "none"})
assert-false: "#sidebar-button"
// Let's retry with javascript enabled.
javascript: true
reload:
wait-for: "#src-sidebar"
assert-css: (".src .sidebar > *", {"visibility": "hidden"})
// Let's expand the sidebar now.
click: "#sidebar-button"
wait-for-css: (".src .sidebar > *", {"visibility": "visible"})
// We now check that opening the sidebar and clicking a link will leave it open.
// The behavior here on desktop is different than the behavior on mobile,
// but since the sidebar doesn't fill the entire screen here, it makes sense to have the
// sidebar stay resident.
wait-for-css: (".sidebar", {"width": "300px"})
assert-local-storage: {"rustdoc-source-sidebar-show": "true"}
click: ".sidebar a.selected"
go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
wait-for-css: (".sidebar", {"width": "300px"})
assert-local-storage: {"rustdoc-source-sidebar-show": "true"}
// Now we check the display of the sidebar items.
show-text: true
define-function: (
"check-colors",
[
theme, color, color_hover, background, background_hover, background_toggle,
],
block {
call-function: ("switch-theme", {"theme": |theme|})
wait-for-css: (".src .sidebar > *", {"visibility": "visible"})
assert-css: (
"#src-sidebar details[open] > .files a.selected",
{"color": |color_hover|, "background-color": |background|},
)
// Without hover or focus.
assert-css: (
"#src-sidebar details[open] > .files a:not(.selected)",
{"color": |color|, "background-color": |background_toggle|},
)
// With focus.
focus: "#src-sidebar details[open] > .files a:not(.selected)"
wait-for-css: (
"#src-sidebar details[open] > .files a:not(.selected):focus",
{"color": |color_hover|, "background-color": |background_hover|},
)
focus: ".search-input"
// With hover.
move-cursor-to: "#src-sidebar details[open] > .files a:not(.selected)"
assert-css: (
"#src-sidebar details[open] > .files a:not(.selected):hover",
{"color": |color_hover|, "background-color": |background_hover|},
)
// Without hover or focus.
assert-css: (
"#src-sidebar .dir-entry summary",
{"color": |color|, "background-color": |background_toggle|},
)
// With focus.
focus: "#src-sidebar .dir-entry summary"
wait-for-css: (
"#src-sidebar .dir-entry summary:focus",
{"color": |color_hover|, "background-color": |background_hover|},
)
focus: ".search-input"
// With hover.
move-cursor-to: "#src-sidebar .dir-entry summary"
assert-css: (
"#src-sidebar .dir-entry summary:hover",
{"color": |color_hover|, "background-color": |background_hover|},
)
// Without hover or focus.
assert-css: (
"#src-sidebar details[open] > .folders > details > summary",
{"color": |color|, "background-color": |background_toggle|},
)
// With focus.
focus: "#src-sidebar details[open] > .folders > details > summary"
wait-for-css: (
"#src-sidebar details[open] > .folders > details > summary:focus",
{"color": |color_hover|, "background-color": |background_hover|},
)
focus: ".search-input"
// With hover.
move-cursor-to: "#src-sidebar details[open] > .folders > details > summary"
assert-css: (
"#src-sidebar details[open] > .folders > details > summary:hover",
{"color": |color_hover|, "background-color": |background_hover|},
)
},
)
call-function: ("check-colors", {
"theme": "light",
"color": "black",
"color_hover": "#000",
"background": "#fff",
"background_hover": "#e0e0e0",
"background_toggle": "rgba(0, 0, 0, 0)",
})
call-function: ("check-colors", {
"theme": "dark",
"color": "#ddd",
"color_hover": "#ddd",
"background": "#333",
"background_hover": "#444",
"background_toggle": "rgba(0, 0, 0, 0)",
})
call-function: ("check-colors", {
"theme": "ayu",
"color": "#c5c5c5",
"color_hover": "#ffb44c",
"background": "#14191f",
"background_hover": "#14191f",
"background_toggle": "rgba(0, 0, 0, 0)",
})
// Now checking on mobile devices.
set-window-size: (500, 700)
reload:
// Waiting for the sidebar to be displayed...
wait-for-css: (".src .sidebar > *", {"visibility": "visible"})
// We now check it takes the full size of the display.
assert-property: ("body", {"clientWidth": "500", "clientHeight": "700"})
assert-property: (".sidebar", {"clientWidth": "500", "clientHeight": "700"})
// We now check that the scroll position is kept when opening the sidebar.
click: "#sidebar-button"
wait-for-css: (".src .sidebar > *", {"visibility": "hidden"})
// We scroll to line 117 to change the scroll position.
scroll-to: '//*[@id="117"]'
store-value: (y_offset, "2578")
assert-window-property: {"pageYOffset": |y_offset|}
// Expanding the sidebar...
click: "#sidebar-button"
wait-for-css: (".sidebar", {"left": "0px"})
click: "#sidebar-button"
wait-for-css: (".sidebar", {"left": "-1000px"})
// The "scrollTop" property should be the same.
assert-window-property: {"pageYOffset": |y_offset|}
// We now check that opening the sidebar and clicking a link will close it.
// The behavior here on mobile is different than the behavior on desktop,
// but common sense dictates that if you have a list of files that fills the entire screen, and
// you click one of them, you probably want to actually see the file's contents, and not just
// make it the current selection.
set-window-size: (500, 700)
click: "#sidebar-button"
wait-for-css: ("#src-sidebar", {"visibility": "visible"})
assert-local-storage: {"rustdoc-source-sidebar-show": "true"}
click: ".sidebar a.selected"
go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
wait-for-css: ("#src-sidebar", {"visibility": "hidden"})
assert-local-storage: {"rustdoc-source-sidebar-show": "false"}
// Resize back to desktop size, to check that the sidebar doesn't spontaneously open.
set-window-size: (1000, 1000)
wait-for-css: ("#src-sidebar", {"visibility": "hidden"})
assert-local-storage: {"rustdoc-source-sidebar-show": "false"}
click: "#sidebar-button"
wait-for-css: ("#src-sidebar", {"visibility": "visible"})
assert-local-storage: {"rustdoc-source-sidebar-show": "true"}
|