about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorMichael Howell <michael@notriddle.com>2024-11-22 12:58:20 -0700
committerMichael Howell <michael@notriddle.com>2025-08-15 10:26:03 -0700
commit8511e40e7294e1efcc64b81d43969b6bf0f14c2d (patch)
tree13e479663d548c96addeac600e985476e258eae7 /tests
parentc018ae5389c49cc4bcb8343d80dd8e7323325410 (diff)
downloadrust-8511e40e7294e1efcc64b81d43969b6bf0f14c2d.tar.gz
rust-8511e40e7294e1efcc64b81d43969b6bf0f14c2d.zip
rustdoc-search: search backend with partitioned suffix tree
Diffstat (limited to 'tests')
-rw-r--r--tests/run-make/emit-shared-files/rmake.rs2
-rw-r--r--tests/run-make/rustdoc-determinism/rmake.rs4
-rw-r--r--tests/rustdoc-gui/code-example-buttons.goml8
-rw-r--r--tests/rustdoc-gui/copy-code.goml2
-rw-r--r--tests/rustdoc-gui/cursor.goml7
-rw-r--r--tests/rustdoc-gui/docblock-code-block-line-number.goml8
-rw-r--r--tests/rustdoc-gui/escape-key.goml11
-rw-r--r--tests/rustdoc-gui/font-serif-change.goml4
-rw-r--r--tests/rustdoc-gui/globals.goml5
-rw-r--r--tests/rustdoc-gui/help-page.goml18
-rw-r--r--tests/rustdoc-gui/hide-mobile-topbar.goml9
-rw-r--r--tests/rustdoc-gui/huge-logo.goml5
-rw-r--r--tests/rustdoc-gui/item-info.goml2
-rw-r--r--tests/rustdoc-gui/mobile-crate-name.goml14
-rw-r--r--tests/rustdoc-gui/mobile.goml2
-rw-r--r--tests/rustdoc-gui/notable-trait.goml26
-rw-r--r--tests/rustdoc-gui/pocket-menu.goml67
-rw-r--r--tests/rustdoc-gui/scrape-examples-color.goml2
-rw-r--r--tests/rustdoc-gui/scrape-examples-layout.goml8
-rw-r--r--tests/rustdoc-gui/scrape-examples-toggle.goml2
-rw-r--r--tests/rustdoc-gui/search-about-this-result.goml2
-rw-r--r--tests/rustdoc-gui/search-corrections.goml75
-rw-r--r--tests/rustdoc-gui/search-error.goml1
-rw-r--r--tests/rustdoc-gui/search-filter.goml16
-rw-r--r--tests/rustdoc-gui/search-form-elements.goml19
-rw-r--r--tests/rustdoc-gui/search-input-mobile.goml13
-rw-r--r--tests/rustdoc-gui/search-keyboard.goml21
-rw-r--r--tests/rustdoc-gui/search-reexport.goml11
-rw-r--r--tests/rustdoc-gui/search-result-color.goml7
-rw-r--r--tests/rustdoc-gui/search-result-description.goml1
-rw-r--r--tests/rustdoc-gui/search-result-display.goml9
-rw-r--r--tests/rustdoc-gui/search-result-go-to-first.goml3
-rw-r--r--tests/rustdoc-gui/search-result-impl-disambiguation.goml15
-rw-r--r--tests/rustdoc-gui/search-result-keyword.goml7
-rw-r--r--tests/rustdoc-gui/search-tab-change-title-fn-sig.goml32
-rw-r--r--tests/rustdoc-gui/search-tab.goml3
-rw-r--r--tests/rustdoc-gui/search-title.goml6
-rw-r--r--tests/rustdoc-gui/setting-auto-hide-content-large-items.goml2
-rw-r--r--tests/rustdoc-gui/setting-auto-hide-item-methods-docs.goml2
-rw-r--r--tests/rustdoc-gui/setting-auto-hide-trait-implementations.goml2
-rw-r--r--tests/rustdoc-gui/setting-go-to-only-result.goml4
-rw-r--r--tests/rustdoc-gui/settings-button.goml2
-rw-r--r--tests/rustdoc-gui/settings.goml42
-rw-r--r--tests/rustdoc-gui/shortcuts.goml4
-rw-r--r--tests/rustdoc-gui/sidebar-mobile.goml8
-rw-r--r--tests/rustdoc-gui/sidebar-resize-close-popover.goml4
-rw-r--r--tests/rustdoc-gui/sidebar-resize-setting.goml24
-rw-r--r--tests/rustdoc-gui/sidebar-source-code-display.goml2
-rw-r--r--tests/rustdoc-gui/sidebar-source-code.goml2
-rw-r--r--tests/rustdoc-gui/sidebar.goml6
-rw-r--r--tests/rustdoc-gui/source-anchor-scroll.goml8
-rw-r--r--tests/rustdoc-gui/source-code-page.goml32
-rw-r--r--tests/rustdoc-gui/source-code-wrapping.goml4
-rw-r--r--tests/rustdoc-gui/theme-change.goml4
-rw-r--r--tests/rustdoc-gui/theme-defaults.goml4
-rw-r--r--tests/rustdoc-gui/toggle-click-deadspace.goml2
-rw-r--r--tests/rustdoc-gui/toggle-docs-mobile.goml12
-rw-r--r--tests/rustdoc-gui/toggle-docs.goml2
-rw-r--r--tests/rustdoc-gui/type-declation-overflow.goml22
-rw-r--r--tests/rustdoc-gui/utils.goml37
-rw-r--r--tests/rustdoc-js-std/alias-1.js5
-rw-r--r--tests/rustdoc-js-std/alias-2.js4
-rw-r--r--tests/rustdoc-js-std/basic.js2
-rw-r--r--tests/rustdoc-js-std/parser-bindings.js28
-rw-r--r--tests/rustdoc-js-std/parser-errors.js18
-rw-r--r--tests/rustdoc-js-std/parser-filter.js22
-rw-r--r--tests/rustdoc-js-std/parser-generics.js12
-rw-r--r--tests/rustdoc-js-std/parser-hof.js106
-rw-r--r--tests/rustdoc-js-std/parser-ident.js14
-rw-r--r--tests/rustdoc-js-std/parser-literal.js2
-rw-r--r--tests/rustdoc-js-std/parser-paths.js18
-rw-r--r--tests/rustdoc-js-std/parser-quote.js4
-rw-r--r--tests/rustdoc-js-std/parser-reference.js84
-rw-r--r--tests/rustdoc-js-std/parser-returned.js20
-rw-r--r--tests/rustdoc-js-std/parser-separators.js20
-rw-r--r--tests/rustdoc-js-std/parser-slice-array.js36
-rw-r--r--tests/rustdoc-js-std/parser-tuple.js38
-rw-r--r--tests/rustdoc-js-std/path-end-empty.js3
-rw-r--r--tests/rustdoc-js-std/path-maxeditdistance.js6
-rw-r--r--tests/rustdoc-js-std/return-specific-literal.js2
-rw-r--r--tests/rustdoc-js-std/return-specific.js2
-rw-r--r--tests/rustdoc-js/doc-alias.js13
-rw-r--r--tests/rustdoc-js/generics-trait.js21
-rw-r--r--tests/rustdoc-js/non-english-identifier.js8
-rw-r--r--tests/rustdoc-js/ordering.js9
-rw-r--r--tests/rustdoc-js/ordering.rs3
-rw-r--r--tests/rustdoc-js/type-parameters.js6
-rw-r--r--tests/rustdoc/cross-crate-info/cargo-transitive-no-index/s.rs6
-rw-r--r--tests/rustdoc/cross-crate-info/cargo-transitive/s.rs6
-rw-r--r--tests/rustdoc/cross-crate-info/cargo-two-no-index/e.rs4
-rw-r--r--tests/rustdoc/cross-crate-info/cargo-two/e.rs4
-rw-r--r--tests/rustdoc/cross-crate-info/index-on-last/e.rs4
-rw-r--r--tests/rustdoc/cross-crate-info/kitchen-sink/i.rs8
-rw-r--r--tests/rustdoc/cross-crate-info/single-crate-baseline/q.rs2
-rw-r--r--tests/rustdoc/cross-crate-info/single-crate-no-index/q.rs2
-rw-r--r--tests/rustdoc/cross-crate-info/write-docs-somewhere-else/e.rs4
-rw-r--r--tests/rustdoc/masked.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs6
-rw-r--r--tests/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs8
-rw-r--r--tests/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs6
-rw-r--r--tests/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs6
-rw-r--r--tests/rustdoc/merge-cross-crate-info/overwrite/sierra.rs6
-rw-r--r--tests/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/single-crate-write-anyway/quebec.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/transitive-finalize/sierra.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs6
-rw-r--r--tests/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs6
-rw-r--r--tests/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs2
-rw-r--r--tests/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs4
-rw-r--r--tests/rustdoc/no-unit-struct-field.rs9
-rw-r--r--tests/rustdoc/primitive/search-index-primitive-inherent-method-23511.rs2
-rw-r--r--tests/rustdoc/search-index-summaries.rs2
-rw-r--r--tests/rustdoc/search-index.rs4
117 files changed, 645 insertions, 662 deletions
diff --git a/tests/run-make/emit-shared-files/rmake.rs b/tests/run-make/emit-shared-files/rmake.rs
index f88fe69aa9c..911ceb3adca 100644
--- a/tests/run-make/emit-shared-files/rmake.rs
+++ b/tests/run-make/emit-shared-files/rmake.rs
@@ -19,7 +19,7 @@ fn main() {
         .args(&["--extend-css", "z.css"])
         .input("x.rs")
         .run();
-    assert!(path("invocation-only/search-index-xxx.js").exists());
+    assert!(path("invocation-only/search.index/root-xxx.js").exists());
     assert!(path("invocation-only/crates-xxx.js").exists());
     assert!(path("invocation-only/settings.html").exists());
     assert!(path("invocation-only/x/all.html").exists());
diff --git a/tests/run-make/rustdoc-determinism/rmake.rs b/tests/run-make/rustdoc-determinism/rmake.rs
index 921baef4a97..5705dff6858 100644
--- a/tests/run-make/rustdoc-determinism/rmake.rs
+++ b/tests/run-make/rustdoc-determinism/rmake.rs
@@ -15,7 +15,7 @@ fn main() {
     rustdoc().input("foo.rs").out_dir(&bar_first).run();
 
     diff()
-        .expected_file(foo_first.join("search-index.js"))
-        .actual_file(bar_first.join("search-index.js"))
+        .expected_file(foo_first.join("search.index/root.js"))
+        .actual_file(bar_first.join("search.index/root.js"))
         .run();
 }
diff --git a/tests/rustdoc-gui/code-example-buttons.goml b/tests/rustdoc-gui/code-example-buttons.goml
index b96f6ddcc37..1429f978a28 100644
--- a/tests/rustdoc-gui/code-example-buttons.goml
+++ b/tests/rustdoc-gui/code-example-buttons.goml
@@ -5,25 +5,25 @@ include: "utils.goml"
 // First we check we "hover".
 move-cursor-to: ".example-wrap"
 assert-css: (".example-wrap .copy-button", { "visibility": "visible" })
-move-cursor-to: ".search-input"
+move-cursor-to: "#search-button"
 assert-css: (".example-wrap .copy-button", { "visibility": "hidden" })
 
 // Now we check the click.
 assert-count: (".example-wrap:not(:hover) .button-holder.keep-visible", 0)
 click: ".example-wrap"
-move-cursor-to: ".search-input"
+move-cursor-to: "#search-button"
 // It should have a new class and be visible.
 wait-for-count: (".example-wrap:not(:hover) .button-holder.keep-visible", 1)
 wait-for-css: (".example-wrap:not(:hover) .button-holder.keep-visible", { "visibility": "visible" })
 // Clicking again will remove the class.
 click: ".example-wrap"
-move-cursor-to: ".search-input"
+move-cursor-to: "rustdoc-toolbar #search-button"
 assert-count: (".example-wrap:not(:hover) .button-holder.keep-visible", 0)
 assert-css: (".example-wrap .copy-button", { "visibility": "hidden" })
 
 // Clicking on the "copy code" button shouldn't make the buttons stick.
 click: ".example-wrap .copy-button"
-move-cursor-to: ".search-input"
+move-cursor-to: "#search-button"
 assert-count: (".example-wrap:not(:hover) .button-holder.keep-visible", 0)
 assert-css: (".example-wrap .copy-button", { "visibility": "hidden" })
 // Since we clicked on the copy button, the clipboard content should have been updated.
diff --git a/tests/rustdoc-gui/copy-code.goml b/tests/rustdoc-gui/copy-code.goml
index 9cc717bc67a..a6fb816c4bd 100644
--- a/tests/rustdoc-gui/copy-code.goml
+++ b/tests/rustdoc-gui/copy-code.goml
@@ -12,7 +12,7 @@ define-function: (
         assert-count: (".example-wrap .copy-button", 1)
         // We now ensure it's only displayed when the example is hovered.
         assert-css: (".example-wrap .copy-button", { "visibility": "visible" })
-        move-cursor-to: ".search-input"
+        move-cursor-to: "rustdoc-toolbar #search-button"
         assert-css: (".example-wrap .copy-button", { "visibility": "hidden" })
         // Checking that the copy button has the same size as the "copy path" button.
         compare-elements-size: (
diff --git a/tests/rustdoc-gui/cursor.goml b/tests/rustdoc-gui/cursor.goml
index 9412987fc32..0d78e192606 100644
--- a/tests/rustdoc-gui/cursor.goml
+++ b/tests/rustdoc-gui/cursor.goml
@@ -1,4 +1,5 @@
 // This test ensures that several clickable items actually have the pointer cursor.
+include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/lib2/struct.Foo.html"
 
 // the `[+]/[-]` button
@@ -8,11 +9,7 @@ assert-css: ("#toggle-all-docs", {"cursor": "pointer"})
 assert-css: ("#copy-path", {"cursor": "pointer"})
 
 // the search tabs
-write-into: (".search-input", "Foo")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "Foo"})
 assert-css: ("#search-tabs > button", {"cursor": "pointer"})
 
 // mobile sidebar toggle button
diff --git a/tests/rustdoc-gui/docblock-code-block-line-number.goml b/tests/rustdoc-gui/docblock-code-block-line-number.goml
index 0df9cc2a659..a182124aced 100644
--- a/tests/rustdoc-gui/docblock-code-block-line-number.goml
+++ b/tests/rustdoc-gui/docblock-code-block-line-number.goml
@@ -69,7 +69,7 @@ call-function: ("check-colors", {
 // and make sure it goes away.
 
 // First, open the settings menu.
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 assert-css: ("#settings", {"display": "block"})
 
@@ -121,7 +121,7 @@ call-function: ("check-padding", {
 define-function: ("check-line-numbers-existence", [], block {
     assert-local-storage: {"rustdoc-line-numbers": "true" }
     assert-false: ".example-line-numbers"
-    click: "#settings-menu"
+    click: "rustdoc-toolbar .settings-menu"
     wait-for: "#settings"
 
     // Then, click the toggle button.
@@ -137,7 +137,7 @@ define-function: ("check-line-numbers-existence", [], block {
     // Line numbers should still be there.
     assert-css: ("[data-nosnippet]", { "display": "block"})
     // Closing settings menu.
-    click: "#settings-menu"
+    click: "rustdoc-toolbar .settings-menu"
     wait-for-css: ("#settings", {"display": "none"})
 })
 
@@ -168,7 +168,7 @@ assert: ".example-wrap > pre.rust"
 assert-count: (".example-wrap", 2)
 assert-count: (".example-wrap.digits-1", 2)
 
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 
 // Then, click the toggle button.
diff --git a/tests/rustdoc-gui/escape-key.goml b/tests/rustdoc-gui/escape-key.goml
index ff8557b9b81..ab5615ebcd8 100644
--- a/tests/rustdoc-gui/escape-key.goml
+++ b/tests/rustdoc-gui/escape-key.goml
@@ -1,13 +1,10 @@
 // This test ensures that the "Escape" shortcut is handled correctly based on the
 // current content displayed.
+include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 // First, we check that the search results are hidden when the Escape key is pressed.
-write-into: (".search-input", "test")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-wait-for: "#search h1" // The search element is empty before the first search
+call-function: ("perform-search", {"query": "test"})
 // Check that the currently displayed element is search.
-wait-for: "#alternative-display #search"
 assert-attribute: ("#main-content", {"class": "content hidden"})
 assert-document-property: ({"URL": "index.html?search=test"}, ENDS_WITH)
 press-key: "Escape"
@@ -17,8 +14,8 @@ assert-false: "#alternative-display #search"
 assert-attribute: ("#main-content", {"class": "content"})
 assert-document-property: ({"URL": "index.html"}, [ENDS_WITH])
 
-// Check that focusing the search input brings back the search results
-focus: ".search-input"
+// Check that clicking the search button brings back the search results
+click: "#search-button"
 wait-for: "#alternative-display #search"
 assert-attribute: ("#main-content", {"class": "content hidden"})
 assert-document-property: ({"URL": "index.html?search=test"}, ENDS_WITH)
diff --git a/tests/rustdoc-gui/font-serif-change.goml b/tests/rustdoc-gui/font-serif-change.goml
index b14d5ae96f9..1e9f21c3541 100644
--- a/tests/rustdoc-gui/font-serif-change.goml
+++ b/tests/rustdoc-gui/font-serif-change.goml
@@ -8,7 +8,7 @@ assert-css: ("body", {"font-family": |serif_font|})
 assert-css: ("p code", {"font-family": |serif_code_font|})
 
 // We now switch to the sans serif font
-click: "#settings-menu"
+click: "main .settings-menu"
 wait-for: "#sans-serif-fonts"
 click: "#sans-serif-fonts"
 
@@ -23,7 +23,7 @@ assert-css: ("body", {"font-family": |font|})
 assert-css: ("p code", {"font-family": |code_font|})
 
 // We switch back to the serif font
-click: "#settings-menu"
+click: "main .settings-menu"
 wait-for: "#sans-serif-fonts"
 click: "#sans-serif-fonts"
 
diff --git a/tests/rustdoc-gui/globals.goml b/tests/rustdoc-gui/globals.goml
index 7a0e2b9eb74..89f57add816 100644
--- a/tests/rustdoc-gui/globals.goml
+++ b/tests/rustdoc-gui/globals.goml
@@ -1,6 +1,7 @@
 // Make sure search stores its data in `window`
 // It needs to use a global to avoid racing on search-index.js and search.js
 // https://github.com/rust-lang/rust/pull/118961
+include: "utils.goml"
 
 // URL query
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=sa'%3Bda'%3Bds"
@@ -9,9 +10,7 @@ assert-window-property-false: {"searchIndex": null}
 
 // Form input
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "Foo")
-press-key: 'Enter'
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "Foo"})
 assert-window-property-false: {"searchIndex": null}
 
 // source sidebar
diff --git a/tests/rustdoc-gui/help-page.goml b/tests/rustdoc-gui/help-page.goml
index 6d6e353ae36..34b40814027 100644
--- a/tests/rustdoc-gui/help-page.goml
+++ b/tests/rustdoc-gui/help-page.goml
@@ -6,12 +6,12 @@ assert-css: ("#help", {"display": "block"})
 assert-css: ("#help dd", {"font-size": "16px"})
 assert-false: "#help-button > a"
 assert-css: ("#help", {"display": "block"})
-compare-elements-property: (".sub", "#help", ["offsetWidth"])
-compare-elements-position: (".sub", "#help", ["x"])
+compare-elements-property: (".main-heading", "#help", ["offsetWidth"])
+compare-elements-position: (".main-heading", "#help", ["x"])
 set-window-size: (500, 1000) // Try mobile next.
 assert-css: ("#help", {"display": "block"})
-compare-elements-property: (".sub", "#help", ["offsetWidth"])
-compare-elements-position: (".sub", "#help", ["x"])
+compare-elements-property: (".main-heading", "#help", ["offsetWidth"])
+compare-elements-position: (".main-heading", "#help", ["x"])
 
 // Checking the color of the elements of the help menu.
 show-text: true
@@ -54,19 +54,17 @@ go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=a"
 wait-for: "#search-tabs" // Waiting for the search.js to load.
 set-window-size: (1000, 1000) // Only supported on desktop.
 assert-false: "#help"
-click: "#help-button > a"
+click: "rustdoc-toolbar .help-menu > a"
 assert-css: ("#help", {"display": "block"})
 assert-css: ("#help dd", {"font-size": "16px"})
-click: "#help-button > a"
-assert-css: ("#help", {"display": "none"})
-compare-elements-property-false: (".sub", "#help", ["offsetWidth"])
-compare-elements-position-false: (".sub", "#help", ["x"])
+click: "rustdoc-toolbar .help-menu > a"
+assert-false: "#help"
 
 // This test ensures that the "the rustdoc book" anchor link within the help popover works.
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=a"
 wait-for: "#search-tabs" // Waiting for the search.js to load.
 set-window-size: (1000, 1000) // Popover only appears when the screen width is >700px.
 assert-false: "#help"
-click: "#help-button > a"
+click: "rustdoc-toolbar .help-menu > a"
 click: "//*[@id='help']//a[text()='the rustdoc book']"
 wait-for-document-property: ({"URL": "https://doc.rust-lang.org/"}, STARTS_WITH)
diff --git a/tests/rustdoc-gui/hide-mobile-topbar.goml b/tests/rustdoc-gui/hide-mobile-topbar.goml
index 46eb8acfe8c..1e46d235827 100644
--- a/tests/rustdoc-gui/hide-mobile-topbar.goml
+++ b/tests/rustdoc-gui/hide-mobile-topbar.goml
@@ -1,20 +1,19 @@
 // Checks sidebar resizing stays synced with the setting
-go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
+go-to: "file://" + |DOC_PATH| + "/settings.html"
 set-window-size: (400, 600)
 
 // Verify that the "hide" option is unchecked
-click: "#settings-menu"
 wait-for: "#settings"
 assert-css: ("#settings", {"display": "block"})
 assert-property: ("#hide-sidebar", {"checked": "false"})
-assert-css: (".mobile-topbar", {"display": "flex"})
+assert-css: ("rustdoc-topbar", {"display": "flex"})
 
 // Toggle it
 click: "#hide-sidebar"
 assert-property: ("#hide-sidebar", {"checked": "true"})
-assert-css: (".mobile-topbar", {"display": "none"})
+assert-css: ("rustdoc-topbar", {"display": "none"})
 
 // Toggle it again
 click: "#hide-sidebar"
 assert-property: ("#hide-sidebar", {"checked": "false"})
-assert-css: (".mobile-topbar", {"display": "flex"})
+assert-css: ("rustdoc-topbar", {"display": "flex"})
diff --git a/tests/rustdoc-gui/huge-logo.goml b/tests/rustdoc-gui/huge-logo.goml
index d207ab5bb37..6ad6948ef2a 100644
--- a/tests/rustdoc-gui/huge-logo.goml
+++ b/tests/rustdoc-gui/huge-logo.goml
@@ -8,8 +8,3 @@ assert-property: (".sidebar-crate .logo-container", {"offsetWidth": "96", "offse
 // offsetWidth = width of sidebar, offsetHeight = height + top padding
 assert-property: (".sidebar-crate .logo-container img", {"offsetWidth": "48", "offsetHeight": 64})
 assert-css: (".sidebar-crate .logo-container img", {"border-top-width": "16px", "margin-top": "-16px"})
-
-set-window-size: (400, 600)
-// offset = size + margin
-assert-property: (".mobile-topbar .logo-container", {"offsetWidth": "55", "offsetHeight": 45})
-assert-property: (".mobile-topbar .logo-container img", {"offsetWidth": "35", "offsetHeight": 35})
diff --git a/tests/rustdoc-gui/item-info.goml b/tests/rustdoc-gui/item-info.goml
index 647a2fd290d..11388c79e0b 100644
--- a/tests/rustdoc-gui/item-info.goml
+++ b/tests/rustdoc-gui/item-info.goml
@@ -20,7 +20,7 @@ store-position: (
     {"x": second_line_x, "y": second_line_y},
 )
 assert: |first_line_x| != |second_line_x| && |first_line_x| == 521 && |second_line_x| == 277
-assert: |first_line_y| != |second_line_y| && |first_line_y| == 718 && |second_line_y| == 741
+assert: |first_line_y| != |second_line_y| && |first_line_y| == 676 && |second_line_y| == 699
 
 // Now we ensure that they're not rendered on the same line.
 set-window-size: (1100, 800)
diff --git a/tests/rustdoc-gui/mobile-crate-name.goml b/tests/rustdoc-gui/mobile-crate-name.goml
index a0c96eec8a5..524c1d36a8a 100644
--- a/tests/rustdoc-gui/mobile-crate-name.goml
+++ b/tests/rustdoc-gui/mobile-crate-name.goml
@@ -5,18 +5,18 @@ go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 // First we change the title to make it big.
 set-window-size: (350, 800)
 // We ensure that the "format" of the title is the same as the one we'll use.
-assert-text: (".mobile-topbar .location a", "test_docs")
+assert-text: ("rustdoc-topbar h2 a", "Crate test_docs")
 // We store the height we know is correct.
-store-property: (".mobile-topbar .location", {"offsetHeight": height})
+store-property: ("rustdoc-topbar h2", {"offsetHeight": height})
 // We change the crate name to something longer.
-set-text: (".mobile-topbar .location a", "cargo_packager_resource_resolver")
+set-text: ("rustdoc-topbar h2 a", "cargo_packager_resource_resolver")
 // And we check that the size remained the same.
-assert-property: (".mobile-topbar .location", {"offsetHeight": |height|})
+assert-property: ("rustdoc-topbar h2", {"offsetHeight": |height|})
 
 // Now we check if it works for the non-crate pages as well.
 go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"
 // We store the height we know is correct.
-store-property: (".mobile-topbar .location", {"offsetHeight": height})
-set-text: (".mobile-topbar .location a", "Something_incredibly_long_because")
+store-property: ("rustdoc-topbar h2", {"offsetHeight": height})
+set-text: ("rustdoc-topbar h2 a", "Something_incredibly_long_because")
 // And we check that the size remained the same.
-assert-property: (".mobile-topbar .location", {"offsetHeight": |height|})
+assert-property: ("rustdoc-topbar h2", {"offsetHeight": |height|})
diff --git a/tests/rustdoc-gui/mobile.goml b/tests/rustdoc-gui/mobile.goml
index a9eee53dd1d..d292281932d 100644
--- a/tests/rustdoc-gui/mobile.goml
+++ b/tests/rustdoc-gui/mobile.goml
@@ -5,7 +5,7 @@ set-window-size: (400, 600)
 set-font-size: 18
 wait-for: 100 // wait a bit for the resize and the font-size change to be fully taken into account.
 
-assert-property: (".mobile-topbar h2", {"offsetHeight": 33})
+assert-property: ("rustdoc-topbar h2", {"offsetHeight": 33})
 
 // On the settings page, the theme buttons should not line-wrap. Instead, they should
 // all be placed as a group on a line below the setting name "Theme."
diff --git a/tests/rustdoc-gui/notable-trait.goml b/tests/rustdoc-gui/notable-trait.goml
index 423a273fde7..6bd4661ac8f 100644
--- a/tests/rustdoc-gui/notable-trait.goml
+++ b/tests/rustdoc-gui/notable-trait.goml
@@ -82,15 +82,6 @@ call-function: ("check-notable-tooltip-position", {
     "i_x": 528,
 })
 
-// Checking on mobile now.
-set-window-size: (650, 600)
-wait-for-size: ("body", {"width": 650})
-call-function: ("check-notable-tooltip-position-complete", {
-    "x": 26,
-    "i_x": 305,
-    "popover_x": 0,
-})
-
 // Now check the colors.
 define-function: (
     "check-colors",
@@ -176,6 +167,15 @@ call-function: (
     },
 )
 
+// Checking on mobile now.
+set-window-size: (650, 600)
+wait-for-size: ("body", {"width": 650})
+call-function: ("check-notable-tooltip-position-complete", {
+    "x": 26,
+    "i_x": 305,
+    "popover_x": 0,
+})
+
 reload:
 
 // Check that pressing escape works
@@ -189,7 +189,7 @@ assert: "#method\.create_an_iterator_from_read .tooltip:focus"
 // Check that clicking outside works.
 click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
 assert-count: ("//*[@class='tooltip popover']", 1)
-click: ".search-input"
+click: ".main-heading h1"
 assert-count: ("//*[@class='tooltip popover']", 0)
 assert-false: "#method\.create_an_iterator_from_read .tooltip:focus"
 
@@ -219,14 +219,14 @@ define-function: (
         store-window-property: {"scrollY": scroll}
         click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
         wait-for: "//*[@class='tooltip popover']"
-        click: "#settings-menu a"
+        click: ".main-heading h1"
     }
 )
 
 // Now we check that the focus isn't given back to the wrong item when opening
 // another popover.
 call-function: ("setup-popup", {})
-click: ".search-input"
+click: ".main-heading h1"
 // We ensure we didn't come back to the previous focused item.
 assert-window-property-false: {"scrollY": |scroll|}
 
@@ -251,7 +251,7 @@ reload:
 assert-count: ("//*[@class='tooltip popover']", 0)
 click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
 assert-count: ("//*[@class='tooltip popover']", 1)
-click: "#settings-menu a"
+click: "rustdoc-toolbar .settings-menu a"
 wait-for: "#settings"
 assert-count: ("//*[@class='tooltip popover']", 0)
 assert-false: "#method\.create_an_iterator_from_read .tooltip:focus"
diff --git a/tests/rustdoc-gui/pocket-menu.goml b/tests/rustdoc-gui/pocket-menu.goml
index 073172dd8a7..a0815bfa9a0 100644
--- a/tests/rustdoc-gui/pocket-menu.goml
+++ b/tests/rustdoc-gui/pocket-menu.goml
@@ -3,33 +3,33 @@ include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=test"
 wait-for: "#crate-search"
 // First we check that the help menu doesn't exist yet.
-assert-false: "#help-button .popover"
+assert-false: "rustdoc-toolbar .help-menu .popover"
 // Then we display the help menu.
-click: "#help-button"
-assert: "#help-button .popover"
-assert-css: ("#help-button .popover", {"display": "block"})
+click: "rustdoc-toolbar .help-menu"
+assert: "rustdoc-toolbar .help-menu .popover"
+assert-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
 
 // Now we click somewhere else on the page to ensure it is handling the blur event
 // correctly.
 click: ".sidebar"
-assert-css: ("#help-button .popover", {"display": "none"})
+assert-false: "rustdoc-toolbar .help-menu .popover"
 
 // Now we will check that we cannot have two "pocket menus" displayed at the same time.
-click: "#help-button"
-assert-css: ("#help-button .popover", {"display": "block"})
-click: "#settings-menu"
-assert-css: ("#help-button .popover", {"display": "none"})
-assert-css: ("#settings-menu .popover", {"display": "block"})
+click: "rustdoc-toolbar .help-menu"
+assert-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
+click: "rustdoc-toolbar .settings-menu"
+assert-false: "rustdoc-toolbar .help-menu .popover"
+assert-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "block"})
 
 // Now the other way.
-click: "#help-button"
-assert-css: ("#help-button .popover", {"display": "block"})
-assert-css: ("#settings-menu .popover", {"display": "none"})
+click: "rustdoc-toolbar .help-menu"
+assert-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
+assert-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "none"})
 
 // Now verify that clicking the help menu again closes it.
-click: "#help-button"
-assert-css: ("#help-button .popover", {"display": "none"})
-assert-css: ("#settings-menu .popover", {"display": "none"})
+click: "rustdoc-toolbar .help-menu"
+assert-false: "rustdoc-toolbar .help-menu .popover"
+assert-css: (".settings-menu .popover", {"display": "none"})
 
 define-function: (
     "check-popover-colors",
@@ -37,13 +37,21 @@ define-function: (
     block {
         call-function: ("switch-theme", {"theme": |theme|})
 
-        click: "#help-button"
+        click: "rustdoc-toolbar .help-menu"
         assert-css: (
-            "#help-button .popover",
+            "rustdoc-toolbar .help-menu .popover",
             {"display": "block", "border-color": |border_color|},
         )
-        compare-elements-css: ("#help-button .popover", "#help-button .top", ["border-color"])
-        compare-elements-css: ("#help-button .popover", "#help-button .bottom", ["border-color"])
+        compare-elements-css: (
+            "rustdoc-toolbar .help-menu .popover",
+            "rustdoc-toolbar .help-menu .top",
+            ["border-color"],
+        )
+        compare-elements-css: (
+            "rustdoc-toolbar .help-menu .popover",
+            "rustdoc-toolbar .help-menu .bottom",
+            ["border-color"],
+        )
     }
 )
 
@@ -63,8 +71,21 @@ call-function: ("check-popover-colors", {
 
 // Opening the mobile sidebar should close the settings popover.
 set-window-size: (650, 600)
-click: "#settings-menu a"
-assert-css: ("#settings-menu .popover", {"display": "block"})
+click: "rustdoc-topbar .settings-menu a"
+assert-css: ("rustdoc-topbar .settings-menu .popover", {"display": "block"})
+click: ".sidebar-menu-toggle"
+assert: "//*[@class='sidebar shown']"
+assert-css: ("rustdoc-topbar .settings-menu .popover", {"display": "none"})
+// Opening the settings popover should close the sidebar.
+click: ".settings-menu a"
+assert-css: ("rustdoc-topbar .settings-menu .popover", {"display": "block"})
+assert-false: "//*[@class='sidebar shown']"
+
+// Opening the settings popover at start (which async loads stuff) should also close.
+reload:
 click: ".sidebar-menu-toggle"
 assert: "//*[@class='sidebar shown']"
-assert-css: ("#settings-menu .popover", {"display": "none"})
+assert-false: "rustdoc-topbar .settings-menu .popover"
+click: "rustdoc-topbar .settings-menu a"
+assert-false: "//*[@class='sidebar shown']"
+wait-for: "rustdoc-topbar .settings-menu .popover"
diff --git a/tests/rustdoc-gui/scrape-examples-color.goml b/tests/rustdoc-gui/scrape-examples-color.goml
index b0faca190a5..c84fe1f3411 100644
--- a/tests/rustdoc-gui/scrape-examples-color.goml
+++ b/tests/rustdoc-gui/scrape-examples-color.goml
@@ -27,7 +27,7 @@ define-function: (
             "color": |help_hover_color|,
         })
         // Moving the cursor to another item to not break next runs.
-        move-cursor-to: ".search-input"
+        move-cursor-to: "#search-button"
     }
 )
 
diff --git a/tests/rustdoc-gui/scrape-examples-layout.goml b/tests/rustdoc-gui/scrape-examples-layout.goml
index 85a3b2a6287..681d0c24c6d 100644
--- a/tests/rustdoc-gui/scrape-examples-layout.goml
+++ b/tests/rustdoc-gui/scrape-examples-layout.goml
@@ -64,8 +64,8 @@ assert-size: (".more-scraped-examples .scraped-example .example-wrap", {
 store-value: (offset_y, 4)
 
 // First with desktop
-assert-position: (".scraped-example", {"y": 256})
-assert-position: (".scraped-example .prev", {"y": 256 + |offset_y|})
+assert-position: (".scraped-example", {"y": 214})
+assert-position: (".scraped-example .prev", {"y": 214 + |offset_y|})
 
 // Gradient background should be at the top of the code block.
 assert-css: (".scraped-example .example-wrap::before", {"top": "0px"})
@@ -74,8 +74,8 @@ assert-css: (".scraped-example .example-wrap::after", {"bottom": "0px"})
 // Then with mobile
 set-window-size: (600, 600)
 store-size: (".scraped-example .scraped-example-title", {"height": title_height})
-assert-position: (".scraped-example", {"y": 291})
-assert-position: (".scraped-example .prev", {"y": 291 + |offset_y| + |title_height|})
+assert-position: (".scraped-example", {"y": 249})
+assert-position: (".scraped-example .prev", {"y": 249 + |offset_y| + |title_height|})
 
 define-function: (
     "check_title_and_code_position",
diff --git a/tests/rustdoc-gui/scrape-examples-toggle.goml b/tests/rustdoc-gui/scrape-examples-toggle.goml
index 441895a7c0e..ec5710fbcdc 100644
--- a/tests/rustdoc-gui/scrape-examples-toggle.goml
+++ b/tests/rustdoc-gui/scrape-examples-toggle.goml
@@ -25,7 +25,7 @@ define-function: (
         // We put the toggle in the original state.
         click: ".more-examples-toggle"
         // Moving cursor away from the toggle line to prevent disrupting next test.
-        move-cursor-to: ".search-input"
+        move-cursor-to: "rustdoc-toolbar #search-button"
     },
 )
 
diff --git a/tests/rustdoc-gui/search-about-this-result.goml b/tests/rustdoc-gui/search-about-this-result.goml
index 1d45c06dc43..ec1df737c81 100644
--- a/tests/rustdoc-gui/search-about-this-result.goml
+++ b/tests/rustdoc-gui/search-about-this-result.goml
@@ -7,6 +7,7 @@ focus: ".search-input"
 press-key: "Enter"
 
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-count: ("#search-tabs button", 1)
 assert-count: (".search-results > a", 1)
 
@@ -32,6 +33,7 @@ focus: ".search-input"
 press-key: "Enter"
 
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-text: ("//div[@class='type-signature']", "F -> WhereWhitespace<T>")
 assert-count: ("#search-tabs button", 1)
 assert-count: (".search-results > a", 1)
diff --git a/tests/rustdoc-gui/search-corrections.goml b/tests/rustdoc-gui/search-corrections.goml
index f80675730c4..a14a80f357c 100644
--- a/tests/rustdoc-gui/search-corrections.goml
+++ b/tests/rustdoc-gui/search-corrections.goml
@@ -1,101 +1,60 @@
 // ignore-tidy-linelength
+include: "utils.goml"
 
 // Checks that the search tab result tell the user about corrections
 // First, try a search-by-name
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-// Intentionally wrong spelling of "NotableStructWithLongName"
-write-into: (".search-input", "NotableStructWithLongNamr")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "NotableStructWithLongNamr"})
 
 // Corrections aren't shown on the "In Names" tab.
 assert: "#search-tabs button.selected:first-child"
-assert-css: (".search-corrections", {
-    "display": "none"
-})
+assert-false: ".search-results:nth-child(1) .search-corrections"
 
 // Corrections do get shown on the "In Parameters" tab.
 click: "#search-tabs button:nth-child(2)"
 assert: "#search-tabs button.selected:nth-child(2)"
-assert-css: (".search-corrections", {
-    "display": "block"
-})
 assert-text: (
-    ".search-corrections",
-    "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead."
+    ".search-results:nth-child(2) .search-corrections",
+    "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"NotableStructWithLongName\" instead."
 )
 
 // Corrections do get shown on the "In Return Type" tab.
 click: "#search-tabs button:nth-child(3)"
 assert: "#search-tabs button.selected:nth-child(3)"
-assert-css: (".search-corrections", {
-    "display": "block"
-})
 assert-text: (
-    ".search-corrections",
-    "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead."
+    ".search-results:nth-child(3) .search-corrections",
+    "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"NotableStructWithLongName\" instead."
 )
 
 // Now, explicit return values
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-// Intentionally wrong spelling of "NotableStructWithLongName"
-write-into: (".search-input", "-> NotableStructWithLongNamr")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "-> NotableStructWithLongNamr"})
 
