2022-06-20 09:29:16 -05:00
|
|
|
// This test ensures that the "pocket menus" are working as expected.
|
2024-04-05 14:38:55 -05:00
|
|
|
include: "utils.goml"
|
rustdoc: redesign toolbar and disclosure widgets
This adds labels to the icons and moves them away from the search box.
These changes are made together, because they work together, but are based on
several complaints:
* The [+/-] thing are a Reddit-ism. They don't look like buttons, but look
like syntax
<https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons>,
<https://github.com/rust-lang/rust/issues/59851>
(some of these are laundry lists with more suggestions, but they all
mention [+/-] looking wrong)
* The settings, help, and summary buttons are also too hard to recognize
<https://lwn.net/Articles/987070/>,
<https://github.com/rust-lang/rust/issues/90310>,
<https://github.com/rust-lang/rust/issues/14475#issuecomment-274241997>,
<https://internals.rust-lang.org/t/improve-rustdoc-design/12758>
("Not all functionality is self-explanatory, for example the [+] button in
the top right corner, the theme picker or the settings button.")
The toggle-all and toggle-individual buttons both need done at once, since we
want them to look like they go together. This changes them from both being
[+/-] to both being arrows.
Settings and Help are also migrated, so that the whole group can benefit from
being described using actual words.
Additionally, the Help button is only shown on SERPs, not all the time.
This is done for two major reasons:
* Most of what's in there is search-related. The things that aren't are
keyboard commands, and the search box tells you about that anyway.
Pressing <kbd>?</kbd> will temporarily show the button and its popover.
* I'm trading it off by showing the help button, even on mobile.
It's useful since you can use the search engine suggestions there.
* The three buttons were causing line wrapping on too many desktop layouts.
2024-08-25 01:11:30 -05:00
|
|
|
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html?search=test"
|
|
|
|
wait-for: "#crate-search"
|
2022-06-20 09:29:16 -05:00
|
|
|
// First we check that the help menu doesn't exist yet.
|
|
|
|
assert-false: "#help-button .popover"
|
|
|
|
// Then we display the help menu.
|
|
|
|
click: "#help-button"
|
|
|
|
assert: "#help-button .popover"
|
|
|
|
assert-css: ("#help-button .popover", {"display": "block"})
|
|
|
|
|
|
|
|
// Now we click somewhere else on the page to ensure it is handling the blur event
|
|
|
|
// correctly.
|
|
|
|
click: ".sidebar"
|
|
|
|
assert-css: ("#help-button .popover", {"display": "none"})
|
|
|
|
|
|
|
|
// Now we will check that we cannot have two "pocket menus" displayed at the same time.
|
|
|
|
click: "#help-button"
|
|
|
|
assert-css: ("#help-button .popover", {"display": "block"})
|
|
|
|
click: "#settings-menu"
|
|
|
|
assert-css: ("#help-button .popover", {"display": "none"})
|
|
|
|
assert-css: ("#settings-menu .popover", {"display": "block"})
|
|
|
|
|
|
|
|
// Now the other way.
|
|
|
|
click: "#help-button"
|
|
|
|
assert-css: ("#help-button .popover", {"display": "block"})
|
|
|
|
assert-css: ("#settings-menu .popover", {"display": "none"})
|
|
|
|
|
2022-06-28 16:16:05 -05:00
|
|
|
// Now verify that clicking the help menu again closes it.
|
|
|
|
click: "#help-button"
|
|
|
|
assert-css: ("#help-button .popover", {"display": "none"})
|
|
|
|
assert-css: ("#settings-menu .popover", {"display": "none"})
|
|
|
|
|
2023-08-01 17:44:41 -05:00
|
|
|
define-function: (
|
|
|
|
"check-popover-colors",
|
2024-04-01 14:11:22 -05:00
|
|
|
[theme, border_color],
|
2023-08-01 17:44:41 -05:00
|
|
|
block {
|
2024-04-05 14:38:55 -05:00
|
|
|
call-function: ("switch-theme", {"theme": |theme|})
|
2022-06-20 09:29:16 -05:00
|
|
|
|
2023-08-01 17:44:41 -05:00
|
|
|
click: "#help-button"
|
|
|
|
assert-css: (
|
|
|
|
"#help-button .popover",
|
|
|
|
{"display": "block", "border-color": |border_color|},
|
|
|
|
)
|
|
|
|
compare-elements-css: ("#help-button .popover", "#help-button .top", ["border-color"])
|
|
|
|
compare-elements-css: ("#help-button .popover", "#help-button .bottom", ["border-color"])
|
|
|
|
}
|
2022-06-20 09:29:16 -05:00
|
|
|
)
|
|
|
|
|
2023-08-01 17:44:41 -05:00
|
|
|
// We check the borders color now:
|
|
|
|
call-function: ("check-popover-colors", {
|
|
|
|
"theme": "ayu",
|
|
|
|
"border_color": "#5c6773",
|
|
|
|
})
|
|
|
|
call-function: ("check-popover-colors", {
|
|
|
|
"theme": "dark",
|
|
|
|
"border_color": "#e0e0e0",
|
|
|
|
})
|
|
|
|
call-function: ("check-popover-colors", {
|
|
|
|
"theme": "light",
|
|
|
|
"border_color": "#e0e0e0",
|
|
|
|
})
|
rustdoc: improve popover focus handling JS
This commit fixes a few inconsistencies and erratic behavior from the
notable traits, settings, and sidebar popups:
* It makes it so that pressing Escape closes the mobile sidebar.
This is a bit difficult to do on iPhone, but on other setups like
desktop tiling window managers, it's easy and makes sense.
* It makes sure that pressing escape while a notable trait popover is
open focuses the popover's toggle button, instead of leaving nothing
focused, since that makes more sense with keyboard navigation. Clicking
the settings, help, or sidebar buttons, however, will not focus the
notable trait popover toggle button.
* It ensures that notable trait and settings popovers are exclusive
with the mobile sidebar. Nothing should ever overlap a popover, and
there should never be more than one popover open at once.
2022-11-26 10:52:58 -06:00
|
|
|
|
|
|
|
// Opening the mobile sidebar should close the settings popover.
|
2023-04-11 12:11:34 -05:00
|
|
|
set-window-size: (650, 600)
|
rustdoc: improve popover focus handling JS
This commit fixes a few inconsistencies and erratic behavior from the
notable traits, settings, and sidebar popups:
* It makes it so that pressing Escape closes the mobile sidebar.
This is a bit difficult to do on iPhone, but on other setups like
desktop tiling window managers, it's easy and makes sense.
* It makes sure that pressing escape while a notable trait popover is
open focuses the popover's toggle button, instead of leaving nothing
focused, since that makes more sense with keyboard navigation. Clicking
the settings, help, or sidebar buttons, however, will not focus the
notable trait popover toggle button.
* It ensures that notable trait and settings popovers are exclusive
with the mobile sidebar. Nothing should ever overlap a popover, and
there should never be more than one popover open at once.
2022-11-26 10:52:58 -06:00
|
|
|
click: "#settings-menu a"
|
|
|
|
assert-css: ("#settings-menu .popover", {"display": "block"})
|
|
|
|
click: ".sidebar-menu-toggle"
|
|
|
|
assert: "//*[@class='sidebar shown']"
|
|
|
|
assert-css: ("#settings-menu .popover", {"display": "none"})
|
|
|
|
// Opening the settings popover should close the sidebar.
|
|
|
|
click: "#settings-menu a"
|
|
|
|
assert-css: ("#settings-menu .popover", {"display": "block"})
|
|
|
|
assert-false: "//*[@class='sidebar shown']"
|
|
|
|
|
|
|
|
// Opening the settings popover at start (which async loads stuff) should also close.
|
|
|
|
reload:
|
|
|
|
click: ".sidebar-menu-toggle"
|
|
|
|
assert: "//*[@class='sidebar shown']"
|
|
|
|
assert-false: "#settings-menu .popover"
|
|
|
|
click: "#settings-menu a"
|
|
|
|
assert-false: "//*[@class='sidebar shown']"
|
|
|
|
wait-for: "#settings-menu .popover"
|