rust/tests/rustdoc-gui
Dylan DPC 453fc03597
Rollup merge of #111892 - notriddle:notriddle/timeout-tooltip, r=me,GuillaumeGomez,Manishearth
rustdoc: add interaction delays for tooltip popovers

Preview:

* [notable traits](http://notriddle.com/rustdoc-demo-html-3/delay-tooltip/testing/struct.Vec.html#method.iter)
* [panicking code block](http://notriddle.com/rustdoc-demo-html-3/delay-tooltip/testing/struct.Vec.html#indexing)

Designing a good hover microinteraction is a matter of guessing user intent from what are, literally, vague gestures. In this case, guessing if hovering in our out of the tooltip base is intentional or not.

To figure this out, a few different techniques are used:

* When the mouse pointer enters a tooltip anchor point, its hitbox is grown on the bottom, where the popover is/will appear. This was already there before this commit: search "hover tunnel" in rustdoc.css for the implementation.

* This commit adds a delay when the mouse pointer enters the base anchor, in case the mouse pointer was just passing through and the user didn't want to open it.

* This commit also adds a delay when the mouse pointer exits the tooltip's base anchor or its popover, before hiding it.

* A fade-out animation is layered onto the pointer exit delay to immediately inform the user that they successfully dismissed the popover, while still providing a way for them to cancel it if it was a mistake and they still wanted to interact with it.

* No animation is used for revealing it, because we don't want people to try to interact with an element while it's in the middle of fading in: either they're allowed to interact with it while it's fading in, meaning it can't serve as mistake- proofing for opening the popover, or they can't, but they might try and be frustrated.

See also:

* https://www.nngroup.com/articles/timing-exposing-content/
* https://www.nngroup.com/articles/tooltip-guidelines/
* https://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown
2023-06-01 11:09:43 +05:30
..
src add compiletest headers to rustdoc-gui tests 2023-05-20 14:41:37 +03:00
anchor-navigable.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
anchors.goml Migrate GUI colors test to original CSS color format 2023-05-21 13:10:03 +02:00
basic-code.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
check_info_sign_position.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
check-code-blocks-margin.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
check-stab-in-docblock.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
code-blocks-overflow.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
code-color.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
code-sidebar-toggle.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
code-tags.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
codeblock-sub.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
codeblock-tooltip.goml rustdoc: add interaction delays for tooltip popovers 2023-05-23 15:56:40 -07:00
cursor.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
default-settings.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
docblock-big-code-mobile.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
docblock-code-block-line-number.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
docblock-details.goml Convert some GUI tests color checks to use original format 2023-05-11 11:49:16 +02:00
docblock-table-overflow.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
docblock-table.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
duplicate-macro-reexport.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
enum-variants.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
escape-key.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
extend-css.goml Add/update tests for --extend-css option 2023-04-12 20:07:10 +02:00
font-weight.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
go-to-collapsed-elem.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
hash-item-expansion.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
headers-color.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
headings.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
help-page.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
highlight-colors.goml Migrate GUI colors test to original CSS color format 2023-05-25 14:32:00 +02:00
huge-collection-of-constants.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
huge-logo.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
impl-default-expansion.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
impl-doc.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
implementors.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
item-decl-colors.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
item-info-alignment.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
item-info-overflow.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
item-info.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
item-summary-table.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
javascript-disabled.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
jump-to-def-background.goml Migrate GUI colors test to original CSS color format 2023-05-23 15:26:59 +02:00
label-next-to-symbol.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
links-color.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
list_code_block.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
method-margins.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
mobile.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
module-items-font.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
no-docblock.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
notable-trait.goml rustdoc: add hover indicator for notable trait tooltip 2023-05-23 17:19:35 -07:00
overflow-tooltip-information.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
pocket-menu.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
README.md
run-on-hover.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
rust-logo.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
scrape-examples-button-focus.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
scrape-examples-color.goml Rollup merge of #111844 - GuillaumeGomez:migrate-gui-test-color-4, r=notriddle 2023-05-23 00:32:20 +05:30
scrape-examples-fonts.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
scrape-examples-layout.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
scrape-examples-toggle.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-corrections.goml rustdoc-search: use more descriptive "x not found; y instead" message 2023-04-20 14:32:02 -07:00
search-error.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-filter.goml Add/update tests for --extend-css option 2023-04-12 20:07:10 +02:00
search-form-elements.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-input-mobile.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-keyboard.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-no-result.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-reexport.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-result-color.goml Convert more GUI tests colors to their original format 2023-05-14 00:16:16 +02:00
search-result-description.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-result-display.goml Migrate GUI colors test to original CSS color format 2023-05-28 18:47:29 +02:00
search-result-go-to-first.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-result-keyword.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-tab-change-title-fn-sig.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
search-tab.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
setting-auto-hide-content-large-items.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
setting-auto-hide-item-methods-docs.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
setting-auto-hide-trait-implementations.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
setting-go-to-only-result.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
settings.goml rustdoc: remove unneeded position: relative setting CSS 2023-05-22 16:46:29 -07:00
shortcuts.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
sidebar-links-color.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
sidebar-macro-reexport.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
sidebar-mobile-scroll.goml rustdoc: use CSS overscroll-behavior instead of JavaScript 2023-04-12 10:31:06 -07:00
sidebar-mobile.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
sidebar-source-code-display.goml Convert some GUI tests color checks to use original format 2023-05-11 11:49:16 +02:00
sidebar-source-code.goml Add/update tests for --extend-css option 2023-04-12 20:07:10 +02:00
sidebar.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
source-anchor-scroll.goml add compiletest headers to rustdoc-gui tests 2023-05-20 14:41:37 +03:00
source-code-page-code-scroll.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
source-code-page.goml Migrate GUI colors test to original CSS color format 2023-05-18 17:02:51 +02:00
src-font-size.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
stab-badge.goml Migrate GUI colors test to original CSS color format 2023-05-24 14:41:18 +02:00
struct-fields.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
target.goml Migrate GUI colors test to original CSS color format 2023-05-29 16:03:56 +02:00
theme-change.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
theme-defaults.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
theme-in-history.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
toggle-click-deadspace.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
toggle-docs-mobile.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
toggle-docs.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
toggle-implementors.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
toggled-open-implementations.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
trait-sidebar-item-order.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
type-declation-overflow.goml Migrate to 0.16.0 browser-ui-test version 2023-05-11 11:34:22 +02:00
unsafe-fn.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +02:00
where-whitespace.goml Update rustdoc GUI tests to new browser-ui-test version 2023-04-11 19:14:35 +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