-assert-css: (".search-corrections", {
-    "display": "block"
-})
 assert-text: (
-    ".search-corrections",
-    "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead."
+    ".search-results.active .search-corrections",
+    "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"NotableStructWithLongName\" instead."
 )
 
 // Now, generic correction
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-// Intentionally wrong spelling of "NotableStructWithLongName"
-write-into: (".search-input", "NotableStructWithLongNamr, NotableStructWithLongNamr")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "NotableStructWithLongNamr, NotableStructWithLongNamr"})
 
-assert-css: (".search-corrections", {
-    "display": "block"
-})
 assert-text: (
-    ".search-corrections",
-    "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"notablestructwithlongname\" instead."
+    ".search-failed.active .search-corrections",
+    "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"NotableStructWithLongName\" instead."
 )
 
 // Now, generic correction plus error
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-// Intentionally wrong spelling of "NotableStructWithLongName"
-write-into: (".search-input", "Foo<NotableStructWithLongNamr>,y")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "Foo<NotableStructWithLongNamr>,y"})
 
-assert-css: (".search-corrections", {
-    "display": "block"
-})
 assert-text: (
-    ".search-corrections",
-    "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"notablestructwithlongname\" instead."
+    ".search-failed.active .search-corrections",
+    "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"NotableStructWithLongName\" instead."
 )
 
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-// Intentionally wrong spelling of "NotableStructWithLongName"
-write-into: (".search-input", "generic:NotableStructWithLongNamr<x>,y")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "generic:NotableStructWithLongNamr<x>,y"})
 
 assert-css: (".error", {
     "display": "block"
diff --git a/tests/rustdoc-gui/search-error.goml b/tests/rustdoc-gui/search-error.goml
index 4dc60669c7a..4d7c2263fd1 100644
--- a/tests/rustdoc-gui/search-error.goml
+++ b/tests/rustdoc-gui/search-error.goml
@@ -8,6 +8,7 @@ define-function: (
     [theme, error_background],
     block {
         call-function: ("switch-theme", {"theme": |theme|})
+        wait-for-false: "#search-tabs .count.loading"
         wait-for: "#search .error code"
         assert-css: ("#search .error code", {"background-color": |error_background|})
     }
diff --git a/tests/rustdoc-gui/search-filter.goml b/tests/rustdoc-gui/search-filter.goml
index c5038e0892b..d92d522c119 100644
--- a/tests/rustdoc-gui/search-filter.goml
+++ b/tests/rustdoc-gui/search-filter.goml
@@ -2,11 +2,7 @@
 include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 show-text: true
-write-into: (".search-input", "test")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "test"})
 assert-text: ("#results .externcrate", "test_docs")
 
 wait-for: "#crate-search"
@@ -21,6 +17,7 @@ press-key: "ArrowDown"
 press-key: "Enter"
 // Waiting for the search results to appear...
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-document-property: ({"URL": "&filter-crate="}, CONTAINS)
 // We check that there is no more "test_docs" appearing.
 assert-false: "#results .externcrate"
@@ -31,7 +28,8 @@ assert-property: ("#crate-search", {"value": "lib2"})
 // crate filtering.
 press-key: "Escape"
 wait-for-css: ("#main-content", {"display": "block"})
-focus: ".search-input"
+click: "#search-button"
+wait-for: ".search-input"
 wait-for-css: ("#main-content", {"display": "none"})
 // We check that there is no more "test_docs" appearing.
 assert-false: "#results .externcrate"
@@ -47,6 +45,7 @@ press-key: "ArrowUp"
 press-key: "Enter"
 // Waiting for the search results to appear...
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-property: ("#crate-search", {"value": "all crates"})
 
 // Checking that the URL parameter is taken into account for crate filtering.
@@ -56,8 +55,7 @@ assert-property: ("#crate-search", {"value": "lib2"})
 assert-false: "#results .externcrate"
 
 // Checking that the text for the "title" is correct (the "all crates" comes from the "<select>").
-assert-text: (".search-results-title", "Results", STARTS_WITH)
-assert-text: (".search-results-title + .sub-heading", " in all crates", STARTS_WITH)
+assert-text: (".search-switcher", "Search results in all crates", STARTS_WITH)
 
 // Checking the display of the crate filter.
 // We start with the light theme.
@@ -72,7 +70,7 @@ assert-css: ("#crate-search", {
 })
 
 // We now check the dark theme.
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 click: "#theme-dark"
 wait-for-css: ("#crate-search", {
diff --git a/tests/rustdoc-gui/search-form-elements.goml b/tests/rustdoc-gui/search-form-elements.goml
index efe39f7a9d1..fdf0afb7e8f 100644
--- a/tests/rustdoc-gui/search-form-elements.goml
+++ b/tests/rustdoc-gui/search-form-elements.goml
@@ -2,6 +2,7 @@
 include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=test"
 wait-for: "#search-tabs" // Waiting for the search.js to load.
+wait-for-false: "#search-tabs .count.loading"
 show-text: true
 
 define-function: (
@@ -31,7 +32,7 @@ define-function: (
             },
         )
         assert-css: (
-            "#help-button > a",
+            "rustdoc-toolbar .help-menu > a",
             {
                 "color": |menu_button_a_color|,
                 "border-color": "transparent",
@@ -39,9 +40,9 @@ define-function: (
             },
         )
         // Hover help button.
-        move-cursor-to: "#help-button"
+        move-cursor-to: "rustdoc-toolbar .help-menu"
         assert-css: (
-            "#help-button > a",
+            "rustdoc-toolbar .help-menu > a",
             {
                 "color": |menu_button_a_color|,
                 "border-color": |menu_button_a_border_hover|,
@@ -49,15 +50,15 @@ define-function: (
             },
         )
         // Link color inside
-        click: "#help-button"
+        click: "rustdoc-toolbar .help-menu"
         assert-css: (
-            "#help a",
+            "rustdoc-toolbar #help a",
             {
                 "color": |menu_a_color|,
             },
         )
         assert-css: (
-            "#settings-menu > a",
+            "rustdoc-toolbar .settings-menu > a",
             {
                 "color": |menu_button_a_color|,
                 "border-color": "transparent",
@@ -65,9 +66,9 @@ define-function: (
             },
         )
         // Hover settings menu.
-        move-cursor-to: "#settings-menu"
+        move-cursor-to: "rustdoc-toolbar .settings-menu"
         assert-css: (
-            "#settings-menu:hover > a",
+            "rustdoc-toolbar .settings-menu:hover > a",
             {
                 "color": |menu_button_a_color|,
                 "border-color": |menu_button_a_border_hover|,
@@ -120,8 +121,10 @@ call-function: (
 // Check that search input correctly decodes form encoding.
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=a+b"
 wait-for: "#search-tabs" // Waiting for the search.js to load.
+wait-for-false: "#search-tabs .count.loading"
 assert-property: (".search-input", { "value": "a b" })
 // Check that literal + is not treated as space.
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=a%2Bb"
 wait-for: "#search-tabs" // Waiting for the search.js to load.
+wait-for-false: "#search-tabs .count.loading"
 assert-property: (".search-input", { "value": "a+b" })
diff --git a/tests/rustdoc-gui/search-input-mobile.goml b/tests/rustdoc-gui/search-input-mobile.goml
index adcb3658a27..a383d92d288 100644
--- a/tests/rustdoc-gui/search-input-mobile.goml
+++ b/tests/rustdoc-gui/search-input-mobile.goml
@@ -2,10 +2,13 @@
 // The PR which fixed it is: https://github.com/rust-lang/rust/pull/81592
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 set-window-size: (463, 700)
-// We first check that the search input isn't already focused.
-assert-false: ("input.search-input:focus")
-click: "input.search-input"
+click: "#search-button"
+wait-for: ".search-input"
+assert: "input.search-input:focus"
+
+go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 reload:
 set-window-size: (750, 700)
-click: "input.search-input"
-assert: ("input.search-input:focus")
+click: "#search-button"
+wait-for: ".search-input"
+assert: "input.search-input:focus"
diff --git a/tests/rustdoc-gui/search-keyboard.goml b/tests/rustdoc-gui/search-keyboard.goml
index 707bb8f5faa..4adaaa106ea 100644
--- a/tests/rustdoc-gui/search-keyboard.goml
+++ b/tests/rustdoc-gui/search-keyboard.goml
@@ -1,28 +1,25 @@
 // Checks that the search tab results work correctly with function signature syntax
 // First, try a search-by-name
+include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "Foo")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "Foo"})
 
 // Now use the keyboard commands to switch to the third result.
 press-key: "ArrowDown"
 press-key: "ArrowDown"
 press-key: "ArrowDown"
-assert: ".search-results.active > a:focus:nth-of-type(3)"
+wait-for: ".search-results.active > a:focus:nth-of-type(3)"
 
 // Now switch to the second tab, then back to the first one, then arrow back up.
 press-key: "ArrowRight"
-assert: ".search-results.active:nth-of-type(2) > a:focus:nth-of-type(1)"
+wait-for: ".search-results.active:nth-of-type(2) > a:focus:nth-of-type(1)"
 press-key: "ArrowLeft"
-assert: ".search-results.active:nth-of-type(1) > a:focus:nth-of-type(3)"
+wait-for: ".search-results.active:nth-of-type(1) > a:focus:nth-of-type(3)"
 press-key: "ArrowUp"
-assert: ".search-results.active > a:focus:nth-of-type(2)"
+wait-for: ".search-results.active > a:focus:nth-of-type(2)"
 press-key: "ArrowUp"
-assert: ".search-results.active > a:focus:nth-of-type(1)"
+wait-for: ".search-results.active > a:focus:nth-of-type(1)"
 press-key: "ArrowUp"
-assert: ".search-input:focus"
+wait-for: ".search-input:focus"
 press-key: "ArrowDown"
-assert: ".search-results.active > a:focus:nth-of-type(1)"
+wait-for: ".search-results.active > a:focus:nth-of-type(1)"
diff --git a/tests/rustdoc-gui/search-reexport.goml b/tests/rustdoc-gui/search-reexport.goml
index fa9eedeceac..c69464f8bd9 100644
--- a/tests/rustdoc-gui/search-reexport.goml
+++ b/tests/rustdoc-gui/search-reexport.goml
@@ -6,10 +6,8 @@ call-function: ("switch-theme", {"theme": "dark"})
 // First we check that the reexport has the correct ID and no background color.
 assert-text: ("//*[@id='reexport.TheStdReexport']", "pub use ::std as TheStdReexport;")
 assert-css: ("//*[@id='reexport.TheStdReexport']", {"background-color": "rgba(0, 0, 0, 0)"})
-write-into: (".search-input", "TheStdReexport")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-wait-for: "//a[@class='result-import']"
+call-function: ("perform-search", {"query": "TheStdReexport"})
+assert: "//a[@class='result-import']"
 assert-attribute: (
     "//a[@class='result-import']",
     {"href": "../test_docs/index.html#reexport.TheStdReexport"},
@@ -21,9 +19,8 @@ wait-for-css: ("//*[@id='reexport.TheStdReexport']", {"background-color": "#494a
 
 // We now check that the alias is working as well on the reexport.
 // To be SURE that the search will be run.
-press-key: 'Enter'
-write-into: (".search-input", "AliasForTheStdReexport")
-wait-for: "//a[@class='result-import']"
+call-function: ("perform-search", {"query": "AliasForTheStdReexport"})
+assert: "//a[@class='result-import']"
 assert-text: (
     "a.result-import .result-name",
     "re-export AliasForTheStdReexport - see test_docs::TheStdReexport",
diff --git a/tests/rustdoc-gui/search-result-color.goml b/tests/rustdoc-gui/search-result-color.goml
index e6dd504d703..e136eab6a7d 100644
--- a/tests/rustdoc-gui/search-result-color.goml
+++ b/tests/rustdoc-gui/search-result-color.goml
@@ -14,6 +14,7 @@ define-function: (
 
         // Waiting for the search results to appear...
         wait-for: "#search-tabs"
+        wait-for-false: "#search-tabs .count.loading"
         assert-css: (
             "#search-tabs > button > .count",
             {"color": |count_color|},
@@ -212,11 +213,7 @@ call-function: ("check-search-color", {
 // Check the alias.
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 
-write-into: (".search-input", "thisisanalias")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "thisisanalias"})
 
 define-function: (
     "check-alias",
diff --git a/tests/rustdoc-gui/search-result-description.goml b/tests/rustdoc-gui/search-result-description.goml
index 745ef31e6cb..4ab250b472d 100644
--- a/tests/rustdoc-gui/search-result-description.goml
+++ b/tests/rustdoc-gui/search-result-description.goml
@@ -2,4 +2,5 @@
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=some_more_function"
 // Waiting for the search results to appear...
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-text: (".search-results .desc code", "format!")
diff --git a/tests/rustdoc-gui/search-result-display.goml b/tests/rustdoc-gui/search-result-display.goml
index 1521267956a..345e08cd578 100644
--- a/tests/rustdoc-gui/search-result-display.goml
+++ b/tests/rustdoc-gui/search-result-display.goml
@@ -7,6 +7,7 @@ write-into: (".search-input", "test")
 // To be SURE that the search will be run.
 press-key: 'Enter'
 wait-for: "#crate-search"
+wait-for-false: "#search-tabs .count.loading"
 // The width is returned by "getComputedStyle" which returns the exact number instead of the
 // CSS rule which is "50%"...
 assert-size: (".search-results div.desc", {"width": 248})
@@ -34,6 +35,7 @@ assert: |new_width| < |width| - 10
 // Check that if the search is too long on mobile, it'll go under the "typename".
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=SuperIncrediblyLongLongLongLongLongLongLongGigaGigaGigaMegaLongLongLongStructName"
 wait-for: "#crate-search"
+wait-for-false: "#search-tabs .count.loading"
 compare-elements-position-near: (
     ".search-results .result-name .typename",
     ".search-results .result-name .path",
@@ -51,7 +53,7 @@ set-window-size: (900, 900)
 
 // First we check the current width, height and position.
 assert-css: ("#crate-search", {"width": "159px"})
-store-size: (".search-results-title", {
+store-size: (".search-switcher", {
     "height": search_results_title_height,
     "width": search_results_title_width,
 })
@@ -64,8 +66,8 @@ set-text: (
 )
 
 // Then we compare again to confirm the height didn't change.
-assert-size: ("#crate-search", {"width": 370})
-assert-size: (".search-results-title", {
+assert-size: ("#crate-search", {"width": 185})
+assert-size: (".search-switcher", {
     "height": |search_results_title_height|,
 })
 assert-css: ("#search", {"width": "640px"})
@@ -79,6 +81,7 @@ define-function: (
     block {
         call-function: ("switch-theme", {"theme": |theme|})
         wait-for: "#crate-search"
+        wait-for-false: "#search-tabs .count.loading"
         assert-css: ("#crate-search", {"border": "1px solid " + |border|})
         assert-css: ("#crate-search-div::after", {"filter": |filter|})
         move-cursor-to: "#crate-search"
diff --git a/tests/rustdoc-gui/search-result-go-to-first.goml b/tests/rustdoc-gui/search-result-go-to-first.goml
index 136213c517e..acb25453171 100644
--- a/tests/rustdoc-gui/search-result-go-to-first.goml
+++ b/tests/rustdoc-gui/search-result-go-to-first.goml
@@ -9,6 +9,7 @@ assert-text-false: (".main-heading h1", "Struct test_docs::FooCopy item path")
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=struct%3AFoo"
 // Waiting for the search results to appear...
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-text-false: (".main-heading h1", "Struct test_docs::FooCopy item path")
 // Ensure that the search results are displayed, not the "normal" content.
 assert-css: ("#main-content", {"display": "none"})
@@ -17,4 +18,4 @@ assert-css: ("#main-content", {"display": "none"})
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=struct%3AFoo&go_to_first=true"
 // Waiting for the page to load...
 wait-for-text: (".main-heading .rustdoc-breadcrumbs", "test_docs")
-wait-for-text: (".main-heading h1", "Struct FooCopy item path")
+wait-for-text: (".main-heading h1", "Struct Foo Copy item path")
diff --git a/tests/rustdoc-gui/search-result-impl-disambiguation.goml b/tests/rustdoc-gui/search-result-impl-disambiguation.goml
index bca52b46498..e39b90a735e 100644
--- a/tests/rustdoc-gui/search-result-impl-disambiguation.goml
+++ b/tests/rustdoc-gui/search-result-impl-disambiguation.goml
@@ -1,15 +1,12 @@
 // ignore-tidy-linelength
+include: "utils.goml"
 
 // Checks that, if a type has two methods with the same name, they both get
 // linked correctly.
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 
 // This should link to the inherent impl
-write-into: (".search-input", "ZyxwvutMethodDisambiguation -> bool")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "ZyxwvutMethodDisambiguation -> bool"})
 // Check the disambiguated link.
 assert-count: ("a.result-method", 1)
 assert-attribute: ("a.result-method", {
@@ -25,11 +22,7 @@ assert: "section:target"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 
 // This should link to the trait impl
-write-into: (".search-input", "ZyxwvutMethodDisambiguation, usize -> usize")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "ZyxwvutMethodDisambiguation, usize -> usize"})
 // Check the disambiguated link.
 assert-count: ("a.result-method", 1)
 assert-attribute: ("a.result-method", {
@@ -47,6 +40,7 @@ assert: "section:target"
 // impl block's disambiguator is also acted upon.
 go-to: "file://" + |DOC_PATH| + "/lib2/index.html?search=MultiImplBlockStruct->bool"
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-count: ("a.result-method", 1)
 assert-attribute: ("a.result-method", {
     "href": "../lib2/another_mod/struct.MultiImplBlockStruct.html#impl-MultiImplBlockStruct/method.second_fn"
@@ -56,6 +50,7 @@ wait-for: "details:has(summary > #impl-MultiImplBlockStruct-1) > div section[id=
 
 go-to: "file://" + |DOC_PATH| + "/lib2/index.html?search=MultiImplBlockStruct->u32"
 wait-for: "#search-tabs"
+wait-for-false: "#search-tabs .count.loading"
 assert-count: ("a.result-method", 1)
 assert-attribute: ("a.result-method", {
     "href": "../lib2/another_mod/struct.MultiImplBlockStruct.html#impl-MultiImplBlockTrait-for-MultiImplBlockStruct/method.second_fn"
diff --git a/tests/rustdoc-gui/search-result-keyword.goml b/tests/rustdoc-gui/search-result-keyword.goml
index 02305f2587c..d9bdf6d0135 100644
--- a/tests/rustdoc-gui/search-result-keyword.goml
+++ b/tests/rustdoc-gui/search-result-keyword.goml
@@ -1,8 +1,5 @@
 // Checks that the "keyword" results have the expected text alongside them.
+include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "for")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "for"})
 assert-text: (".result-keyword .result-name", "keyword for")
diff --git a/tests/rustdoc-gui/search-tab-change-title-fn-sig.goml b/tests/rustdoc-gui/search-tab-change-title-fn-sig.goml
index 7e26229ec6e..7bd283c5739 100644
--- a/tests/rustdoc-gui/search-tab-change-title-fn-sig.goml
+++ b/tests/rustdoc-gui/search-tab-change-title-fn-sig.goml
@@ -1,11 +1,9 @@
 // Checks that the search tab results work correctly with function signature syntax
 // First, try a search-by-name
+include: "utils.goml"
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "Foo")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "Foo"})
+
 assert-attribute: ("#search-tabs > button:nth-of-type(1)", {"class": "selected"})
 assert-text: ("#search-tabs > button:nth-of-type(1)", "In Names", STARTS_WITH)
 assert: "input.search-input:focus"
@@ -23,11 +21,7 @@ wait-for-attribute: ("#search-tabs > button:nth-of-type(3)", {"class": "selected
 
 // Now try search-by-return
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "-> String")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "-> String"})
 assert-attribute: ("#search-tabs > button:nth-of-type(1)", {"class": "selected"})
 assert-text: ("#search-tabs > button:nth-of-type(1)", "In Function Return Types", STARTS_WITH)
 assert: "input.search-input:focus"
@@ -45,30 +39,18 @@ wait-for-attribute: ("#search-tabs > button:nth-of-type(1)", {"class": "selected
 
 // Try with a search-by-return with no results
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "-> Something")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "-> Something"})
 assert-attribute: ("#search-tabs > button:nth-of-type(1)", {"class": "selected"})
 assert-text: ("#search-tabs > button:nth-of-type(1)", "In Function Return Types", STARTS_WITH)
 
 // Try with a search-by-parameter
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "usize,pattern")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "usize,pattern"})
 assert-attribute: ("#search-tabs > button:nth-of-type(1)", {"class": "selected"})
 assert-text: ("#search-tabs > button:nth-of-type(1)", "In Function Parameters", STARTS_WITH)
 
 // Try with a search-by-parameter-and-return
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-write-into: (".search-input", "pattern -> str")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-// Waiting for the search results to appear...
-wait-for: "#search-tabs"
+call-function: ("perform-search", {"query": "pattern -> str"})
 assert-attribute: ("#search-tabs > button:nth-of-type(1)", {"class": "selected"})
 assert-text: ("#search-tabs > button:nth-of-type(1)", "In Function Signatures", STARTS_WITH)
diff --git a/tests/rustdoc-gui/search-tab.goml b/tests/rustdoc-gui/search-tab.goml
index 826e272e508..00ca952033d 100644
--- a/tests/rustdoc-gui/search-tab.goml
+++ b/tests/rustdoc-gui/search-tab.goml
@@ -15,7 +15,8 @@ define-function: (
         focus: ".search-input"
         press-key: "Enter"
 
-        wait-for: "#search-tabs"
+        wait-for: "#search-tabs .count"
+        wait-for-false: "#search-tabs .count.loading"
         assert-css: ("#search-tabs > button:not(.selected)", {
             "background-color": |background|,
             "border-bottom": |border_bottom|,
diff --git a/tests/rustdoc-gui/search-title.goml b/tests/rustdoc-gui/search-title.goml
index 95bc36af449..83321a05f2b 100644
--- a/tests/rustdoc-gui/search-title.goml
+++ b/tests/rustdoc-gui/search-title.goml
@@ -5,10 +5,7 @@ go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 store-value: (title, "test_docs - Rust")
 assert-document-property: {"title": |title|}
 
-write-into: (".search-input", "test")
-// To be SURE that the search will be run.
-press-key: 'Enter'
-wait-for: "#crate-search"
+call-function: ("perform-search", {"query": "test"})
 
 assert-document-property: {"title": '"test" Search - Rust'}
 
@@ -16,6 +13,7 @@ set-property: (".search-input", {"value": "another one"})
 // To be SURE that the search will be run.
 press-key: 'Enter'
 wait-for: "#crate-search"
+wait-for-false: "#search-tabs .count.loading"
 
 assert-document-property: {"title": '"another one" Search - Rust'}
 
diff --git a/tests/rustdoc-gui/setting-auto-hide-content-large-items.goml b/tests/rustdoc-gui/setting-auto-hide-content-large-items.goml
index 9afde7c61da..342bd726694 100644
--- a/tests/rustdoc-gui/setting-auto-hide-content-large-items.goml
+++ b/tests/rustdoc-gui/setting-auto-hide-content-large-items.goml
@@ -9,7 +9,7 @@ define-function: (
     [storage_value, setting_attribute_value, toggle_attribute_value],
     block {
         assert-local-storage: {"rustdoc-auto-hide-large-items": |storage_value|}
-        click: "#settings-menu"
+        click: "rustdoc-toolbar .settings-menu"
         wait-for: "#settings"
         assert-property: ("#auto-hide-large-items", {"checked": |setting_attribute_value|})
         assert-attribute: (".item-decl .type-contents-toggle", {"open": |toggle_attribute_value|})
diff --git a/tests/rustdoc-gui/setting-auto-hide-item-methods-docs.goml b/tests/rustdoc-gui/setting-auto-hide-item-methods-docs.goml
index 644396ed578..02d4ce8855f 100644
--- a/tests/rustdoc-gui/setting-auto-hide-item-methods-docs.goml
+++ b/tests/rustdoc-gui/setting-auto-hide-item-methods-docs.goml
@@ -6,7 +6,7 @@ define-function: (
     [storage_value, setting_attribute_value, toggle_attribute_value],
     block {
         assert-local-storage: {"rustdoc-auto-hide-method-docs": |storage_value|}
-        click: "#settings-menu"
+        click: "rustdoc-toolbar .settings-menu"
         wait-for: "#settings"
         assert-property: ("#auto-hide-method-docs", {"checked": |setting_attribute_value|})
         assert-attribute: (".toggle.method-toggle", {"open": |toggle_attribute_value|})
diff --git a/tests/rustdoc-gui/setting-auto-hide-trait-implementations.goml b/tests/rustdoc-gui/setting-auto-hide-trait-implementations.goml
index 3c09198dae5..4af1e829b31 100644
--- a/tests/rustdoc-gui/setting-auto-hide-trait-implementations.goml
+++ b/tests/rustdoc-gui/setting-auto-hide-trait-implementations.goml
@@ -5,7 +5,7 @@ define-function: (
     [storage_value, setting_attribute_value, toggle_attribute_value],
     block {
         assert-local-storage: {"rustdoc-auto-hide-trait-implementations": |storage_value|}
-        click: "#settings-menu"
+        click: "rustdoc-toolbar .settings-menu"
         wait-for: "#settings"
         assert-property: ("#auto-hide-trait-implementations", {"checked": |setting_attribute_value|})
         assert-attribute: ("#trait-implementations-list > details", {"open": |toggle_attribute_value|}, ALL)
diff --git a/tests/rustdoc-gui/setting-go-to-only-result.goml b/tests/rustdoc-gui/setting-go-to-only-result.goml
index f8535477c22..5a9c81e0b83 100644
--- a/tests/rustdoc-gui/setting-go-to-only-result.goml
+++ b/tests/rustdoc-gui/setting-go-to-only-result.goml
@@ -5,7 +5,7 @@ define-function: (
     [storage_value, setting_attribute_value],
     block {
         assert-local-storage: {"rustdoc-go-to-only-result": |storage_value|}
-        click: "#settings-menu"
+        click: "rustdoc-toolbar .settings-menu"
         wait-for: "#settings"
         assert-property: ("#go-to-only-result", {"checked": |setting_attribute_value|})
     }
@@ -25,7 +25,7 @@ wait-for: "#search"
 assert-document-property: ({"URL": "/lib2/index.html"}, CONTAINS)
 
 // Now we change its value.
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 click: "#go-to-only-result"
 assert-local-storage: {"rustdoc-go-to-only-result": "true"}
diff --git a/tests/rustdoc-gui/settings-button.goml b/tests/rustdoc-gui/settings-button.goml
index d78034769e2..28ce06207aa 100644
--- a/tests/rustdoc-gui/settings-button.goml
+++ b/tests/rustdoc-gui/settings-button.goml
@@ -9,7 +9,7 @@ define-function: (
     [theme, filter],
     block {
         call-function: ("switch-theme", {"theme": |theme|})
-        assert-css: ("#settings-menu > a::before", {
+        assert-css: ("rustdoc-toolbar .settings-menu > a::before", {
             "filter": |filter|,
             "width": "18px",
             "height": "18px",
diff --git a/tests/rustdoc-gui/settings.goml b/tests/rustdoc-gui/settings.goml
index 11d3696ccf6..7a163103b5a 100644
--- a/tests/rustdoc-gui/settings.goml
+++ b/tests/rustdoc-gui/settings.goml
@@ -5,7 +5,7 @@ show-text: true // needed when we check for colors below.
 // First, we check that the settings page doesn't exist.
 assert-false: "#settings"
 // We now click on the settings button.
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 assert-css: ("#settings", {"display": "block"})
 
@@ -13,11 +13,11 @@ assert-css: ("#settings", {"display": "block"})
 store-css: (".setting-line", {"margin": setting_line_margin})
 
 // Let's close it by clicking on the same button.
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for-css: ("#settings", {"display": "none"})
 
 // Let's check that pressing "ESCAPE" is closing it.
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for-css: ("#settings", {"display": "block"})
 press-key: "Escape"
 wait-for-css: ("#settings", {"display": "none"})
@@ -28,7 +28,7 @@ write: "test"
 // To be SURE that the search will be run.
 press-key: 'Enter'
 wait-for: "#alternative-display #search"
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for-css: ("#settings", {"display": "block"})
 // Ensure that the search is still displayed.
 wait-for: "#alternative-display #search"
@@ -41,7 +41,7 @@ set-local-storage: {"rustdoc-theme": "dark", "rustdoc-use-system-theme": "false"
 // We reload the page so the local storage settings are being used.
 reload:
 
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 
 // We check that the "Use system theme" is disabled.
@@ -55,7 +55,7 @@ assert: "#preferred-light-theme.setting-line.hidden"
 assert-property: ("#theme .setting-radio-choices #theme-dark", {"checked": "true"})
 
 // Some style checks...
-move-cursor-to: "#settings-menu > a"
+move-cursor-to: "rustdoc-toolbar .settings-menu > a"
 // First we check the "default" display for radio buttons.
 assert-css: (
     "#theme-dark",
@@ -194,7 +194,7 @@ assert-css: (
         "border-width": "2px",
     },
 )
-move-cursor-to: "#settings-menu > a"
+move-cursor-to: "rustdoc-toolbar .settings-menu > a"
 // Let's now check with the focus for toggles.
 focus: "#auto-hide-large-items"
 assert-css: (
@@ -273,43 +273,43 @@ assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
 press-key: "Escape"
 press-key: "?"
 assert-false: "#help-button .popover"
-wait-for-css: ("#settings-menu .popover", {"display": "block"})
+wait-for-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "block"})
 
 // Now turn keyboard shortcuts back on, and see if they work.
 click: "#disable-shortcuts"
 assert-local-storage: {"rustdoc-disable-shortcuts": "false"}
 press-key: "Escape"
 press-key: "?"
-wait-for-css: ("#help-button .popover", {"display": "block"})
-assert-css: ("#settings-menu .popover", {"display": "none"})
+wait-for-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
+assert-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "none"})
 
 // Now switch back to the settings popover, and make sure the keyboard
 // shortcut works when a check box is selected.
-click: "#settings-menu > a"
-wait-for-css: ("#settings-menu .popover", {"display": "block"})
+click: "rustdoc-toolbar .settings-menu > a"
+wait-for-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "block"})
 focus: "#auto-hide-large-items"
 press-key: "?"
-wait-for-css: ("#settings-menu .popover", {"display": "none"})
-wait-for-css: ("#help-button .popover", {"display": "block"})
+wait-for-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "none"})
+wait-for-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
 
 // Now switch back to the settings popover, and make sure the keyboard
 // shortcut works when a check box is selected.
-click: "#settings-menu > a"
-wait-for-css: ("#settings-menu .popover", {"display": "block"})
-wait-for-css: ("#help-button .popover", {"display": "none"})
+click: "rustdoc-toolbar .settings-menu > a"
+wait-for-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "block"})
+assert-false: "rustdoc-toolbar .help-menu .popover"
 focus: "#theme-system-preference"
 press-key: "?"
-wait-for-css: ("#settings-menu .popover", {"display": "none"})
-wait-for-css: ("#help-button .popover", {"display": "block"})
+wait-for-css: ("rustdoc-toolbar .settings-menu .popover", {"display": "none"})
+wait-for-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
 
 // Now we go to the settings page to check that the CSS is loaded as expected.
 go-to: "file://" + |DOC_PATH| + "/settings.html"
 wait-for: "#settings"
-assert-false: "#settings-menu"
+assert-false: "rustdoc-toolbar .settings-menu"
 assert-css: (".setting-radio", {"cursor": "pointer"})
 
 assert-attribute-false: ("#settings", {"class": "popover"}, CONTAINS)
-compare-elements-position: (".sub form", "#settings", ["x"])
+compare-elements-position: (".main-heading", "#settings", ["x"])
 
 // Check that setting-line has the same margin in this mode as in the popover.
 assert-css: (".setting-line", {"margin": |setting_line_margin|})
diff --git a/tests/rustdoc-gui/shortcuts.goml b/tests/rustdoc-gui/shortcuts.goml
index 5a6171d6f76..b27cf8c407d 100644
--- a/tests/rustdoc-gui/shortcuts.goml
+++ b/tests/rustdoc-gui/shortcuts.goml
@@ -8,9 +8,9 @@ press-key: "Escape"
 assert-false: "input.search-input:focus"
 // We now check for the help popup.
 press-key: "?"
-assert-css: ("#help-button .popover", {"display": "block"})
+assert-css: ("rustdoc-toolbar .help-menu .popover", {"display": "block"})
 press-key: "Escape"
-assert-css: ("#help-button .popover", {"display": "none"})
+assert-false: "rustdoc-toolbar .help-menu .popover"
 // Checking doc collapse and expand.
 // It should be displaying a "-":
 assert-text: ("#toggle-all-docs", "Summary")
diff --git a/tests/rustdoc-gui/sidebar-mobile.goml b/tests/rustdoc-gui/sidebar-mobile.goml
index 6ddc07c6481..f828516d762 100644
--- a/tests/rustdoc-gui/sidebar-mobile.goml
+++ b/tests/rustdoc-gui/sidebar-mobile.goml
@@ -17,7 +17,7 @@ assert-css: (".sidebar", {"display": "block", "left": "-1000px"})
 focus: ".sidebar-elems h3 a"
 assert-css: (".sidebar", {"display": "block", "left": "0px"})
 // When we tab out of the sidebar, close it.
-focus: ".search-input"
+focus: "#search-button"
 assert-css: (".sidebar", {"display": "block", "left": "-1000px"})
 
 // Open the sidebar menu.
@@ -43,7 +43,7 @@ press-key: "Escape"
 assert-css: (".sidebar", {"display": "block", "left": "-1000px"})
 
 // Check that the topbar is visible
-assert-property: (".mobile-topbar", {"clientHeight": "45"})
+assert-property: ("rustdoc-topbar", {"clientHeight": "45"})
 
 // Check that clicking an element from the sidebar scrolls to the right place
 // so the target is not obscured by the topbar.
@@ -54,7 +54,7 @@ assert-position: ("#method\.must_use", {"y": 46})
 // Check that the bottom-most item on the sidebar menu can be scrolled fully into view.
 click: ".sidebar-menu-toggle"
 scroll-to: ".block.keyword li:nth-child(1)"
-compare-elements-position-near: (".block.keyword li:nth-child(1)", ".mobile-topbar", {"y": 544})
+compare-elements-position-near: (".block.keyword li:nth-child(1)", "rustdoc-topbar", {"y": 544})
 
 // Now checking the background color of the sidebar.
 // Close the sidebar menu.
@@ -65,7 +65,7 @@ define-function: (
     "check-colors",
     [theme, color, background],
     block {
-        call-function: ("switch-theme", {"theme": |theme|})
+        call-function: ("switch-theme-mobile", {"theme": |theme|})
         reload:
 
         // Open the sidebar menu.
diff --git a/tests/rustdoc-gui/sidebar-resize-close-popover.goml b/tests/rustdoc-gui/sidebar-resize-close-popover.goml
index 2d26caf1a39..d3fea9b0f40 100644
--- a/tests/rustdoc-gui/sidebar-resize-close-popover.goml
+++ b/tests/rustdoc-gui/sidebar-resize-close-popover.goml
@@ -2,7 +2,7 @@
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 assert-property: (".sidebar", {"clientWidth": "199"})
 show-text: true
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 assert-css: ("#settings", {"display": "block"})
 // normal resizing
@@ -12,7 +12,7 @@ assert-css: ("#settings", {"display": "none"})
 
 // Now same thing, but for source code
 go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 assert-css: ("#settings", {"display": "block"})
 assert-property: (".sidebar", {"clientWidth": "49"})
diff --git a/tests/rustdoc-gui/sidebar-resize-setting.goml b/tests/rustdoc-gui/sidebar-resize-setting.goml
index e346fe6aeac..a4572c670f8 100644
--- a/tests/rustdoc-gui/sidebar-resize-setting.goml
+++ b/tests/rustdoc-gui/sidebar-resize-setting.goml
@@ -4,7 +4,7 @@ assert-property: (".sidebar", {"clientWidth": "199"})
 show-text: true
 
 // Verify that the "hide" option is unchecked
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#settings"
 assert-css: ("#settings", {"display": "block"})
 assert-property: ("#hide-sidebar", {"checked": "false"})
@@ -15,7 +15,7 @@ drag-and-drop: ((205, 100), (5, 100))
 assert-css: (".sidebar", {"display": "none"})
 
 // Verify that the "hide" option is checked
-focus: "#settings-menu a"
+focus: "rustdoc-toolbar .settings-menu a"
 press-key: "Enter"
 wait-for-css: ("#settings", {"display": "block"})
 assert-property: ("#hide-sidebar", {"checked": "true"})
@@ -24,28 +24,28 @@ wait-for-css: (".sidebar", {"display": "block"})
 
 // Verify that hiding the sidebar hides the source sidebar
 // and puts the button in static position mode on mobile
-go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
+go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 set-window-size: (600, 600)
-focus: "#settings-menu a"
+focus: "rustdoc-topbar .settings-menu a"
 press-key: "Enter"
 wait-for-css: ("#settings", {"display": "block"})
+wait-for-css: ("#sidebar-button", {"position": "static"})
+assert-property: ("#hide-sidebar", {"checked": "false"})
+click: "#hide-sidebar"
+wait-for-css: (".sidebar", {"display": "none"})
 wait-for-css: ("#sidebar-button", {"position": "fixed"})
 store-position: ("#sidebar-button", {
     "y": sidebar_button_y,
     "x": sidebar_button_x,
 })
-assert-property: ("#hide-sidebar", {"checked": "false"})
-click: "#hide-sidebar"
-wait-for-css: (".sidebar", {"display": "none"})
-wait-for-css: ("#sidebar-button", {"position": "static"})
-assert-position: ("#sidebar-button", {
-    "y": |sidebar_button_y|,
-    "x": |sidebar_button_x|,
-})
 assert-property: ("#hide-sidebar", {"checked": "true"})
 press-key: "Escape"
 // Clicking the sidebar button should work, and implicitly re-enable
 // the persistent navigation bar
 wait-for-css: ("#settings", {"display": "none"})
+assert-position: ("#sidebar-button", {
+    "y": |sidebar_button_y|,
+    "x": |sidebar_button_x|,
+})
 click: "#sidebar-button"
 wait-for-css: (".sidebar", {"display": "block"})
diff --git a/tests/rustdoc-gui/sidebar-source-code-display.goml b/tests/rustdoc-gui/sidebar-source-code-display.goml
index 1e77bcc2273..99810cd7863 100644
--- a/tests/rustdoc-gui/sidebar-source-code-display.goml
+++ b/tests/rustdoc-gui/sidebar-source-code-display.goml
@@ -141,7 +141,7 @@ click: "#sidebar-button"
 wait-for-css: (".src .sidebar > *", {"visibility": "hidden"})
 // We scroll to line 117 to change the scroll position.
 scroll-to: '//*[@id="117"]'
-store-value: (y_offset, "2578")
+store-value: (y_offset, "2567")
 assert-window-property: {"pageYOffset": |y_offset|}
 // Expanding the sidebar...
 click: "#sidebar-button"
diff --git a/tests/rustdoc-gui/sidebar-source-code.goml b/tests/rustdoc-gui/sidebar-source-code.goml
index 6afccf6a95f..0ac88612cef 100644
--- a/tests/rustdoc-gui/sidebar-source-code.goml
+++ b/tests/rustdoc-gui/sidebar-source-code.goml
@@ -85,4 +85,4 @@ assert-false: ".src-sidebar-expanded"
 assert: "nav.sidebar"
 
 // Check that the topbar is not visible
-assert-false: ".mobile-topbar"
+assert-false: "rustdoc-topbar"
diff --git a/tests/rustdoc-gui/sidebar.goml b/tests/rustdoc-gui/sidebar.goml
index c0fe240e2be..5ec0008ad8a 100644
--- a/tests/rustdoc-gui/sidebar.goml
+++ b/tests/rustdoc-gui/sidebar.goml
@@ -200,7 +200,7 @@ drag-and-drop: ((205, 100), (108, 100))
 assert-position: (".sidebar-crate > h2 > a", {"x": -3})
 
 // Check that the mobile sidebar and the source sidebar use the same icon.
-store-css: (".mobile-topbar .sidebar-menu-toggle::before", {"content": image_url})
+store-css: ("rustdoc-topbar .sidebar-menu-toggle::before", {"content": image_url})
 // Then we go to a source page.
 click: ".main-heading .src"
 assert-css: ("#sidebar-button a::before", {"content": |image_url|})
@@ -212,7 +212,7 @@ assert: |sidebar_background| != |sidebar_background_hover|
 click: "#sidebar-button a"
 wait-for: "html.src-sidebar-expanded"
 assert-css: ("#sidebar-button a:hover", {"background-color": |sidebar_background_hover|})
-move-cursor-to: "#settings-menu"
+move-cursor-to: "#search-button"
 assert-css: ("#sidebar-button a:not(:hover)", {"background-color": |sidebar_background|})
 // Closing sidebar.
 click: "#sidebar-button a"
@@ -220,7 +220,7 @@ wait-for: "html:not(.src-sidebar-expanded)"
 // Now we check the same when the sidebar button is moved alongside the search.
 set-window-size: (500, 500)
 store-css: ("#sidebar-button a:hover", {"background-color": not_sidebar_background_hover})
-move-cursor-to: "#settings-menu"
+move-cursor-to: "rustdoc-toolbar #search-button"
 store-css: ("#sidebar-button a:not(:hover)", {"background-color": not_sidebar_background})
 // The sidebar background is supposed to be the same as the main background.
 assert-css: ("body", {"background-color": |not_sidebar_background|})
diff --git a/tests/rustdoc-gui/source-anchor-scroll.goml b/tests/rustdoc-gui/source-anchor-scroll.goml
index c005af1e7a1..b1cbd02ef04 100644
--- a/tests/rustdoc-gui/source-anchor-scroll.goml
+++ b/tests/rustdoc-gui/source-anchor-scroll.goml
@@ -8,13 +8,13 @@ set-window-size: (600, 800)
 assert-property: ("html", {"scrollTop": "0"})
 
 click: '//a[text() = "barbar" and @href="#5-7"]'
-assert-property: ("html", {"scrollTop": "206"})
+assert-property: ("html", {"scrollTop": "195"})
 click: '//a[text() = "bar" and @href="#28-36"]'
-assert-property: ("html", {"scrollTop": "239"})
+assert-property: ("html", {"scrollTop": "228"})
 click: '//a[normalize-space() = "sub_fn" and @href="#2-4"]'
-assert-property: ("html", {"scrollTop": "134"})
+assert-property: ("html", {"scrollTop": "123"})
 
 // We now check that clicking on lines doesn't change the scroll
 // Extra information: the "sub_fn" function header is on line 1.
 click: '//*[@id="6"]'
-assert-property: ("html", {"scrollTop": "134"})
+assert-property: ("html", {"scrollTop": "123"})
diff --git a/tests/rustdoc-gui/source-code-page.goml b/tests/rustdoc-gui/source-code-page.goml
index aa5a16aac70..5e3470dca20 100644
--- a/tests/rustdoc-gui/source-code-page.goml
+++ b/tests/rustdoc-gui/source-code-page.goml
@@ -89,9 +89,9 @@ assert-css: ("a[data-nosnippet]", {"text-align": "right"}, ALL)
 // do anything (and certainly not add a `#NaN` to the URL!).
 go-to: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html"
 // We use this assert-position to know where we will click.
-assert-position: ("//*[@id='1']", {"x": 81, "y": 169})
-// We click on the left of the "1" anchor but still in the `a[data-nosnippet]`.
-click: (77, 163)
+assert-position: ("//*[@id='1']", {"x": 81, "y": 141})
+// We click on the left of the "1" anchor but still in the "src-line-number" `<pre>`.
+click: (135, 77)
 assert-document-property: ({"URL": "/lib.rs.html"}, ENDS_WITH)
 
 // Checking the source code sidebar.
@@ -156,27 +156,8 @@ call-function: ("check-sidebar-dir-entry", {
     "y": |source_sidebar_title_y| + |source_sidebar_title_height| + 7,
 })
 
-// Check the search form
-assert-css: ("nav.sub", {"flex-direction": "row"})
-// The goal of this test is to ensure the search input is perfectly centered
-// between the top of the page and the header.
-// To check this, we maintain the invariant:
-//
-// offsetTop[nav.sub form] = offsetTop[#main-content] - offsetHeight[nav.sub form] - offsetTop[nav.sub form]
-assert-position: ("nav.sub form", {"y": 15})
-assert-property: ("nav.sub form", {"offsetHeight": 34})
-assert-position: ("h1", {"y": 68})
-// 15 = 64 - 34 - 15
-
-// Now do the same check on moderately-sized, tablet mobile.
-set-window-size: (700, 700)
-assert-css: ("nav.sub", {"flex-direction": "row"})
-assert-position: ("nav.sub form", {"y": 8})
-assert-property: ("nav.sub form", {"offsetHeight": 34})
-assert-position: ("h1", {"y": 54})
-// 8 = 50 - 34 - 8
-
 // Check the sidebar directory entries have a marker and spacing (tablet).
+set-window-size: (700, 700)
 store-property: (".src-sidebar-title", {
     "offsetHeight": source_sidebar_title_height,
     "offsetTop": source_sidebar_title_y,
@@ -187,11 +168,8 @@ call-function: ("check-sidebar-dir-entry", {
     "y": |source_sidebar_title_y| + |source_sidebar_title_height| + 7,
 })
 
-// Tiny, phone mobile gets a different display where the logo is stacked on top.
-set-window-size: (450, 700)
-assert-css: ("nav.sub", {"flex-direction": "column"})
-
 // Check the sidebar directory entries have a marker and spacing (phone).
+set-window-size: (450, 700)
 store-property: (".src-sidebar-title", {
     "offsetHeight": source_sidebar_title_height,
     "offsetTop": source_sidebar_title_y,
diff --git a/tests/rustdoc-gui/source-code-wrapping.goml b/tests/rustdoc-gui/source-code-wrapping.goml
index 0dab9c72ea9..c1fc2835c89 100644
--- a/tests/rustdoc-gui/source-code-wrapping.goml
+++ b/tests/rustdoc-gui/source-code-wrapping.goml
@@ -13,7 +13,7 @@ define-function: (
 )
 
 store-size: (".rust code", {"width": width, "height": height})
-click: "#settings-menu"
+click: "main .settings-menu"
 wait-for: "#settings"
 call-function: ("click-code-wrapping", {"expected": "true"})
 wait-for-size-false: (".rust code", {"width": |width|, "height": |height|})
@@ -28,7 +28,7 @@ assert-size: (".rust code", {"width": |width|, "height": |height|})
 
 // Now let's check in docs code examples.
 go-to: "file://" + |DOC_PATH| + "/test_docs/trait_bounds/index.html"
-click: "#settings-menu"
+click: "main .settings-menu"
 wait-for: "#settings"
 
 store-property: (".example-wrap .rust code", {"scrollWidth": rust_width, "scrollHeight": rust_height})
diff --git a/tests/rustdoc-gui/theme-change.goml b/tests/rustdoc-gui/theme-change.goml
index 58987110509..3860596e343 100644
--- a/tests/rustdoc-gui/theme-change.goml
+++ b/tests/rustdoc-gui/theme-change.goml
@@ -7,7 +7,7 @@ store-value: (background_light, "white")
 store-value: (background_dark, "#353535")
 store-value: (background_ayu, "#0f1419")
 
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#theme-ayu"
 click: "#theme-ayu"
 // should be the ayu theme so let's check the color.
@@ -75,7 +75,7 @@ store-value: (background_dark, "#353535")
 store-value: (background_ayu, "#0f1419")
 store-value: (background_custom_theme, "red")
 
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#theme-ayu"
 click: "#theme-ayu"
 // should be the ayu theme so let's check the color.
diff --git a/tests/rustdoc-gui/theme-defaults.goml b/tests/rustdoc-gui/theme-defaults.goml
index 2cc5d716cfe..12c17166e87 100644
--- a/tests/rustdoc-gui/theme-defaults.goml
+++ b/tests/rustdoc-gui/theme-defaults.goml
@@ -1,6 +1,6 @@
 // Ensure that the theme picker always starts with the actual defaults.
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#theme-system-preference"
 assert: "#theme-system-preference:checked"
 assert: "#preferred-light-theme-light:checked"
@@ -16,7 +16,7 @@ set-local-storage: {
     "rustdoc-theme": "ayu"
 }
 go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
-click: "#settings-menu"
+click: "rustdoc-toolbar .settings-menu"
 wait-for: "#theme-system-preference"
 assert: "#theme-system-preference:checked"
 assert: "#preferred-light-theme-light:checked"
diff --git a/tests/rustdoc-gui/toggle-click-deadspace.goml b/tests/rustdoc-gui/toggle-click-deadspace.goml
index caca1b61493..c6d13973087 100644
--- a/tests/rustdoc-gui/toggle-click-deadspace.goml
+++ b/tests/rustdoc-gui/toggle-click-deadspace.goml
@@ -13,4 +13,4 @@ assert-attribute-false: (".impl-items .toggle", {"open": ""})
 // Click the "Trait" part of "impl Trait" and verify it navigates.
 click: "#impl-Trait-for-Foo h3 a:first-of-type"
 assert-text: (".main-heading .rustdoc-breadcrumbs", "lib2")
-assert-text: (".main-heading h1", "Trait TraitCopy item path")
+assert-text: (".main-heading h1", "Trait Trait Copy item path")
diff --git a/tests/rustdoc-gui/toggle-docs-mobile.goml b/tests/rustdoc-gui/toggle-docs-mobile.goml
index 6a40ba83b84..d038ebcdd6f 100644
--- a/tests/rustdoc-gui/toggle-docs-mobile.goml
+++ b/tests/rustdoc-gui/toggle-docs-mobile.goml
@@ -3,12 +3,12 @@
 go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"
 set-window-size: (433, 600)
 assert-attribute: (".top-doc", {"open": ""})
-click: (4, 270) // This is the position of the top doc comment toggle
+click: (4, 230) // This is the position of the top doc comment toggle
 assert-attribute-false: (".top-doc", {"open": ""})
-click: (4, 270)
+click: (4, 230)
 assert-attribute: (".top-doc", {"open": ""})
 // To ensure that the toggle isn't over the text, we check that the toggle isn't clicked.
-click: (3, 270)
+click: (3, 230)
 assert-attribute: (".top-doc", {"open": ""})
 
 // Assert the position of the toggle on the top doc block.
@@ -24,12 +24,12 @@ assert-position: (
 // Now we do the same but with a little bigger width
 set-window-size: (600, 600)
 assert-attribute: (".top-doc", {"open": ""})
-click: (4, 270) // New Y position since all search elements are back on one line.
+click: (4, 230) // New Y position since all search elements are back on one line.
 assert-attribute-false: (".top-doc", {"open": ""})
-click: (4, 270)
+click: (4, 230)
 assert-attribute: (".top-doc", {"open": ""})
 // To ensure that the toggle isn't over the text, we check that the toggle isn't clicked.
-click: (3, 270)
+click: (3, 230)
 assert-attribute: (".top-doc", {"open": ""})
 
 // Same check on trait items.
diff --git a/tests/rustdoc-gui/toggle-docs.goml b/tests/rustdoc-gui/toggle-docs.goml
index 4607c604eeb..9eea687f74e 100644
--- a/tests/rustdoc-gui/toggle-docs.goml
+++ b/tests/rustdoc-gui/toggle-docs.goml
@@ -64,7 +64,7 @@ define-function: (
             "filter": |filter|,
         })
         // moving the cursor somewhere else to not mess with next function calls.
-        move-cursor-to: ".search-input"
+        move-cursor-to: "#search-button"
     },
 )
 
diff --git a/tests/rustdoc-gui/type-declation-overflow.goml b/tests/rustdoc-gui/type-declation-overflow.goml
index 4f8fe78ea4d..e53d7f00d93 100644
--- a/tests/rustdoc-gui/type-declation-overflow.goml
+++ b/tests/rustdoc-gui/type-declation-overflow.goml
@@ -47,27 +47,27 @@ assert-property: ("pre.item-decl", {"scrollWidth": "950"})
 set-window-size: (600, 600)
 go-to: "file://" + |DOC_PATH| + "/lib2/too_long/struct.SuperIncrediblyLongLongLongLongLongLongLongGigaGigaGigaMegaLongLongLongStructName.html"
 // It shouldn't have an overflow in the topbar either.
-store-property: (".mobile-topbar", {"scrollWidth": scrollWidth})
-assert-property: (".mobile-topbar", {"clientWidth": |scrollWidth|})
-assert-css: (".mobile-topbar h2", {"overflow-x": "hidden"})
+store-property: ("rustdoc-topbar", {"scrollWidth": scrollWidth})
+assert-property: ("rustdoc-topbar", {"clientWidth": |scrollWidth|}, NEAR)
+assert-css: ("rustdoc-topbar h2", {"overflow-x": "hidden"})
 
 // Check that main heading and toolbar go side-by-side, both on desktop and on mobile.
 set-window-size: (1100, 800)
 go-to: "file://" + |DOC_PATH| + "/lib2/too_long/struct.SuperIncrediblyLongLongLongLongLongLongLongGigaGigaGigaMegaLongLongLongStructName.html"
-compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar", ["y"])
-compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar", {"x": 550})
+compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", ["y"])
+compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", {"x": 300})
 go-to: "file://" + |DOC_PATH| + "/lib2/index.html"
-compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar", ["y"])
-compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar", {"x": 550})
+compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", ["y"])
+compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", {"x": 300})
 
 // On mobile, they always wrap.
 set-window-size: (600, 600)
 go-to: "file://" + |DOC_PATH| + "/lib2/too_long/struct.SuperIncrediblyLongLongLongLongLongLongLongGigaGigaGigaMegaLongLongLongStructName.html"
-compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar", ["y"])
-compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar", {"x": 200})
+compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", ["y"])
+compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", {"x": 200})
 go-to: "file://" + |DOC_PATH| + "/lib2/index.html"
-compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar", ["y"])
-compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar", {"x": 200})
+compare-elements-position: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", ["y"])
+compare-elements-position-near-false: (".main-heading h1", ".main-heading rustdoc-toolbar #search-button", {"x": 200})
 
 // Now we will check that the scrolling is working.
 // First on an item with "hidden methods".
diff --git a/tests/rustdoc-gui/utils.goml b/tests/rustdoc-gui/utils.goml
index 844dc98a537..10439309402 100644
--- a/tests/rustdoc-gui/utils.goml
+++ b/tests/rustdoc-gui/utils.goml
@@ -5,14 +5,47 @@ define-function: (
     block {
         // Set the theme.
         // Open the settings menu.
-        click: "#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: "#settings-menu"
+        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 {
+        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"
+    }
+)
diff --git a/tests/rustdoc-js-std/alias-1.js b/tests/rustdoc-js-std/alias-1.js
index c31d1a3b1ad..b8f8db1f629 100644
--- a/tests/rustdoc-js-std/alias-1.js
+++ b/tests/rustdoc-js-std/alias-1.js
@@ -6,5 +6,10 @@ const EXPECTED = {
             'name': 'reference',
             'desc': "References, <code>&amp;T</code> and <code>&amp;mut T</code>.",
         },
+        {
+            'path': 'std::ops',
+            'name': 'BitAnd',
+            'desc': "The bitwise AND operator <code>&amp;</code>.",
+        },
     ],
 };
diff --git a/tests/rustdoc-js-std/alias-2.js b/tests/rustdoc-js-std/alias-2.js
index 5735b573bcb..9e97501e443 100644
--- a/tests/rustdoc-js-std/alias-2.js
+++ b/tests/rustdoc-js-std/alias-2.js
@@ -1,9 +1,7 @@
 const EXPECTED = {
     'query': '+',
     'others': [
-        { 'path': 'std::ops', 'name': 'AddAssign' },
         { 'path': 'std::ops', 'name': 'Add' },
-        { 'path': 'core::ops', 'name': 'AddAssign' },
-        { 'path': 'core::ops', 'name': 'Add' },
+        { 'path': 'std::ops', 'name': 'AddAssign' },
     ],
 };
diff --git a/tests/rustdoc-js-std/basic.js b/tests/rustdoc-js-std/basic.js
index baff24b0af6..74467f0eef1 100644
--- a/tests/rustdoc-js-std/basic.js
+++ b/tests/rustdoc-js-std/basic.js
@@ -9,6 +9,6 @@ const EXPECTED = {
         { 'path': 'std::str', 'name': 'eq' },
     ],
     'returned': [
-        { 'path': 'std::string::String', 'name': 'add' },
+        { 'path': 'std::string::String', 'name': 'new' },
     ],
 };
diff --git a/tests/rustdoc-js-std/parser-bindings.js b/tests/rustdoc-js-std/parser-bindings.js
index bd379f139ff..e00e3088303 100644
--- a/tests/rustdoc-js-std/parser-bindings.js
+++ b/tests/rustdoc-js-std/parser-bindings.js
@@ -20,12 +20,12 @@ const PARSED = [
                                 pathLast: "c",
                                 normalizedPathLast: "c",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ]
                     ],
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -51,11 +51,11 @@ const PARSED = [
                             pathWithoutLast: [],
                             pathLast: "c",
                             generics: [],
-                            typeFilter: -1,
+                            typeFilter: null,
                         }]
                     ],
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -81,11 +81,11 @@ const PARSED = [
                             pathWithoutLast: [],
                             pathLast: "never",
                             generics: [],
-                            typeFilter: 1,
+                            typeFilter: "primitive",
                         }]
                     ],
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -111,11 +111,11 @@ const PARSED = [
                             pathWithoutLast: [],
                             pathLast: "[]",
                             generics: [],
-                            typeFilter: 1,
+                            typeFilter: "primitive",
                         }]
                     ],
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -147,14 +147,14 @@ const PARSED = [
                                     pathWithoutLast: [],
                                     pathLast: "never",
                                     generics: [],
-                                    typeFilter: 1,
+                                    typeFilter: "primitive",
                                 },
                             ],
-                            typeFilter: 1,
+                            typeFilter: "primitive",
                         }]
                     ],
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -213,7 +213,7 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "c",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                             {
                                 name: "X",
@@ -221,12 +221,12 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "x",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
                     ],
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
diff --git a/tests/rustdoc-js-std/parser-errors.js b/tests/rustdoc-js-std/parser-errors.js
index 8bffef61c8f..49150cbd570 100644
--- a/tests/rustdoc-js-std/parser-errors.js
+++ b/tests/rustdoc-js-std/parser-errors.js
@@ -406,10 +406,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "x",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "y",
@@ -417,7 +417,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "y",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -440,7 +440,7 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "x",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                     {
                         name: "y",
@@ -448,10 +448,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "y",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -468,7 +468,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "p",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "x",
@@ -476,7 +476,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "x",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "y",
@@ -484,7 +484,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "y",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 3,
diff --git a/tests/rustdoc-js-std/parser-filter.js b/tests/rustdoc-js-std/parser-filter.js
index cda950461f7..569ef9aa96c 100644
--- a/tests/rustdoc-js-std/parser-filter.js
+++ b/tests/rustdoc-js-std/parser-filter.js
@@ -7,7 +7,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "foo",
             generics: [],
-            typeFilter: 7,
+            typeFilter: "fn",
         }],
         foundElems: 1,
         userQuery: "fn:foo",
@@ -22,7 +22,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "foo",
             generics: [],
-            typeFilter: 6,
+            typeFilter: "enum",
         }],
         foundElems: 1,
         userQuery: "enum : foo",
@@ -45,7 +45,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "macro",
             generics: [],
-            typeFilter: 16,
+            typeFilter: "macro",
         }],
         foundElems: 1,
         userQuery: "macro!",
@@ -60,7 +60,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "mac",
             generics: [],
-            typeFilter: 16,
+            typeFilter: "macro",
         }],
         foundElems: 1,
         userQuery: "macro:mac!",
@@ -75,7 +75,7 @@ const PARSED = [
             pathWithoutLast: ["a"],
             pathLast: "mac",
             generics: [],
-            typeFilter: 16,
+            typeFilter: "macro",
         }],
         foundElems: 1,
         userQuery: "a::mac!",
@@ -93,7 +93,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "foo",
             generics: [],
-            typeFilter: 7,
+            typeFilter: "fn",
         }],
         error: null,
     },
@@ -114,10 +114,10 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "bar",
                     generics: [],
-                    typeFilter: 7,
+                    typeFilter: "fn",
                 }
             ],
