// Checks that the interactions with the source code pages are working as expected.
include: "utils.goml"
go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
show-text: true
// Check that we can click on the line number.
click: "//a[@data-nosnippet and text()='4']" // This is the anchor for line 4.
// Ensure that the page URL was updated.
assert-document-property: ({"URL": "lib.rs.html#4"}, ENDS_WITH)
assert-attribute: ("//*[@id='4']", {"class": "line-highlighted"})
// Ensure that the default style, with the right border, isn't used.
assert-css: ("//*[@id='4']", {"border-right-width": "0px"})
reload:
assert-attribute: ("//*[@id='4']", {"class": "line-highlighted"})
assert-css: ("//*[@id='4']", {"border-right-width": "0px"})
// We now check that the good anchors are highlighted
go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html#4-6"
assert-attribute-false: ("//a[@data-nosnippet and text()='3']", {"class": "line-highlighted"})
assert-attribute: ("//a[@data-nosnippet and text()='4']", {"class": "line-highlighted"})
assert-attribute: ("//a[@data-nosnippet and text()='5']", {"class": "line-highlighted"})
assert-attribute: ("//a[@data-nosnippet and text()='6']", {"class": "line-highlighted"})
assert-attribute-false: ("//a[@data-nosnippet and text()='7']", {"class": "line-highlighted"})

define-function: (
    "check-colors",
    [theme, color, background_color, highlight_color, highlight_background_color],
    block {
        call-function: ("switch-theme", {"theme": |theme|})
        assert-css: (
            "a[data-nosnippet]:not(.line-highlighted)",
            {"color": |color|, "background-color": |background_color|},
            ALL,
        )
        assert-css: (
            "a[data-nosnippet].line-highlighted",
            {"color": |highlight_color|, "background-color": |highlight_background_color|},
            ALL,
        )
    },
)

call-function: ("check-colors", {
    "theme": "ayu",
    "color": "#5c6773",
    "background_color": "transparent",
    "highlight_color": "#708090",
    "highlight_background_color": "rgba(255, 236, 164, 0.06)",
})
call-function: ("check-colors", {
    "theme": "dark",
    "color": "#3b91e2",
    "background_color": "transparent",
    "highlight_color": "#3b91e2",
    "highlight_background_color": "#0a042f",
})
call-function: ("check-colors", {
    "theme": "light",
    "color": "#c67e2d",
    "background_color": "transparent",
    "highlight_color": "#c67e2d",
    "highlight_background_color": "#fdffd3",
})

// This is to ensure that the content is correctly align with the line numbers.
compare-elements-position-near: ("//*[@id='1']", ".rust > code > span", {"y": 2})
// Check the `href` property so that users can treat anchors as links.
assert-property: ("//a[@data-nosnippet and text()='1']", {
    "href": |DOC_PATH| + "/src/test_docs/lib.rs.html#1"
}, ENDS_WITH)
assert-property: ("//a[@data-nosnippet and text()='2']", {
    "href": |DOC_PATH| + "/src/test_docs/lib.rs.html#2"
}, ENDS_WITH)
assert-property: ("//a[@data-nosnippet and text()='3']", {
    "href": |DOC_PATH| + "/src/test_docs/lib.rs.html#3"
}, ENDS_WITH)
assert-property: ("//a[@data-nosnippet and text()='4']", {
    "href": |DOC_PATH| + "/src/test_docs/lib.rs.html#4"
}, ENDS_WITH)
assert-property: ("//a[@data-nosnippet and text()='5']", {
    "href": |DOC_PATH| + "/src/test_docs/lib.rs.html#5"
}, ENDS_WITH)
assert-property: ("//a[@data-nosnippet and text()='6']", {
    "href": |DOC_PATH| + "/src/test_docs/lib.rs.html#6"
}, ENDS_WITH)

// Assert that the line numbers text is aligned to the right.
assert-css: ("a[data-nosnippet]", {"text-align": "right"}, ALL)

// Now let's check that clicking on something else than the line number doesn't
// do anything (and certainly not add a `#NaN` to the URL!).
go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
// We use this assert-position to know where we will click.
assert-position: ("//*[@id='1']", {"x": 81, "y": 141})
// We click on the left of the "1" anchor but still in the "src-line-number" `<pre>`.
click: (135, 77)
assert-document-property: ({"URL": "/lib.rs.html"}, ENDS_WITH)

// Checking the source code sidebar.

// First we "open" it.
click: "#sidebar-button"
assert: ".src-sidebar-expanded"

// We check that the first entry of the sidebar is collapsed
assert-property: ("#src-sidebar details:first-of-type", {"open": "false"})
assert-text: ("#src-sidebar details:first-of-type > summary", "extend_css")
// We now click on it.
click: "#src-sidebar details:first-of-type > summary"
assert-property: ("#src-sidebar details:first-of-type", {"open": "true"})

// And now we collapse it again.
click: "#src-sidebar details:first-of-type > summary"
assert-property: ("#src-sidebar details:first-of-type", {"open": "false"})

// And open it again, since it'll be the reference we use to check positions.
click: "#src-sidebar details:first-of-type > summary"
assert-property: ("#src-sidebar details:first-of-type", {"open": "true"})

// Check the sidebar directory entries have a marker and spacing (desktop).
store-property: (
    "#src-sidebar > details:first-of-type.dir-entry[open] > .files > a",
    {"offsetHeight": link_height},
)
define-function: (
    "check-sidebar-dir-entry",
    [x, y],
    block {
        assert: "details:first-of-type.dir-entry[open] > summary::marker"
        assert-css: ("#src-sidebar > details:first-of-type.dir-entry", {"padding-left": "4px"})
        // This check ensures that the summary is only one line.
        assert-property: (
            "#src-sidebar > details:first-of-type.dir-entry[open] > summary",
            {"offsetHeight": |link_height|}
        )
        assert-position: (
            "#src-sidebar > details:first-of-type.dir-entry[open] > summary",
            {"x": |x|, "y": |y|}
        )
        assert-property: (
            "#src-sidebar > details:first-of-type.dir-entry[open] > .files > a",
            {"offsetHeight": |link_height|}
        )
        assert-position: (
            "#src-sidebar > details:first-of-type.dir-entry[open] > .files > a",
            // left margin
            {"x": |x| + 27, "y": |y| + |link_height|}
        )
    }
)
store-property: (".src-sidebar-title", {
    "offsetHeight": source_sidebar_title_height,
    "offsetTop": source_sidebar_title_y,
})
call-function: ("check-sidebar-dir-entry", {
    "x": 0,
    // margin = 7px
    "y": |source_sidebar_title_y| + |source_sidebar_title_height| + 7,
})

// Check the sidebar directory entries have a marker and spacing (tablet).
set-window-size: (700, 700)
store-property: (".src-sidebar-title", {
    "offsetHeight": source_sidebar_title_height,
    "offsetTop": source_sidebar_title_y,
})
call-function: ("check-sidebar-dir-entry", {
    "x": 0,
    // margin = 7px
    "y": |source_sidebar_title_y| + |source_sidebar_title_height| + 7,
})

// Check the sidebar directory entries have a marker and spacing (phone).
set-window-size: (450, 700)
store-property: (".src-sidebar-title", {
    "offsetHeight": source_sidebar_title_height,
    "offsetTop": source_sidebar_title_y,
})
call-function: ("check-sidebar-dir-entry", {
    "x": 0,
    // margin = 7px
    "y": |source_sidebar_title_y| + |source_sidebar_title_height| + 7,
})
