about summary refs log tree commit diff
path: root/tests/rustdoc-gui/code-example-buttons.goml
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-07-30 04:31:55 +0200
committerGitHub <noreply@github.com>2024-07-30 04:31:55 +0200
commitc2b085b4d498f44e65bf8d7d25daeefcc8dba90d (patch)
tree47b208e86fa7c566281394a0a35a56c83a17ef5a /tests/rustdoc-gui/code-example-buttons.goml
parentf396a42ed6cad32dc6f5860b49f85f0d9a10a997 (diff)
parent99906dc89c241d29c6e63d10f719d36d81a9a049 (diff)
downloadrust-c2b085b4d498f44e65bf8d7d25daeefcc8dba90d.tar.gz
rust-c2b085b4d498f44e65bf8d7d25daeefcc8dba90d.zip
Rollup merge of #128339 - GuillaumeGomez:click-code-example, r=notriddle
[rustdoc] Make the buttons remain when code example is clicked

Follow-up of https://github.com/rust-lang/rust/pull/125779.

One current issue we have with "run" button and the newly added copy code button is that if you're on mobile devices, you can't use them. I took a look at how `mdbook` is handling it and when you click on a code example, they show the buttons. I think it's a really good idea as if you want to copy the code on your mobile device, you will click on it, showing the buttons.

Feature can be tested [here](https://rustdoc.crud.net/imperio/click-code-example/foo/struct.Bar.html).

r? `@notriddle`
Diffstat (limited to 'tests/rustdoc-gui/code-example-buttons.goml')
-rw-r--r--tests/rustdoc-gui/code-example-buttons.goml21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/rustdoc-gui/code-example-buttons.goml b/tests/rustdoc-gui/code-example-buttons.goml
new file mode 100644
index 00000000000..57ea2970072
--- /dev/null
+++ b/tests/rustdoc-gui/code-example-buttons.goml
@@ -0,0 +1,21 @@
+// This test ensures that code blocks buttons are displayed on hover and when you click on them.
+go-to: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html"
+
+// First we check we "hover".
+move-cursor-to: ".example-wrap"
+assert-css: (".example-wrap .copy-button", { "visibility": "visible" })
+move-cursor-to: ".search-input"
+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"
+// 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"
+assert-count: (".example-wrap:not(:hover) .button-holder.keep-visible", 0)
+assert-css: (".example-wrap .copy-button", { "visibility": "hidden" })