-            typeFilter: 7,
+            typeFilter: "fn",
         }],
         error: null,
     },
@@ -138,7 +138,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "bar",
                     generics: [],
-                    typeFilter: 7,
+                    typeFilter: "fn",
                 },
                 {
                     name: "baz::fuzz",
@@ -146,10 +146,10 @@ const PARSED = [
                     pathWithoutLast: ["baz"],
                     pathLast: "fuzz",
                     generics: [],
-                    typeFilter: 6,
+                    typeFilter: "enum",
                 },
             ],
-            typeFilter: 7,
+            typeFilter: "fn",
         }],
         error: null,
     },
diff --git a/tests/rustdoc-js-std/parser-generics.js b/tests/rustdoc-js-std/parser-generics.js
index 8b8d95bcb88..deaa0adbc63 100644
--- a/tests/rustdoc-js-std/parser-generics.js
+++ b/tests/rustdoc-js-std/parser-generics.js
@@ -16,7 +16,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "p",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "u8",
@@ -24,7 +24,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -49,7 +49,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -82,7 +82,7 @@ const PARSED = [
                         ],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -122,7 +122,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -162,7 +162,7 @@ const PARSED = [
                         ],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
diff --git a/tests/rustdoc-js-std/parser-hof.js b/tests/rustdoc-js-std/parser-hof.js
index ca761015412..5de232a66cd 100644
--- a/tests/rustdoc-js-std/parser-hof.js
+++ b/tests/rustdoc-js-std/parser-hof.js
@@ -25,11 +25,11 @@ const PARSED = [
                                 generics: [],
                             },
                         ],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(-> F<P>)",
