rust/tests/rustdoc-gui
Guillaume Gomez a8cc24a1ab
Rollup merge of #125779 - GuillaumeGomez:copy-code, r=rustdoc-team
[rustdoc] Add copy code feature

This PR adds a "copy code" to code blocks. Since this is a JS only feature, the HTML is generated with JS when the user hovers the code block to prevent generating DOM unless needed.

Two things to note:
 1. I voluntarily kept the current behaviour of the run button (only when hovering a code block with a mouse) so it doesn't do anything on mobile. I plan to send a follow-up where the buttons would "expandable" or something. Still need to think which approach would be the best.
 2. I used a picture and not text like the run button to remain consistent with the "copy path" button. I'd also prefer for the run button to use a picture (like what is used in mdbook) but again, that's something to be discussed later on.

The rendering looks like this:

![Screenshot from 2024-06-03 21-29-48](https://github.com/rust-lang/rust/assets/3050060/a0b18f9c-b3dd-4a65-89a7-5a7a303b5c2b)
![Screenshot from 2024-06-03 21-30-20](https://github.com/rust-lang/rust/assets/3050060/b3b084ff-2716-4160-820b-d4774681a961)

It can be tested [here](https://guillaume-gomez.fr/rustdoc/bar/struct.Bar.html) (without the run button) and [here](https://guillaume-gomez.fr/rustdoc/foo/struct.Bar.html) (with the run button).

Fixes #86851.

r? ``@notriddle``
2024-07-28 20:07:44 +02:00
..
src Add regression test for items list size (#128023) 2024-07-22 11:33:03 +02:00
anchor-navigable.goml
anchors.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
basic-code.goml
check_info_sign_position.goml
check-code-blocks-margin.goml
check-stab-in-docblock.goml
code-blocks-overflow.goml
code-color.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
code-sidebar-toggle.goml
code-tags.goml
codeblock-sub.goml
codeblock-tooltip.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
copy-code.goml Make "copy code" button the same size as the "copy path" button 2024-07-18 14:16:29 +02:00
copy-path.goml Add GUI test for copy path button 2024-04-17 16:56:14 +02:00
cursor.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
default-settings.goml
docblock-big-code-mobile.goml
docblock-code-block-line-number.goml Make theme switching closer to reality 2024-04-08 12:14:41 +02:00
docblock-details.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
docblock-table-overflow.goml
docblock-table.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
duplicate-macro-reexport.goml
enum-variants.goml
escape-key.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
extend-css.goml
fields.goml
font-weight.goml
globals.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
go-to-collapsed-elem.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
hash-item-expansion.goml
headers-color.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
headings-anchor.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
headings.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
help-page.goml Don't call switch-theme function 2024-06-29 11:56:06 +02:00
hide-mobile-topbar.goml
highlight-colors.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
huge-collection-of-constants.goml
huge-logo.goml rustdoc: add test cases for mile wide bar 2024-07-16 13:29:35 -07:00
impl_on_foreign_order.goml
impl-default-expansion.goml
impl-doc.goml
implementors.goml
item-decl-colors.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
item-decl-comment-highlighting.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
item-info-alignment.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
item-info-overflow.goml
item-info.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
item-name-wrap.goml Add regression test for items list size (#128023) 2024-07-22 11:33:03 +02:00
item-summary-table.goml
javascript-disabled.goml rustdoc: dedup search form HTML 2024-05-05 08:15:08 -07:00
jump-to-def-background.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
label-next-to-symbol.goml Update browser-ui-test version to 0.18.0 2024-06-27 00:04:23 +02:00
links-color.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
list_code_block.goml
method-margins.goml
mobile-crate-name.goml
mobile.goml
module-items-font.goml
no-docblock.goml
notable-trait.goml Move duplicated code in functions in tests/rustdoc-gui/notable-trait.goml 2024-04-20 14:53:14 +02:00
overflow-tooltip-information.goml
pocket-menu.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
README.md
run-on-hover.goml Unify UI between code block buttons and top buttons 2024-07-18 14:16:29 +02:00
rust-logo.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
scrape-examples-button-focus.goml
scrape-examples-color.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
scrape-examples-fonts.goml
scrape-examples-layout.goml
scrape-examples-toggle.goml Make theme switching closer to reality 2024-04-08 12:14:41 +02:00
search-corrections.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
search-error.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-filter.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-form-elements.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-input-mobile.goml
search-keyboard.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
search-no-result.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-reexport.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-result-color.goml Make theme switching closer to reality 2024-04-08 12:14:41 +02:00
search-result-description.goml
search-result-display.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-result-go-to-first.goml rustdoc: update test cases 2024-04-09 20:22:13 -07:00
search-result-impl-disambiguation.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
search-result-keyword.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
search-tab-change-title-fn-sig.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
search-tab.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
search-title.goml Add rustdoc GUI test to check title with and without search 2024-07-27 12:12:16 +02:00
setting-auto-hide-content-large-items.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
setting-auto-hide-item-methods-docs.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
setting-auto-hide-trait-implementations.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
setting-go-to-only-result.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00
settings-button.goml Add GUI regression test for setting's cog color 2024-05-05 20:07:12 +02:00
settings.goml Add GUI regression test for setting's cog color 2024-05-05 20:07:12 +02:00
shortcuts.goml
sidebar-links-color.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
sidebar-macro-reexport.goml
sidebar-mobile-scroll.goml
sidebar-mobile.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
sidebar-resize-close-popover.goml
sidebar-resize-setting.goml
sidebar-resize-window.goml
sidebar-resize.goml
sidebar-source-code-display.goml Update browser-ui-test version to 0.18.0 2024-06-27 00:04:23 +02:00
sidebar-source-code.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
sidebar.goml rustdoc: fix current class on sidebar modnav 2024-07-18 12:06:21 -07:00
source-anchor-scroll.goml
source-code-page-code-scroll.goml Update source-code-page-code-scroll.goml GUI test 2024-07-21 12:47:34 +02:00
source-code-page.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
src-font-size.goml
stab-badge.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
stab-in-doc.goml Add regression test for stab display in doc blocks 2024-07-21 11:52:24 +02:00
struct-fields.goml
target.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
theme-change.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
theme-defaults.goml
theme-in-history.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
toggle-click-deadspace.goml rustdoc: update test cases 2024-04-09 20:22:13 -07:00
toggle-docs-mobile.goml
toggle-docs.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
toggle-implementors.goml
toggled-open-implementations.goml
tooltip-over-sidebar.goml
trait-sidebar-item-order.goml
trait-with-bounds.goml Add GUI test for trait bounds display 2024-07-19 21:31:30 +02:00
type-declation-overflow.goml Reduce width to ensure that the name is wider and thus still triggering the scroll 2024-07-19 21:31:30 +02:00
type-impls.goml
unsafe-fn.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
utils.goml Make theme switching closer to reality 2024-04-08 12:14:41 +02:00
warning-block.goml Use include command to reduce code duplication 2024-04-05 21:38:55 +02:00
where-whitespace.goml Update to new browser-ui-test version 2024-04-01 22:25:01 +02:00

The tests present here are used to test the generated HTML from rustdoc. The goal is to prevent unsound/unexpected GUI changes.

This is using the browser-ui-test framework to do so. It works as follows:

It wraps puppeteer to send commands to a web browser in order to navigate and test what's being currently displayed in the web page.

You can find more information and its documentation in its repository.

If you need to have more information on the tests run, you can use --test-args:

$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --debug

If you don't want to run in headless mode (helpful to debug sometimes), you can use --no-headless:

$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --no-headless

To see the supported options, use --help.

Important to be noted: if the chromium instance crashes when you run it, you might need to use --no-sandbox to make it work:

$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --no-sandbox