|  | // This file contains code to be re-used by other tests. | 
|  | define-function: ( | 
|  | "switch-theme", | 
|  | [theme], | 
|  | block { | 
|  | // Set the theme. | 
|  | // Open the settings menu. | 
|  | click: "rustdoc-toolbar .settings-menu" | 
|  | // Wait for the popover to appear... | 
|  | wait-for: "#settings" | 
|  | // Change the setting. | 
|  | click: "#theme-"+ |theme| | 
|  | // Close the popover. | 
|  | click: "rustdoc-toolbar .settings-menu" | 
|  | // Ensure that the local storage was correctly updated. | 
|  | assert-local-storage: {"rustdoc-theme": |theme|} | 
|  | }, | 
|  | ) | 
|  |  | 
|  | define-function: ( | 
|  | "switch-theme-mobile", | 
|  | [theme], | 
|  | block { | 
|  | // Set the theme. | 
|  | // Open the settings menu. | 
|  | click: "rustdoc-topbar .settings-menu" | 
|  | // Wait for the popover to appear... | 
|  | wait-for: "#settings" | 
|  | // Change the setting. | 
|  | click: "#theme-"+ |theme| | 
|  | // Close the popover. | 
|  | click: "rustdoc-topbar .settings-menu" | 
|  | // Ensure that the local storage was correctly updated. | 
|  | assert-local-storage: {"rustdoc-theme": |theme|} | 
|  | }, | 
|  | ) | 
|  |  | 
|  | define-function: ( | 
|  | "perform-search", | 
|  | [query], | 
|  | 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://*//*" | 
|  | // Perform search | 
|  | click: "#search-button" | 
|  | wait-for: ".search-input" | 
|  | 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" | 
|  | } | 
|  | ) |