@@ -53,11 +53,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "p",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(-> P)",
@@ -81,11 +81,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "a",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(->,a)",
@@ -113,7 +113,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             }],
             bindings: [
                 [
@@ -121,7 +121,7 @@ const PARSED = [
                     [],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(F<P> ->)",
@@ -141,7 +141,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "p",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             }],
             bindings: [
                 [
@@ -149,7 +149,7 @@ const PARSED = [
                     [],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(P ->)",
@@ -169,7 +169,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "a",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             }],
             bindings: [
                 [
@@ -177,7 +177,7 @@ const PARSED = [
                     [],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(,a->)",
@@ -197,7 +197,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "aaaaa",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             }],
             bindings: [
                 [
@@ -208,11 +208,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "a",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(aaaaa->a)",
@@ -233,7 +233,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "aaaaa",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
                 {
                     name: "b",
@@ -241,7 +241,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "b",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
             ],
             bindings: [
@@ -253,11 +253,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "a",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(aaaaa, b -> a)",
@@ -278,7 +278,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "aaaaa",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
                 {
                     name: "b",
@@ -286,7 +286,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "b",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
             ],
             bindings: [
@@ -298,11 +298,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "a",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "primitive:(aaaaa, b -> a)",
@@ -318,7 +318,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "x",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "->",
@@ -332,7 +332,7 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "aaaaa",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                     {
                         name: "b",
@@ -340,7 +340,7 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "b",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
                 bindings: [
@@ -352,11 +352,11 @@ const PARSED = [
                             pathWithoutLast: [],
                             pathLast: "a",
                             generics: [],
-                            typeFilter: -1,
+                            typeFilter: null,
                         }],
                     ],
                 ],
-                typeFilter: 10,
+                typeFilter: "trait",
             }
         ],
         foundElems: 2,
@@ -390,11 +390,11 @@ const PARSED = [
                                 generics: [],
                             },
                         ],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "Fn () -> F<P>",
@@ -418,11 +418,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "p",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "FnMut() -> P",
@@ -446,11 +446,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "p",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "(FnMut() -> P)",
@@ -478,7 +478,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             }],
             bindings: [
                 [
@@ -486,7 +486,7 @@ const PARSED = [
                     [],
                 ],
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "Fn(F<P>)",
@@ -507,7 +507,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "aaaaa",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
                 {
                     name: "b",
@@ -515,7 +515,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "b",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
             ],
             bindings: [
@@ -527,11 +527,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "a",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     }],
                 ],
             ],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "primitive:fnonce(aaaaa, b) -> a",
