From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- tests/rustdoc-gui/sidebar.goml | 151 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 tests/rustdoc-gui/sidebar.goml (limited to 'tests/rustdoc-gui/sidebar.goml') diff --git a/tests/rustdoc-gui/sidebar.goml b/tests/rustdoc-gui/sidebar.goml new file mode 100644 index 000000000..9c742be05 --- /dev/null +++ b/tests/rustdoc-gui/sidebar.goml @@ -0,0 +1,151 @@ +// Checks multiple things on the sidebar display (width of its elements, colors, etc). +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +show-text: true + +// First, check the sidebar colors. +define-function: ( + "check-colors", + (theme, color, background_color), + block { + local-storage: { + "rustdoc-theme": |theme|, + "rustdoc-use-system-theme": "false", + } + reload: + // Checking results colors. + assert-css: (".sidebar", { + "color": |color|, + "background-color": |background_color| + }, ALL) + }, +) + +call-function: ( + "check-colors", + { + "theme": "ayu", + "color": "rgb(197, 197, 197)", + "background_color": "rgb(20, 25, 31)", + } +) +call-function: ( + "check-colors", + { + "theme": "dark", + "color": "rgb(221, 221, 221)", + "background_color": "rgb(80, 80, 80)", + } +) +call-function: ( + "check-colors", + { + "theme": "light", + "color": "rgb(0, 0, 0)", + "background_color": "rgb(245, 245, 245)", + } +) + +local-storage: {"rustdoc-theme": "light"} +// We reload the page so the local storage settings are being used. +reload: + +assert-text: (".sidebar > .location", "Crate test_docs") +// In modules, we only have one "location" element. +assert-count: (".sidebar .location", 1) +assert-count: (".sidebar h2", 1) +assert-text: ("#all-types", "All Items") +assert-css: ("#all-types", {"color": "rgb(53, 109, 164)"}) +// We check that we have the crates list and that the "current" on is "test_docs". +assert-text: (".sidebar-elems ul.crate > li > a.current", "test_docs") +// And we're also supposed to have the list of items in the current module. +assert-text: (".sidebar-elems section ul > li:nth-child(1)", "Re-exports") +assert-text: (".sidebar-elems section ul > li:nth-child(2)", "Modules") +assert-text: (".sidebar-elems section ul > li:nth-child(3)", "Macros") +assert-text: (".sidebar-elems section ul > li:nth-child(4)", "Structs") +assert-text: (".sidebar-elems section ul > li:nth-child(5)", "Enums") +assert-text: (".sidebar-elems section ul > li:nth-child(6)", "Constants") +assert-text: (".sidebar-elems section ul > li:nth-child(7)", "Traits") +assert-text: (".sidebar-elems section ul > li:nth-child(8)", "Functions") +assert-text: (".sidebar-elems section ul > li:nth-child(9)", "Type Definitions") +assert-text: (".sidebar-elems section ul > li:nth-child(10)", "Unions") +assert-text: (".sidebar-elems section ul > li:nth-child(11)", "Keywords") +assert-text: ("#structs + .item-table .item-left > a", "Foo") +click: "#structs + .item-table .item-left > a" + +// PAGE: struct.Foo.html +assert-count: (".sidebar .location", 1) +assert-count: (".sidebar h2", 2) +// We check that there is no crate listed outside of the top level. +assert-false: ".sidebar-elems > .crate" + +click: ".sidebar-elems section .block li > a" +assert-property-false: ("html", {"scrollTop": "0"}) + +click: ".sidebar h2.location a" +assert-property: ("html", {"scrollTop": "0"}) + +// We now go back to the crate page to click on the "lib2" crate link. +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +assert-css: (".sidebar-elems ul.crate > li:first-child > a", {"color": "rgb(53, 109, 164)"}) +click: ".sidebar-elems ul.crate > li:first-child > a" + +// PAGE: lib2/index.html +goto: "file://" + |DOC_PATH| + "/lib2/index.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +assert-text: (".sidebar > .location", "Crate lib2") +// We check that we have the crates list and that the "current" on is now "lib2". +assert-text: (".sidebar-elems ul.crate > li > a.current", "lib2") +// We now go to the "foobar" function page. +assert-text: (".sidebar-elems > section ul.block > li:nth-child(1)", "Modules") +assert-text: (".sidebar-elems > section ul.block > li:nth-child(2)", "Structs") +assert-text: (".sidebar-elems > section ul.block > li:nth-child(3)", "Traits") +assert-text: (".sidebar-elems > section ul.block > li:nth-child(4)", "Functions") +assert-text: (".sidebar-elems > section ul.block > li:nth-child(5)", "Type Definitions") +assert-text: ("#functions + .item-table .item-left > a", "foobar") +click: "#functions + .item-table .item-left > a" + +// PAGE: fn.foobar.html +// In items containing no items (like functions or constants) and in modules, we have no +// "location" elements. Only the parent module h2. +assert-count: (".sidebar .location", 0) +assert-count: (".sidebar h2", 1) +assert-text: (".sidebar .sidebar-elems h2", "In lib2") +// We check that we don't have the crate list. +assert-false: ".sidebar-elems > .crate" + +goto: "./module/index.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +assert-text: (".sidebar > .location", "Module module") +// We check that we don't have the crate list. +assert-false: ".sidebar-elems > .crate" + +goto: "./sub_module/sub_sub_module/index.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +assert-text: (".sidebar > .location", "Module sub_sub_module") +// We check that we don't have the crate list. +assert-false: ".sidebar-elems .crate" +assert-text: (".sidebar-elems > section ul > li:nth-child(1)", "Functions") +assert-text: ("#functions + .item-table .item-left > a", "foo") + +// Links to trait implementations in the sidebar should not wrap even if they are long. +goto: "file://" + |DOC_PATH| + "/lib2/struct.HasALongTraitWithParams.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +assert-property: (".sidebar-elems section .block li > a", {"offsetHeight": 29}) + +// Test that clicking on of the "In " headings in the sidebar links to the +// appropriate anchor in index.html. +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" +assert-property: (".sidebar", {"clientWidth": "200"}) +click: "//ul[@class='block mod']/preceding-sibling::h3/a" +// PAGE: index.html +assert-css: ("#modules", {"background-color": "rgb(253, 255, 211)"}) + +// Finally, assert that the `[+]/[−]` toggle doesn't affect sidebar width. +click: "#toggle-all-docs" +assert-text: ("#toggle-all-docs", "[+]") +assert-property: (".sidebar", {"clientWidth": "200"}) +click: "#toggle-all-docs" +assert-text: ("#toggle-all-docs", "[−]") +assert-property: (".sidebar", {"clientWidth": "200"}) -- cgit v1.2.3