// The goal of this test is to ensure that the sidebar is working as expected in the source // code pages. goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" show-text: true // First, check the sidebar colors. define-function: ( "check-colors", (theme, color, background_color), block { local-storage: { "rustdoc-theme": |theme|, "rustdoc-use-system-theme": "false", } reload: // Checking results colors. assert-css: (".source .sidebar", { "color": |color|, "background-color": |background_color| }, ALL) }, ) call-function: ( "check-colors", { "theme": "ayu", "color": "rgb(197, 197, 197)", "background_color": "rgb(20, 25, 31)", } ) call-function: ( "check-colors", { "theme": "dark", "color": "rgb(221, 221, 221)", "background_color": "rgb(80, 80, 80)", } ) call-function: ( "check-colors", { "theme": "light", "color": "rgb(0, 0, 0)", "background_color": "rgb(245, 245, 245)", } ) // Next, desktop mode layout. size: (1100, 800) // We check that the sidebar isn't expanded and has the expected width. assert-css: ("nav.sidebar", {"width": "50px"}) // We now click on the button to expand the sidebar. click: (10, 10) // We wait for the sidebar to be expanded. wait-for-css: (".source-sidebar-expanded nav.sidebar", {"width": "300px"}) assert-css: (".source-sidebar-expanded nav.sidebar a", {"font-size": "14px"}) // We collapse the sidebar. click: (10, 10) // We ensure that the class has been removed. wait-for: "html:not(.expanded)" assert: "nav.sidebar" // Checking that only the path to the current file is "open". goto: "file://" + |DOC_PATH| + "/src/lib2/another_folder/sub_mod/mod.rs.html" // First we expand the sidebar again. click: (10, 10) // We wait for the sidebar to be expanded. wait-for-css: (".source-sidebar-expanded nav.sidebar", {"width": "300px"}) assert: "//*[@class='dir-entry' and @open]/*[text()='lib2']" assert: "//*[@class='dir-entry' and @open]/*[text()='another_folder']" assert: "//*[@class='dir-entry' and @open]/*[text()='sub_mod']" // Only "another_folder" should be "open" in "lib2". assert: "//*[@class='dir-entry' and not(@open)]/*[text()='another_mod']" // All other trees should be collapsed. assert-count: ("//*[@id='source-sidebar']/details[not(text()='lib2') and not(@open)]", 8) // We now switch to mobile mode. size: (600, 600) wait-for-css: (".source-sidebar-expanded nav.sidebar", {"left": "0px"}) // We collapse the sidebar. click: (10, 10) // We check that the sidebar has been moved off-screen. assert-css: ("nav.sidebar", {"left": "-1000px"}) // We ensure that the class has been removed. assert-false: ".source-sidebar-expanded" assert: "nav.sidebar" // Check that the topbar is not visible assert-false: ".mobile-topbar"