@@ -552,7 +552,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "aaaaa",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 },
                 {
                     name: "b",
@@ -560,7 +560,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "b",
                     generics: [],
-                    typeFilter: 0,
+                    typeFilter: "keyword",
                 },
             ],
             bindings: [
@@ -572,11 +572,11 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "a",
                         generics: [],
-                        typeFilter: 10,
+                        typeFilter: "trait",
                     }],
                 ],
             ],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "primitive:fnonce(aaaaa, keyword:b) -> trait:a",
@@ -592,7 +592,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "x",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "fn",
@@ -612,7 +612,7 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "aaaaa",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                             {
                                 name: "b",
@@ -620,7 +620,7 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "b",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
                         bindings: [
@@ -632,11 +632,11 @@ const PARSED = [
                                     pathWithoutLast: [],
                                     pathLast: "a",
                                     generics: [],
-                                    typeFilter: -1,
+                                    typeFilter: null,
                                 }],
                             ],
                         ],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
                 bindings: [
@@ -645,7 +645,7 @@ const PARSED = [
                         [],
                     ]
                 ],
-                typeFilter: 10,
+                typeFilter: "trait",
             }
         ],
         foundElems: 2,
@@ -662,7 +662,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "a",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "b",
@@ -675,7 +675,7 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "c",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 }],
                 bindings: [
                     [
@@ -683,7 +683,7 @@ const PARSED = [
                         [],
                     ]
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             }
         ],
         foundElems: 2,
