| // 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" | 
 |     } | 
 | ) |