c3e29ea5e9
It doesn't look quite right, because the lines are too far apart, and it's not going to be announced by screenreaders as a menu button, since that's not what the symbol means. This adds a real tooltip and uses a better drawing of the icon.
173 lines
6.7 KiB
Plaintext
173 lines
6.7 KiB
Plaintext
// This test ensures that the elements in the sidebar are displayed correctly.
|
|
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-css: ("#sidebar-button", {"display": "none"})
|
|
|
|
// 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 {
|
|
set-local-storage: {"rustdoc-theme": |theme|, "rustdoc-use-system-theme": "false"}
|
|
reload:
|
|
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"]'
|
|
assert-window-property: {"pageYOffset": "2516"}
|
|
// 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": "2516"}
|
|
|
|
// 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"}
|