diff --git a/tests/rustdoc-js-std/parser-ident.js b/tests/rustdoc-js-std/parser-ident.js
index f65391b1571..5366ac847b0 100644
--- a/tests/rustdoc-js-std/parser-ident.js
+++ b/tests/rustdoc-js-std/parser-ident.js
@@ -13,10 +13,10 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "never",
                     generics: [],
-                    typeFilter: 1,
+                    typeFilter: "primitive",
                 },
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "R<!>",
@@ -31,7 +31,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "never",
             generics: [],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "!",
@@ -46,7 +46,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "a",
             generics: [],
-            typeFilter: 16,
+            typeFilter: "macro",
         }],
         foundElems: 1,
         userQuery: "a!",
@@ -77,7 +77,7 @@ const PARSED = [
             pathWithoutLast: ["never"],
             pathLast: "b",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "!::b",
@@ -122,10 +122,10 @@ const PARSED = [
                     pathWithoutLast: [],
                     pathLast: "t",
                     generics: [],
-                    typeFilter: -1,
+                    typeFilter: null,
                 }
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "!::b<T>",
diff --git a/tests/rustdoc-js-std/parser-literal.js b/tests/rustdoc-js-std/parser-literal.js
index 63e07a246a1..803929b74fd 100644
--- a/tests/rustdoc-js-std/parser-literal.js
+++ b/tests/rustdoc-js-std/parser-literal.js
@@ -15,7 +15,7 @@ const PARSED = [
                     generics: [],
                 },
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "R<P>",
diff --git a/tests/rustdoc-js-std/parser-paths.js b/tests/rustdoc-js-std/parser-paths.js
index bb34e22e518..3ddd6572277 100644
--- a/tests/rustdoc-js-std/parser-paths.js
+++ b/tests/rustdoc-js-std/parser-paths.js
@@ -7,7 +7,7 @@ const PARSED = [
             pathWithoutLast: ["a"],
             pathLast: "b",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "A::B",
@@ -22,7 +22,7 @@ const PARSED = [
             pathWithoutLast: ["a"],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: 'a:: a',
@@ -37,7 +37,7 @@ const PARSED = [
             pathWithoutLast: ["a"],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: 'a ::a',
@@ -52,7 +52,7 @@ const PARSED = [
             pathWithoutLast: ["a"],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: 'a  ::  a',
@@ -68,7 +68,7 @@ const PARSED = [
                 pathWithoutLast: ["a"],
                 pathLast: "b",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "C",
@@ -76,7 +76,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "c",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -101,7 +101,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: "C",
@@ -109,7 +109,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "c",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -125,7 +125,7 @@ const PARSED = [
             pathWithoutLast: ["mod"],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "mod::a",
diff --git a/tests/rustdoc-js-std/parser-quote.js b/tests/rustdoc-js-std/parser-quote.js
index b485047e385..d5a9863367f 100644
--- a/tests/rustdoc-js-std/parser-quote.js
+++ b/tests/rustdoc-js-std/parser-quote.js
@@ -10,7 +10,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "p",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         error: null,
     },
@@ -22,7 +22,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "p",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: '"p",',
diff --git a/tests/rustdoc-js-std/parser-reference.js b/tests/rustdoc-js-std/parser-reference.js
index 0fa07ae9895..b17dad5fb1f 100644
--- a/tests/rustdoc-js-std/parser-reference.js
+++ b/tests/rustdoc-js-std/parser-reference.js
@@ -42,16 +42,16 @@ const PARSED = [
                                         pathWithoutLast: [],
                                         pathLast: "d",
                                         generics: [],
-                                        typeFilter: -1,
+                                        typeFilter: null,
                                     },
                                 ],
-                                typeFilter: 1,
+                                typeFilter: "primitive",
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
             {
                 name: "[]",
@@ -59,7 +59,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "[]",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 2,
@@ -100,19 +100,19 @@ const PARSED = [
                                                 pathWithoutLast: [],
                                                 pathLast: "d",
                                                 generics: [],
-                                                typeFilter: -1,
+                                                typeFilter: null,
                                             },
                                         ],
-                                        typeFilter: 1,
+                                        typeFilter: "primitive",
                                     },
                                 ],
-                                typeFilter: 1,
+                                typeFilter: "primitive",
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -129,7 +129,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "reference",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -152,10 +152,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "mut",
                         generics: [],
-                        typeFilter: 0,
+                        typeFilter: "keyword",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -172,7 +172,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "reference",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
             {
                 name: "u8",
@@ -180,7 +180,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -203,10 +203,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "mut",
                         generics: [],
-                        typeFilter: 0,
+                        typeFilter: "keyword",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
             {
                 name: "u8",
@@ -214,7 +214,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -237,10 +237,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -269,13 +269,13 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "u8",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -304,13 +304,13 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "u8",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -339,10 +339,10 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "u8",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                     {
                         name: "u8",
@@ -350,10 +350,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -382,13 +382,13 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "u8",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -417,7 +417,7 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "mut",
                                 generics: [],
-                                typeFilter: 0,
+                                typeFilter: "keyword",
                             },
                             {
                                 name: "u8",
@@ -425,10 +425,10 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "u8",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                     {
                         name: "u8",
@@ -436,10 +436,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -462,10 +462,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -496,10 +496,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: 16,
+                        typeFilter: "macro",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
diff --git a/tests/rustdoc-js-std/parser-returned.js b/tests/rustdoc-js-std/parser-returned.js
index 30ce26a8920..67aabdacb04 100644
--- a/tests/rustdoc-js-std/parser-returned.js
+++ b/tests/rustdoc-js-std/parser-returned.js
@@ -18,7 +18,7 @@ const PARSED = [
                     generics: [],
                 },
             ],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         error: null,
     },
@@ -33,7 +33,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "p",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         error: null,
     },
@@ -48,7 +48,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         error: null,
     },
@@ -60,7 +60,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "aaaaa",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 2,
         userQuery: "aaaaa->a",
@@ -70,7 +70,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         error: null,
     },
@@ -85,7 +85,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "never",
             generics: [],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         error: null,
     },
@@ -97,7 +97,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "a",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "a->",
@@ -113,7 +113,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "never",
             generics: [],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "!->",
@@ -129,7 +129,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "never",
             generics: [],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "! ->",
@@ -145,7 +145,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "never",
             generics: [],
-            typeFilter: 1,
+            typeFilter: "primitive",
         }],
         foundElems: 1,
         userQuery: "primitive:!->",
