| // This file contains code to be re-used by other tests. | |
| define-function: ( | |
| "click-settings-button", | |
| [], | |
| block { | |
| store-count: ("rustdoc-topbar", __topbar_count) | |
| store-value: (__topbar_display, "none") | |
| // The `rustdoc-topbar` element is created with JS when the window size is below a given | |
| // size, however if the window size gets bigger again, the element isn't deleted, just | |
| // hidden, so we need to check for both that it exists and is visible. | |
| if: (|__topbar_count| != 0, block { | |
| store-css: ("rustdoc-topbar", {"display": __topbar_display}) | |
| }) | |
| // Open the settings menu. | |
| if: (|__topbar_display| != "none", block { | |
| // In mobile mode, this is instead the "topbar" the settings button is located into. | |
| click: "rustdoc-topbar .settings-menu" | |
| }) | |
| else: block { | |
| // We're not in mobile mode so clicking on the "normal" sidebar. | |
| click: "rustdoc-toolbar .settings-menu" | |
| } | |
| } | |
| ) | |
| define-function: ( | |
| "open-settings-menu", | |
| [], | |
| block { | |
| store-count: ("#settings", nb_settings_menu) | |
| if: (|nb_settings_menu| != 0, block { | |
| store-css: ("#settings", {"display": settings_display}) | |
| }) | |
| else: block { | |
| store-value: (settings_display, "none") | |
| } | |
| if: (|settings_display| != "block", block { | |
| call-function: ("click-settings-button", {}) | |
| // Wait for the popover to appear... | |
| wait-for-css: ("#settings", {"display": "block"}) | |
| }) | |
| } | |
| ) | |
| define-function: ( | |
| "close-settings-menu", | |
| [], | |
| block { | |
| store-count: ("#settings", nb_settings_menu) | |
| if: (|nb_settings_menu| != 0, block { | |
| store-css: ("#settings", {"display": settings_display}) | |
| }) | |
| else: block { | |
| store-value: (settings_display, "block") | |
| } | |
| if: (|settings_display| == "block", block { | |
| call-function: ("click-settings-button", {}) | |
| // Wait for the popover to disappear... | |
| wait-for-css-false: ("#settings", {"display": "block"}) | |
| }) | |
| } | |
| ) | |
| define-function: ( | |
| "switch-theme", | |
| [theme], | |
| block { | |
| // Set the theme. | |
| call-function: ("open-settings-menu", {}) | |
| // Change the setting. | |
| click: "#theme-"+ |theme| | |
| call-function: ("close-settings-menu", {}) | |
| // Ensure that the local storage was correctly updated. | |
| assert-local-storage: {"rustdoc-theme": |theme|} | |
| }, | |
| ) | |
| define-function: ( | |
| "open-search", | |
| [], | |
| block { | |
| store-count: (".search-input", __search_input_count) | |
| if: (|__search_input_count| != 0, block { | |
| store-css: ("#alternative-display", {"display": __search_input_display}) | |
| }) | |
| else: block { | |
| // Block requests with doubled `//`. | |
| // Amazon S3 doesn't support them, but other web hosts do, | |
| // and so do file:/// URLs, which means we need to block | |
| // it here if we want to avoid breaking the main docs site. | |
| // https://github.com/rust-lang/rust/issues/145646 | |
| block-network-request: "file://*//*" | |
| store-value: (__search_input_display, "none") | |
| } | |
| if: (|__search_input_display| == "none", block { | |
| // Open search | |
| click: "#search-button" | |
| wait-for: ".search-input" | |
| }) | |
| } | |
| ) | |
| define-function: ( | |
| "perform-search", | |
| [query], | |
| block { | |
| call-function: ("open-search", {}) | |
| // We empty the search input in case it wasn't empty. | |
| set-property: (".search-input", {"value": ""}) | |
| focus: ".search-input" | |
| // We write the actual query. | |
| write-into: (".search-input", |query|) | |
| press-key: 'Enter' | |
| // wait for the search to start | |
| wait-for: "#search-tabs" | |
| // then wait for it to finish | |
| wait-for-false: "#search-tabs .count.loading" | |
| } | |
| ) | |
| define-function: ( | |
| "switch-line-numbers-setting", | |
| [expected_status], | |
| block { | |
| call-function: ("open-settings-menu", {}) | |
| // We change the line numbers setting. | |
| click: "#line-numbers" | |
| call-function: ("close-settings-menu", {}) | |
| assert-local-storage: {"rustdoc-line-numbers": |expected_status|} | |
| } | |
| ) |