// Checking the colors of the search tab headers. go-to: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html?search=foo" show-text: true define-function: ( "check-colors", (theme, background, background_selected, background_hover, border_bottom, border_bottom_selected, border_bottom_hover, border_top, border_top_selected, border_top_hover), block { // Setting the theme. set-local-storage: {"rustdoc-theme": |theme|, "rustdoc-use-system-theme": "false"} reload: // These two commands are used to be sure the search will be run. focus: ".search-input" press-key: "Enter" wait-for: "#search-tabs" assert-css: ("#search-tabs > button:not(.selected)", { "background-color": |background|, "border-bottom": |border_bottom|, "border-top": |border_top|, }) assert-css: ("#search-tabs > button.selected", { "background-color": |background_selected|, "border-bottom": |border_bottom_selected|, "border-top": |border_top_selected|, }) move-cursor-to: "#search-tabs > button:not(.selected)" assert-css: ("#search-tabs > button:not(.selected):hover", { "background-color": |background_hover|, "border-bottom": |border_bottom_hover|, "border-top": |border_top_hover|, }) // To prevent disrupting next run of this function. move-cursor-to: ".search-input" }, ) call-function: ("check-colors", { "theme": "ayu", "background": "transparent", "background_selected": "#141920", "background_hover": "transparent", "border_bottom": "0px none #c5c5c5", "border_bottom_selected": "1px solid #ffb44c", "border_bottom_hover": "1px solid rgba(242, 151, 24, 0.3)", "border_top": "0px none #c5c5c5", "border_top_selected": "0px none #c5c5c5", "border_top_hover": "0px none #c5c5c5", }) call-function: ("check-colors", { "theme": "dark", "background": "#252525", "background_selected": "#353535", "background_hover": "#353535", "border_bottom": "0px none #ddd", "border_bottom_selected": "0px none #ddd", "border_bottom_hover": "0px none #ddd", "border_top": "2px solid #252525", "border_top_selected": "2px solid #0089ff", "border_top_hover": "2px solid #0089ff", }) call-function: ("check-colors", { "theme": "light", "background": "#e6e6e6", "background_selected": "#fff", "background_hover": "#fff", "border_bottom": "0px none #000", "border_bottom_selected": "0px none #000", "border_bottom_hover": "0px none #000", "border_top": "2px solid #e6e6e6", "border_top_selected": "2px solid #0089ff", "border_top_hover": "2px solid #0089ff", }) // set size wide enough that the text is in a single row set-window-size: (851, 600) // Check the size and count in tabs assert-text: ("#search-tabs > button:nth-child(1) > .count", " (25) ") assert-text: ("#search-tabs > button:nth-child(2) > .count", " (5)  ") assert-text: ("#search-tabs > button:nth-child(3) > .count", " (0)  ") store-property: ("#search-tabs > button:nth-child(1)", {"offsetWidth": buttonWidth}) assert-property: ("#search-tabs > button:nth-child(2)", {"offsetWidth": |buttonWidth|}) assert-property: ("#search-tabs > button:nth-child(3)", {"offsetWidth": |buttonWidth|}) store-property: ("#search-tabs > button:nth-child(1) > .count", {"offsetWidth": countWidth}) assert-property: ("#search-tabs > button:nth-child(2) > .count", {"offsetWidth": |countWidth|}) assert-property: ("#search-tabs > button:nth-child(3) > .count", {"offsetWidth": |countWidth|}) // Check that counts are in a row with each other compare-elements-position: ( "#search-tabs > button:nth-child(1) > .count", "#search-tabs > button:nth-child(2) > .count", ("y") ) compare-elements-position: ( "#search-tabs > button:nth-child(2) > .count", "#search-tabs > button:nth-child(3) > .count", ("y") ) // Check that counts are beside the titles and haven't wrapped compare-elements-position-near: ( "#search-tabs > button:nth-child(1)", "#search-tabs > button:nth-child(1) > .count", {"y": 8} ) compare-elements-position-near: ( "#search-tabs > button:nth-child(2)", "#search-tabs > button:nth-child(2) > .count", {"y": 8} ) compare-elements-position-near: ( "#search-tabs > button:nth-child(2)", "#search-tabs > button:nth-child(2) > .count", {"y": 8} ) // Set size narrow enough that they wrap. // When I tested it, it wrapped at 811px, but I added some fudge factor to ensure it // doesn't prematurely wrap with slightly different font kerning or whatever, with a // @media query set-window-size: (850, 600) // all counts and buttons still have same size store-property: ("#search-tabs > button:nth-child(1)", {"offsetWidth": buttonWidth}) assert-property: ("#search-tabs > button:nth-child(2)", {"offsetWidth": |buttonWidth|}) assert-property: ("#search-tabs > button:nth-child(3)", {"offsetWidth": |buttonWidth|}) store-property: ("#search-tabs > button:nth-child(1) > .count", {"offsetWidth": countWidth}) assert-property: ("#search-tabs > button:nth-child(2) > .count", {"offsetWidth": |countWidth|}) assert-property: ("#search-tabs > button:nth-child(3) > .count", {"offsetWidth": |countWidth|}) // Check that counts are still in a row with each other compare-elements-position: ( "#search-tabs > button:nth-child(1) > .count", "#search-tabs > button:nth-child(2) > .count", ("y") ) compare-elements-position: ( "#search-tabs > button:nth-child(2) > .count", "#search-tabs > button:nth-child(3) > .count", ("y") ) // Check that counts are NOT beside the titles; now they have wrapped compare-elements-position-near-false: ( "#search-tabs > button:nth-child(1)", "#search-tabs > button:nth-child(1) > .count", {"y": 8} ) compare-elements-position-near-false: ( "#search-tabs > button:nth-child(2)", "#search-tabs > button:nth-child(2) > .count", {"y": 8} ) compare-elements-position-near-false: ( "#search-tabs > button:nth-child(2)", "#search-tabs > button:nth-child(2) > .count", {"y": 8} )