diff --git a/tests/rustdoc-js-std/parser-separators.js b/tests/rustdoc-js-std/parser-separators.js
index cf271c80cdc..2f41211d783 100644
--- a/tests/rustdoc-js-std/parser-separators.js
+++ b/tests/rustdoc-js-std/parser-separators.js
@@ -10,7 +10,7 @@ const PARSED = [
                 pathWithoutLast: ['aaaaaa'],
                 pathLast: 'b',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -27,7 +27,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: 'aaaaaa',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: 'b',
@@ -35,7 +35,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: 'b',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -52,7 +52,7 @@ const PARSED = [
                 pathWithoutLast: ['a'],
                 pathLast: 'b',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -69,7 +69,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: 'a',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
             {
                 name: 'b',
@@ -77,7 +77,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: 'b',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -94,7 +94,7 @@ const PARSED = [
                 pathWithoutLast: ['a'],
                 pathLast: 'b',
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -119,7 +119,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -151,7 +151,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -176,7 +176,7 @@ const PARSED = [
                         generics: [],
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
diff --git a/tests/rustdoc-js-std/parser-slice-array.js b/tests/rustdoc-js-std/parser-slice-array.js
index 65797945535..c587eb9001f 100644
--- a/tests/rustdoc-js-std/parser-slice-array.js
+++ b/tests/rustdoc-js-std/parser-slice-array.js
@@ -34,7 +34,7 @@ const PARSED = [
                                         pathWithoutLast: [],
                                         pathLast: "d",
                                         generics: [],
-                                        typeFilter: -1,
+                                        typeFilter: null,
                                     },
                                     {
                                         name: "[]",
@@ -42,16 +42,16 @@ const PARSED = [
                                         pathWithoutLast: [],
                                         pathLast: "[]",
                                         generics: [],
-                                        typeFilter: 1,
+                                        typeFilter: "primitive",
                                     },
                                 ],
-                                typeFilter: 1,
+                                typeFilter: "primitive",
                             },
                         ],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -68,7 +68,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "[]",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
             {
                 name: "u8",
@@ -76,7 +76,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -99,10 +99,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -125,7 +125,7 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                     {
                         name: "u8",
@@ -133,10 +133,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -165,13 +165,13 @@ const PARSED = [
                                 pathWithoutLast: [],
                                 pathLast: "u8",
                                 generics: [],
-                                typeFilter: -1,
+                                typeFilter: null,
                             },
                         ],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -188,7 +188,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "[]",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -283,10 +283,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
diff --git a/tests/rustdoc-js-std/parser-tuple.js b/tests/rustdoc-js-std/parser-tuple.js
index 61925068387..dfe9fdc98e3 100644
--- a/tests/rustdoc-js-std/parser-tuple.js
+++ b/tests/rustdoc-js-std/parser-tuple.js
@@ -22,7 +22,7 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "d",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                     {
                         name: "()",
@@ -30,10 +30,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "()",
                         generics: [],
-                        typeFilter: 1,
+                        typeFilter: "primitive",
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             }
         ],
         foundElems: 1,
@@ -50,7 +50,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "()",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
             {
                 name: "u8",
@@ -58,7 +58,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 2,
@@ -81,7 +81,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -104,10 +104,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -130,10 +130,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -156,10 +156,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -176,7 +176,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "u8",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -199,7 +199,7 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                     {
                         name: "u8",
@@ -207,10 +207,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
@@ -233,10 +233,10 @@ const PARSED = [
                         pathWithoutLast: [],
                         pathLast: "u8",
                         generics: [],
-                        typeFilter: -1,
+                        typeFilter: null,
                     },
                 ],
-                typeFilter: -1,
+                typeFilter: null,
             },
         ],
         foundElems: 1,
@@ -253,7 +253,7 @@ const PARSED = [
                 pathWithoutLast: [],
                 pathLast: "()",
                 generics: [],
-                typeFilter: 1,
+                typeFilter: "primitive",
             },
         ],
         foundElems: 1,
diff --git a/tests/rustdoc-js-std/path-end-empty.js b/tests/rustdoc-js-std/path-end-empty.js
index 6e853c61b4d..17b8cac8a66 100644
--- a/tests/rustdoc-js-std/path-end-empty.js
+++ b/tests/rustdoc-js-std/path-end-empty.js
@@ -1,6 +1,7 @@
+const FILTER_CRATE = "std";
 const EXPECTED = {
     'query': 'Option::',
     'others': [
-        { 'path': 'std::option::Option', 'name': 'get_or_insert_default' },
+        { 'path': 'std::option::Option', 'name': 'eq' },
     ],
 }
diff --git a/tests/rustdoc-js-std/path-maxeditdistance.js b/tests/rustdoc-js-std/path-maxeditdistance.js
index 6989e7d6488..b22a506eee5 100644
--- a/tests/rustdoc-js-std/path-maxeditdistance.js
+++ b/tests/rustdoc-js-std/path-maxeditdistance.js
@@ -10,15 +10,15 @@ const EXPECTED = [
         query: 'vec::iter',
         others: [
             // std::net::ToSocketAttrs::iter should not show up here
-            { 'path': 'std::vec', 'name': 'IntoIter' },
+            { 'path': 'std::collections::VecDeque', 'name': 'iter' },
+            { 'path': 'std::collections::VecDeque', 'name': 'iter_mut' },
             { 'path': 'std::vec::Vec', 'name': 'from_iter' },
+            { 'path': 'std::vec', 'name': 'IntoIter' },
             { 'path': 'std::vec::Vec', 'name': 'into_iter' },
             { 'path': 'std::vec::ExtractIf', 'name': 'into_iter' },
             { 'path': 'std::vec::Drain', 'name': 'into_iter' },
             { 'path': 'std::vec::IntoIter', 'name': 'into_iter' },
             { 'path': 'std::vec::Splice', 'name': 'into_iter' },
-            { 'path': 'std::collections::VecDeque', 'name': 'iter' },
-            { 'path': 'std::collections::VecDeque', 'name': 'iter_mut' },
             { 'path': 'std::collections::VecDeque', 'name': 'from_iter' },
             { 'path': 'std::collections::VecDeque', 'name': 'into_iter' },
         ],
diff --git a/tests/rustdoc-js-std/return-specific-literal.js b/tests/rustdoc-js-std/return-specific-literal.js
index 86ed3aceb4e..1efdb776ad7 100644
--- a/tests/rustdoc-js-std/return-specific-literal.js
+++ b/tests/rustdoc-js-std/return-specific-literal.js
@@ -4,6 +4,6 @@ const EXPECTED = {
         { 'path': 'std::string::String', 'name': 'ne' },
     ],
     'returned': [
-        { 'path': 'std::string::String', 'name': 'add' },
+        { 'path': 'std::string::String', 'name': 'new' },
     ],
 };
diff --git a/tests/rustdoc-js-std/return-specific.js b/tests/rustdoc-js-std/return-specific.js
index be54a1c9772..abf243bf6ab 100644
--- a/tests/rustdoc-js-std/return-specific.js
+++ b/tests/rustdoc-js-std/return-specific.js
@@ -4,6 +4,6 @@ const EXPECTED = {
         { 'path': 'std::string::String', 'name': 'ne' },
     ],
     'returned': [
-        { 'path': 'std::string::String', 'name': 'add' },
+        { 'path': 'std::string::String', 'name': 'new' },
     ],
 };
