diff options
Diffstat (limited to 'tests/rustdoc-gui/toggle-docs.goml')
-rw-r--r-- | tests/rustdoc-gui/toggle-docs.goml | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/rustdoc-gui/toggle-docs.goml b/tests/rustdoc-gui/toggle-docs.goml new file mode 100644 index 000000000..c9d236e9b --- /dev/null +++ b/tests/rustdoc-gui/toggle-docs.goml @@ -0,0 +1,75 @@ +// Checks that the documentation toggles have the correct position, style and work as expected. +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" +assert-attribute: ("#main-content > details.top-doc", {"open": ""}) +assert-text: ("#toggle-all-docs", "[−]") +click: "#toggle-all-docs" +wait-for: 50 +// This is now collapsed so there shouldn't be the "open" attribute on details. +assert-attribute-false: ("#main-content > details.top-doc", {"open": ""}) +assert-text: ("#toggle-all-docs", "[+]") +assert-css: ( + "#main-content > details.top-doc > summary", + {"font-family": '"Fira Sans", Arial, NanumBarunGothic, sans-serif'}, +) +click: "#toggle-all-docs" +// Not collapsed anymore so the "open" attribute should be back. +wait-for-attribute: ("#main-content > details.top-doc", {"open": ""}) +assert-text: ("#toggle-all-docs", "[−]") + +// Check that it works on non-module pages as well. +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" +// We first check that everything is visible. +assert-text: ("#toggle-all-docs", "[−]") +assert-attribute: ("#implementations-list details.toggle", {"open": ""}, ALL) +assert-attribute: ("#trait-implementations-list details.toggle", {"open": ""}, ALL) +assert-attribute-false: ( + "#blanket-implementations-list > details.toggle", + {"open": ""}, + ALL, +) + +// We collapse them all. +click: "#toggle-all-docs" +wait-for-text: ("#toggle-all-docs", "[+]") +// We check that all <details> are collapsed (except for the impl block ones). +assert-attribute-false: ("details.toggle:not(.implementors-toggle)", {"open": ""}, ALL) +assert-attribute: ("#implementations-list > details.implementors-toggle", {"open": ""}) +// We now check that the other impl blocks are collapsed. +assert-attribute-false: ( + "#blanket-implementations-list > details.toggle.implementors-toggle", + {"open": ""}, + ALL, +) +// We open them all again. +click: "#toggle-all-docs" +wait-for-text: ("#toggle-all-docs", "[−]") +assert-attribute: ("details.toggle", {"open": ""}, ALL) + +// Checking the toggles style. +show-text: true +define-function: ( + "check-color", + (theme, filter), + block { + // Setting the theme. + local-storage: {"rustdoc-theme": |theme|, "rustdoc-use-system-theme": "false"} + // We reload the page so the local storage settings are being used. + reload: + + assert-css: ("details.toggle > summary::before", { + "opacity": "0.5", + "filter": |filter|, + }, ALL) + move-cursor-to: "details.toggle summary" + assert-css: ("details.toggle > summary:hover::before", { + "opacity": "1", + "filter": |filter|, + }) + // moving the cursor somewhere else to not mess with next function calls. + move-cursor-to: ".search-input" + }, +) + +call-function: ("check-color", {"theme": "ayu", "filter": "invert(1)"}) +call-function: ("check-color", {"theme": "dark", "filter": "invert(1)"}) +call-function: ("check-color", {"theme": "light", "filter": "none"}) |