// 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, "2570")
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"}