diff --git a/tests/rustdoc-js/doc-alias.js b/tests/rustdoc-js/doc-alias.js
index e57bd71419d..74f1665f74a 100644
--- a/tests/rustdoc-js/doc-alias.js
+++ b/tests/rustdoc-js/doc-alias.js
@@ -232,6 +232,12 @@ const EXPECTED = [
         'query': 'UnionItem',
         'others': [
             {
+                'path': 'doc_alias::Union',
+                'name': 'union_item',
+                'desc': 'Doc for <code>Union::union_item</code>',
+                'href': '../doc_alias/union.Union.html#structfield.union_item'
+            },
+            {
                 'path': 'doc_alias',
                 'name': 'Union',
                 'desc': 'Doc for <code>Union</code>',
@@ -239,13 +245,6 @@ const EXPECTED = [
                 'href': '../doc_alias/union.Union.html',
                 'is_alias': true
             },
-            // Not an alias!
-            {
-                'path': 'doc_alias::Union',
-                'name': 'union_item',
-                'desc': 'Doc for <code>Union::union_item</code>',
-                'href': '../doc_alias/union.Union.html#structfield.union_item'
-            },
         ],
     },
     {
diff --git a/tests/rustdoc-js/generics-trait.js b/tests/rustdoc-js/generics-trait.js
index 8da9c67050e..cd100463e9a 100644
--- a/tests/rustdoc-js/generics-trait.js
+++ b/tests/rustdoc-js/generics-trait.js
@@ -25,8 +25,25 @@ const EXPECTED = [
     },
     {
         'query': 'Resulx<SomeTrait>',
-        'in_args': [],
-        'returned': [],
+        'correction': 'Result',
+        'in_args': [
+            {
+                'path': 'generics_trait',
+                'name': 'beta',
+                'displayType': '`Result`<`T`, ()> -> ()',
+                'displayMappedNames': '',
+                'displayWhereClause': 'T: `SomeTrait`',
+            },
+        ],
+        'returned': [
+            {
+                'path': 'generics_trait',
+                'name': 'bet',
+                'displayType': ' -> `Result`<`T`, ()>',
+                'displayMappedNames': '',
+                'displayWhereClause': 'T: `SomeTrait`',
+            },
+        ],
     },
     {
         'query': 'Result<SomeTraiz>',
diff --git a/tests/rustdoc-js/non-english-identifier.js b/tests/rustdoc-js/non-english-identifier.js
index 3d50bd3ee90..0f9ffe7c038 100644
--- a/tests/rustdoc-js/non-english-identifier.js
+++ b/tests/rustdoc-js/non-english-identifier.js
@@ -7,7 +7,7 @@ const PARSED = [
             pathWithoutLast: [],
             pathLast: "中文",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         returned: [],
         foundElems: 1,
@@ -23,7 +23,7 @@ const PARSED = [
             pathLast: "_0mixed中英文",
             normalizedPathLast: "0mixed中英文",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "_0Mixed中英文",
@@ -38,7 +38,7 @@ const PARSED = [
             pathWithoutLast: ["my_crate"],
             pathLast: "中文api",
             generics: [],
-            typeFilter: -1,
+            typeFilter: null,
         }],
         foundElems: 1,
         userQuery: "my_crate::中文API",
@@ -94,7 +94,7 @@ const PARSED = [
             pathWithoutLast: ["my_crate"],
             pathLast: "中文宏",
             generics: [],
-            typeFilter: 16,
+            typeFilter: "macro",
         }],
         foundElems: 1,
         userQuery: "my_crate 中文宏!",
diff --git a/tests/rustdoc-js/ordering.js b/tests/rustdoc-js/ordering.js
new file mode 100644
index 00000000000..a7c10900da6
--- /dev/null
+++ b/tests/rustdoc-js/ordering.js
@@ -0,0 +1,9 @@
+const EXPECTED = [
+    {
+        'query': 'Entry',
+        'others': [
+            { 'path': 'ordering', 'name': 'Entry1a' },
+            { 'path': 'ordering', 'name': 'Entry2ab' },
+        ],
+    },
+];
diff --git a/tests/rustdoc-js/ordering.rs b/tests/rustdoc-js/ordering.rs
new file mode 100644
index 00000000000..18ca06ab5ec
--- /dev/null
+++ b/tests/rustdoc-js/ordering.rs
@@ -0,0 +1,3 @@
+pub struct Entry1a;
+pub struct Entry1b;
+pub struct Entry2ab;
diff --git a/tests/rustdoc-js/type-parameters.js b/tests/rustdoc-js/type-parameters.js
index fa2b8d2ebfd..b1f1ee951c6 100644
--- a/tests/rustdoc-js/type-parameters.js
+++ b/tests/rustdoc-js/type-parameters.js
@@ -4,8 +4,8 @@ const EXPECTED = [
     {
         query: '-> trait:Some',
         others: [
-            { path: 'foo', name: 'alpha' },
             { path: 'foo', name: 'alef' },
+            { path: 'foo', name: 'alpha' },
         ],
     },
     {
@@ -75,10 +75,8 @@ const EXPECTED = [
     {
         query: 'Other',
         in_args: [
-            // because function is called "other", it's sorted first
-            // even though it has higher type distance
-            { path: 'foo', name: 'other' },
             { path: 'foo', name: 'alternate' },
+            { path: 'foo', name: 'other' },
         ],
     },
     {
diff --git a/tests/rustdoc/cross-crate-info/cargo-transitive-no-index/s.rs b/tests/rustdoc/cross-crate-info/cargo-transitive-no-index/s.rs
index 85c460ace64..088ab242d27 100644
--- a/tests/rustdoc/cross-crate-info/cargo-transitive-no-index/s.rs
+++ b/tests/rustdoc/cross-crate-info/cargo-transitive-no-index/s.rs
@@ -5,9 +5,9 @@
 //@ has t/trait.Tango.html
 //@ hasraw s/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/t/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // We document multiple crates into the same output directory, which
 // merges the cross-crate information. Everything is available.
diff --git a/tests/rustdoc/cross-crate-info/cargo-transitive/s.rs b/tests/rustdoc/cross-crate-info/cargo-transitive/s.rs
index 68bfc34883b..fb6eef0bf69 100644
--- a/tests/rustdoc/cross-crate-info/cargo-transitive/s.rs
+++ b/tests/rustdoc/cross-crate-info/cargo-transitive/s.rs
@@ -13,9 +13,9 @@
 //@ has t/trait.Tango.html
 //@ hasraw s/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/t/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // We document multiple crates into the same output directory, which
 // merges the cross-crate information. Everything is available.
diff --git a/tests/rustdoc/cross-crate-info/cargo-two-no-index/e.rs b/tests/rustdoc/cross-crate-info/cargo-two-no-index/e.rs
index c93298f969e..53375670552 100644
--- a/tests/rustdoc/cross-crate-info/cargo-two-no-index/e.rs
+++ b/tests/rustdoc/cross-crate-info/cargo-two-no-index/e.rs
@@ -4,8 +4,8 @@
 //@ has f/trait.Foxtrot.html
 //@ hasraw e/enum.Echo.html 'Foxtrot'
 //@ hasraw trait.impl/f/trait.Foxtrot.js 'enum.Echo.html'
-//@ hasraw search-index.js 'Foxtrot'
-//@ hasraw search-index.js 'Echo'
+//@ hasraw search.index/name/*.js 'Foxtrot'
+//@ hasraw search.index/name/*.js 'Echo'
 
 // document two crates in the same way that cargo does. do not provide
 // --enable-index-page
diff --git a/tests/rustdoc/cross-crate-info/cargo-two/e.rs b/tests/rustdoc/cross-crate-info/cargo-two/e.rs
index 00f86cbc348..936e75c97af 100644
--- a/tests/rustdoc/cross-crate-info/cargo-two/e.rs
+++ b/tests/rustdoc/cross-crate-info/cargo-two/e.rs
@@ -11,8 +11,8 @@
 //@ has f/trait.Foxtrot.html
 //@ hasraw e/enum.Echo.html 'Foxtrot'
 //@ hasraw trait.impl/f/trait.Foxtrot.js 'enum.Echo.html'
-//@ hasraw search-index.js 'Foxtrot'
-//@ hasraw search-index.js 'Echo'
+//@ hasraw search.index/name/*.js 'Foxtrot'
+//@ hasraw search.index/name/*.js 'Echo'
 
 // document two crates in the same way that cargo does, writing them both
 // into the same output directory
diff --git a/tests/rustdoc/cross-crate-info/index-on-last/e.rs b/tests/rustdoc/cross-crate-info/index-on-last/e.rs
index ffee898cd96..dbaeaf5b725 100644
--- a/tests/rustdoc/cross-crate-info/index-on-last/e.rs
+++ b/tests/rustdoc/cross-crate-info/index-on-last/e.rs
@@ -11,8 +11,8 @@
 //@ has f/trait.Foxtrot.html
 //@ hasraw e/enum.Echo.html 'Foxtrot'
 //@ hasraw trait.impl/f/trait.Foxtrot.js 'enum.Echo.html'
-//@ hasraw search-index.js 'Foxtrot'
-//@ hasraw search-index.js 'Echo'
+//@ hasraw search.index/name/*.js 'Foxtrot'
+//@ hasraw search.index/name/*.js 'Echo'
 
 // only declare --enable-index-page to the last rustdoc invocation
 extern crate f;
diff --git a/tests/rustdoc/cross-crate-info/kitchen-sink/i.rs b/tests/rustdoc/cross-crate-info/kitchen-sink/i.rs
index bcb9464795a..979d77d8c42 100644
--- a/tests/rustdoc/cross-crate-info/kitchen-sink/i.rs
+++ b/tests/rustdoc/cross-crate-info/kitchen-sink/i.rs
@@ -19,10 +19,10 @@
 //@ has t/trait.Tango.html
 //@ hasraw s/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/t/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Quebec'
-//@ hasraw search-index.js 'Romeo'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Tango'
+//@ hasraw search.index/name/*.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Romeo'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Tango'
 //@ has type.impl/s/struct.Sierra.js
 //@ hasraw type.impl/s/struct.Sierra.js 'Tango'
 //@ hasraw type.impl/s/struct.Sierra.js 'Romeo'
diff --git a/tests/rustdoc/cross-crate-info/single-crate-baseline/q.rs b/tests/rustdoc/cross-crate-info/single-crate-baseline/q.rs
index c5e3dc0a0f4..439ab23de18 100644
--- a/tests/rustdoc/cross-crate-info/single-crate-baseline/q.rs
+++ b/tests/rustdoc/cross-crate-info/single-crate-baseline/q.rs
@@ -6,7 +6,7 @@
 //@ has index.html '//h1' 'List of all crates'
 //@ has index.html '//ul[@class="all-items"]//a[@href="q/index.html"]' 'q'
 //@ has q/struct.Quebec.html
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // there's nothing cross-crate going on here
 pub struct Quebec;
diff --git a/tests/rustdoc/cross-crate-info/single-crate-no-index/q.rs b/tests/rustdoc/cross-crate-info/single-crate-no-index/q.rs
index d3e71fa0ce3..b3703658465 100644
--- a/tests/rustdoc/cross-crate-info/single-crate-no-index/q.rs
+++ b/tests/rustdoc/cross-crate-info/single-crate-no-index/q.rs
@@ -1,6 +1,6 @@
 //@ build-aux-docs
 //@ has q/struct.Quebec.html
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // there's nothing cross-crate going on here
 pub struct Quebec;
diff --git a/tests/rustdoc/cross-crate-info/write-docs-somewhere-else/e.rs b/tests/rustdoc/cross-crate-info/write-docs-somewhere-else/e.rs
index 9dcec211e17..6ded19546b8 100644
--- a/tests/rustdoc/cross-crate-info/write-docs-somewhere-else/e.rs
+++ b/tests/rustdoc/cross-crate-info/write-docs-somewhere-else/e.rs
@@ -4,8 +4,8 @@
 //@ !has f/trait.Foxtrot.html
 //@ hasraw e/enum.Echo.html 'Foxtrot'
 //@ hasraw trait.impl/f/trait.Foxtrot.js 'enum.Echo.html'
-//@ !hasraw search-index.js 'Foxtrot'
-//@ hasraw search-index.js 'Echo'
+//@ !hasraw search.index/name/*.js 'Foxtrot'
+//@ hasraw search.index/name/*.js 'Echo'
 
 // test the fact that our test runner will document this crate somewhere
 // else
diff --git a/tests/rustdoc/masked.rs b/tests/rustdoc/masked.rs
index 4f361ca881e..bc0a5f57cef 100644
--- a/tests/rustdoc/masked.rs
+++ b/tests/rustdoc/masked.rs
@@ -7,7 +7,7 @@
 #[doc(masked)]
 extern crate masked;
 
-//@ !hasraw 'search-index.js' 'masked_method'
+//@ !hasraw 'search.index/name/*.js' 'masked_method'
 
 //@ !hasraw 'foo/struct.String.html' 'MaskedTrait'
 //@ !hasraw 'foo/struct.String.html' 'MaskedBlanketTrait'
diff --git a/tests/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs b/tests/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
index 665f9567ba2..26292c50d35 100644
--- a/tests/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
@@ -14,9 +14,9 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // similar to cargo-workflow-transitive, but we use --merge=read-write,
 // which is the default.
diff --git a/tests/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs b/tests/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
index f03f6bd6026..fd6ee0cbf24 100644
--- a/tests/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
+++ b/tests/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
@@ -23,10 +23,10 @@
 //@ !has sierra/struct.Sierra.html
 //@ !has tango/trait.Tango.html
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Quebec'
-//@ hasraw search-index.js 'Romeo'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Tango'
+//@ hasraw search.index/name/*.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Romeo'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Tango'
 //@ has type.impl/sierra/struct.Sierra.js
 //@ hasraw type.impl/sierra/struct.Sierra.js 'Tango'
 //@ hasraw type.impl/sierra/struct.Sierra.js 'Romeo'
diff --git a/tests/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs b/tests/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs
index 7eac207e518..c3b8200f151 100644
--- a/tests/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs
@@ -8,7 +8,7 @@
 //@ has sierra/struct.Sierra.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ !has trait.impl/tango/trait.Tango.js
-//@ !has search-index.js
+//@ !has search.index/name/*.js
 
 // we don't generate any cross-crate info if --merge=none, even if we
 // document crates separately
diff --git a/tests/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs b/tests/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
index f3340a80c84..2e47d42daff 100644
--- a/tests/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
@@ -10,7 +10,7 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ !has trait.impl/tango/trait.Tango.js
-//@ !has search-index.js
+//@ !has search.index/name/*.js
 
 // we --merge=none, so --parts-out-dir doesn't do anything
 extern crate tango;
diff --git a/tests/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs b/tests/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs
index 8eb0f1d0498..337dc558f35 100644
--- a/tests/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs
@@ -10,9 +10,9 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ !hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ !hasraw search.index/name/*.js 'Quebec'
 
 // we overwrite quebec and tango's cross-crate information, but we
 // include the info from tango meaning that it should appear in the out
diff --git a/tests/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs b/tests/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs
index 4ee036238b4..c07b30d2aa0 100644
--- a/tests/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs
@@ -13,9 +13,9 @@
 //@ has index.html '//ul[@class="all-items"]//a[@href="tango/index.html"]' 'tango'
 //@ has sierra/struct.Sierra.html
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // If these were documeted into the same directory, the info would be
 // overwritten. However, since they are merged, we can still recover all
diff --git a/tests/rustdoc/merge-cross-crate-info/overwrite/sierra.rs b/tests/rustdoc/merge-cross-crate-info/overwrite/sierra.rs
index 11e61dd2744..cac978f3bb2 100644
--- a/tests/rustdoc/merge-cross-crate-info/overwrite/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/overwrite/sierra.rs
@@ -9,9 +9,9 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ !hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ !hasraw search.index/name/*.js 'Quebec'
 
 // since tango is documented with --merge=finalize, we overwrite q's
 // cross-crate information
diff --git a/tests/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs b/tests/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs
index 09bb78c06f1..2ab08c112a1 100644
--- a/tests/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs
+++ b/tests/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs
@@ -6,7 +6,7 @@
 //@ has index.html '//h1' 'List of all crates'
 //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
 //@ has quebec/struct.Quebec.html
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // there is nothing to read from the output directory if we use a single
 // crate
diff --git a/tests/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs b/tests/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs
index 72475426f6e..1b9e8a3db08 100644
--- a/tests/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs
+++ b/tests/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs
@@ -6,7 +6,7 @@
 //@ has index.html '//h1' 'List of all crates'
 //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
 //@ has quebec/struct.Quebec.html
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // read-write is the default and this does the same as `single-crate`
 pub struct Quebec;
diff --git a/tests/rustdoc/merge-cross-crate-info/single-crate-write-anyway/quebec.rs b/tests/rustdoc/merge-cross-crate-info/single-crate-write-anyway/quebec.rs
index b20e173a830..6b72615eb9d 100644
--- a/tests/rustdoc/merge-cross-crate-info/single-crate-write-anyway/quebec.rs
+++ b/tests/rustdoc/merge-cross-crate-info/single-crate-write-anyway/quebec.rs
@@ -6,7 +6,7 @@
 //@ has index.html '//h1' 'List of all crates'
 //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
 //@ has quebec/struct.Quebec.html
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // we can --parts-out-dir, but that doesn't do anything other than create
 // the file
diff --git a/tests/rustdoc/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs b/tests/rustdoc/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs
index e888a43c460..bfde21c9ed3 100644
--- a/tests/rustdoc/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs
+++ b/tests/rustdoc/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs
@@ -5,7 +5,7 @@
 
 //@ !has index.html
 //@ has quebec/struct.Quebec.html
-//@ !has search-index.js
+//@ !has search.index/name/*.js
 
 // --merge=none doesn't write anything, despite --parts-out-dir
 pub struct Quebec;
diff --git a/tests/rustdoc/merge-cross-crate-info/transitive-finalize/sierra.rs b/tests/rustdoc/merge-cross-crate-info/transitive-finalize/sierra.rs
index 68fc4b13fa8..b45895a40a1 100644
--- a/tests/rustdoc/merge-cross-crate-info/transitive-finalize/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/transitive-finalize/sierra.rs
@@ -12,7 +12,7 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Sierra'
 
 // write only overwrites stuff in the output directory
 extern crate tango;
diff --git a/tests/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs b/tests/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs
index b407228085e..be371376179 100644
--- a/tests/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs
@@ -16,9 +16,9 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // We avoid writing any cross-crate information, preferring to include it
 // with --include-parts-dir.
diff --git a/tests/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs b/tests/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
index 15e32d5941f..dc10ec3de35 100644
--- a/tests/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
@@ -14,9 +14,9 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
-//@ hasraw search-index.js 'Tango'
-//@ hasraw search-index.js 'Sierra'
-//@ hasraw search-index.js 'Quebec'
+//@ hasraw search.index/name/*.js 'Tango'
+//@ hasraw search.index/name/*.js 'Sierra'
+//@ hasraw search.index/name/*.js 'Quebec'
 
 // We can use read-write to emulate the default behavior of rustdoc, when
 // --merge is left out.
diff --git a/tests/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs b/tests/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs
index 3eb2cebd743..9eaa627419b 100644
--- a/tests/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs
+++ b/tests/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs
@@ -9,7 +9,7 @@
 //@ has tango/trait.Tango.html
 //@ hasraw sierra/struct.Sierra.html 'Tango'
 //@ !has trait.impl/tango/trait.Tango.js
-//@ !has search-index.js
+//@ !has search.index/name/*.js
 
 // --merge=none on all crates does not generate any cross-crate info
 extern crate tango;
diff --git a/tests/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs b/tests/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs
index ee2b646e43c..d79302e62cd 100644
--- a/tests/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs
+++ b/tests/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs
@@ -6,8 +6,8 @@
 //@ has echo/enum.Echo.html
 //@ hasraw echo/enum.Echo.html 'Foxtrot'
 //@ hasraw trait.impl/foxtrot/trait.Foxtrot.js 'enum.Echo.html'
-//@ hasraw search-index.js 'Foxtrot'
-//@ hasraw search-index.js 'Echo'
+//@ hasraw search.index/name/*.js 'Foxtrot'
+//@ hasraw search.index/name/*.js 'Echo'
 
 // document two crates in different places, and merge their docs after
 // they are generated
diff --git a/tests/rustdoc/no-unit-struct-field.rs b/tests/rustdoc/no-unit-struct-field.rs
index 6ac44037cea..cb74a9d19ad 100644
--- a/tests/rustdoc/no-unit-struct-field.rs
+++ b/tests/rustdoc/no-unit-struct-field.rs
@@ -1,10 +1,11 @@
 // This test ensures that the tuple struct fields are not generated in the
 // search index.
 
-//@ !hasraw search-index.js '"0"'
-//@ !hasraw search-index.js '"1"'
-//@ hasraw search-index.js '"foo_a"'
-//@ hasraw search-index.js '"bar_a"'
+// vlqhex encoding ` = 0, a = 1, e = 5
+//@ !hasraw search.index/name/*.js 'a0'
+//@ !hasraw search.index/name/*.js 'a1'
+//@ hasraw search.index/name/*.js 'efoo_a'
+//@ hasraw search.index/name/*.js 'ebar_a'
 
 pub struct Bar(pub u32, pub u8);
 pub struct Foo {
diff --git a/tests/rustdoc/primitive/search-index-primitive-inherent-method-23511.rs b/tests/rustdoc/primitive/search-index-primitive-inherent-method-23511.rs
index 6054d8f12f5..ea828e08d82 100644
--- a/tests/rustdoc/primitive/search-index-primitive-inherent-method-23511.rs
+++ b/tests/rustdoc/primitive/search-index-primitive-inherent-method-23511.rs
@@ -9,7 +9,7 @@ pub mod str {
     #![rustc_doc_primitive = "str"]
 
     impl str {
-        //@ hasraw search-index.js foo
+        //@ hasraw search.index/name/*.js foo
         #[rustc_allow_incoherent_impl]
         pub fn foo(&self) {}
     }
diff --git a/tests/rustdoc/search-index-summaries.rs b/tests/rustdoc/search-index-summaries.rs
index 55db04340a6..e680a9d57c1 100644
--- a/tests/rustdoc/search-index-summaries.rs
+++ b/tests/rustdoc/search-index-summaries.rs
@@ -1,6 +1,6 @@
 #![crate_name = "foo"]
 
-//@ hasraw 'search.desc/foo/foo-desc-0-.js' 'Foo short link.'
+//@ hasraw 'search.index/desc/*.js' 'Foo short link.'
 //@ !hasraw - 'www.example.com'
 //@ !hasraw - 'More Foo.'
 
diff --git a/tests/rustdoc/search-index.rs b/tests/rustdoc/search-index.rs
index f53862ede38..49ccacd0a5c 100644
--- a/tests/rustdoc/search-index.rs
+++ b/tests/rustdoc/search-index.rs
@@ -2,7 +2,7 @@
 
 use std::ops::Deref;
 
-//@ hasraw search-index.js Foo
+//@ hasraw search.index/name/*.js Foo
 pub use private::Foo;
 
 mod private {
@@ -20,7 +20,7 @@ mod private {
 pub struct Bar;
 
 impl Deref for Bar {
-    //@ !hasraw search-index.js Target
+    //@ !hasraw search.index/name/*.js Target
     type Target = Bar;
     fn deref(&self) -> &Bar { self }
 }