mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-03 02:40:40 +00:00

stuff like "clicking the settings menu closes the mobile sidebar" is now impossible for users to observe, since the mobile sidebar will always cover the settings menu due to being full-width, which is good because that behavior is also now impossible for our testing framework to observe.
258 lines
8.2 KiB
Plaintext
258 lines
8.2 KiB
Plaintext
// This test checks the position of the `i` for the notable traits.
|
|
include: "utils.goml"
|
|
go-to: "file://" + |DOC_PATH| + "/test_docs/struct.NotableStructWithLongName.html"
|
|
show-text: true
|
|
|
|
define-function: (
|
|
"check-notable-tooltip-position",
|
|
[x, i_x],
|
|
block {
|
|
// Checking they have the same y position.
|
|
compare-elements-position: (
|
|
"//*[@id='method.create_an_iterator_from_read']//a[normalize-space()='NotableStructWithLongName']",
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
["y"],
|
|
)
|
|
// Checking they don't have the same x position.
|
|
compare-elements-position-false: (
|
|
"//*[@id='method.create_an_iterator_from_read']//a[normalize-space()='NotableStructWithLongName']",
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
["x"],
|
|
)
|
|
// The `i` should be *after* the type.
|
|
assert-position: (
|
|
"//*[@id='method.create_an_iterator_from_read']//a[normalize-space()='NotableStructWithLongName']",
|
|
{"x": |x|},
|
|
)
|
|
assert-position: (
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
{"x": |i_x|},
|
|
)
|
|
},
|
|
)
|
|
|
|
define-function: (
|
|
"check-notable-tooltip-position-complete",
|
|
[x, i_x, popover_x],
|
|
block {
|
|
call-function: ("check-notable-tooltip-position", {"x": |x|, "i_x": |i_x|})
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
compare-elements-position-near: (
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
"//*[@class='tooltip popover']",
|
|
{"y": 30}
|
|
)
|
|
compare-elements-position-false: (
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
"//*[@class='tooltip popover']",
|
|
["x"]
|
|
)
|
|
assert-position: (
|
|
"//*[@class='tooltip popover']",
|
|
{"x": |popover_x|}
|
|
)
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
move-cursor-to: "//h1"
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
},
|
|
)
|
|
|
|
// We start with a wide screen.
|
|
set-window-size: (1100, 600)
|
|
call-function: ("check-notable-tooltip-position-complete", {
|
|
"x": 682,
|
|
"i_x": 960,
|
|
"popover_x": 468,
|
|
})
|
|
|
|
// Now only the `i` should be on the next line.
|
|
set-window-size: (1055, 600)
|
|
compare-elements-position-false: (
|
|
"//*[@id='method.create_an_iterator_from_read']//a[normalize-space()='NotableStructWithLongName']",
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
["y", "x"],
|
|
)
|
|
|
|
// Now both the `i` and the struct name should be on the next line.
|
|
set-window-size: (980, 600)
|
|
call-function: ("check-notable-tooltip-position", {
|
|
"x": 250,
|
|
"i_x": 528,
|
|
})
|
|
|
|
// Checking on mobile now.
|
|
set-window-size: (650, 600)
|
|
wait-for-size: ("body", {"width": 650})
|
|
call-function: ("check-notable-tooltip-position-complete", {
|
|
"x": 26,
|
|
"i_x": 305,
|
|
"popover_x": 0,
|
|
})
|
|
|
|
// Now check the colors.
|
|
define-function: (
|
|
"check-colors",
|
|
[theme, header_color, content_color, type_color, trait_color, link_color],
|
|
block {
|
|
go-to: "file://" + |DOC_PATH| + "/test_docs/struct.NotableStructWithLongName.html"
|
|
// This is needed to ensure that the text color is computed.
|
|
show-text: true
|
|
|
|
call-function: ("switch-theme", {"theme": |theme|})
|
|
|
|
assert-css: (
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
{"color": |content_color|},
|
|
ALL,
|
|
)
|
|
|
|
move-cursor-to: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
wait-for-count: (".tooltip.popover", 1)
|
|
|
|
assert-css: (
|
|
"//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']",
|
|
{"color": |link_color|},
|
|
ALL,
|
|
)
|
|
|
|
assert-css: (
|
|
".tooltip.popover h3",
|
|
{"color": |header_color|},
|
|
ALL,
|
|
)
|
|
assert-css: (
|
|
".tooltip.popover pre",
|
|
{"color": |content_color|},
|
|
ALL,
|
|
)
|
|
assert-css: (
|
|
".tooltip.popover pre a.struct",
|
|
{"color": |type_color|},
|
|
ALL,
|
|
)
|
|
assert-css: (
|
|
".tooltip.popover pre a.trait",
|
|
{"color": |trait_color|},
|
|
ALL,
|
|
)
|
|
},
|
|
)
|
|
|
|
call-function: (
|
|
"check-colors",
|
|
{
|
|
"theme": "ayu",
|
|
"link_color": "#39afd7",
|
|
"content_color": "#e6e1cf",
|
|
"header_color": "#fff",
|
|
"type_color": "#ffa0a5",
|
|
"trait_color": "#39afd7",
|
|
},
|
|
)
|
|
|
|
call-function: (
|
|
"check-colors",
|
|
{
|
|
"theme": "dark",
|
|
"link_color": "#d2991d",
|
|
"content_color": "#ddd",
|
|
"header_color": "#ddd",
|
|
"type_color": "#2dbfb8",
|
|
"trait_color": "#b78cf2",
|
|
},
|
|
)
|
|
|
|
call-function: (
|
|
"check-colors",
|
|
{
|
|
"theme": "light",
|
|
"link_color": "#3873ad",
|
|
"content_color": "black",
|
|
"header_color": "black",
|
|
"type_color": "#ad378a",
|
|
"trait_color": "#6e4fc9",
|
|
},
|
|
)
|
|
|
|
reload:
|
|
|
|
// Check that pressing escape works
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
move-cursor-to: "//*[@class='tooltip popover']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
press-key: "Escape"
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
assert: "#method\.create_an_iterator_from_read .tooltip:focus"
|
|
|
|
// Check that clicking outside works.
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
click: ".search-input"
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
assert-false: "#method\.create_an_iterator_from_read .tooltip:focus"
|
|
|
|
// Check that pressing tab over and over works.
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
move-cursor-to: "//*[@class='tooltip popover']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
press-key: "Tab"
|
|
press-key: "Tab"
|
|
press-key: "Tab"
|
|
press-key: "Tab"
|
|
press-key: "Tab"
|
|
press-key: "Tab"
|
|
press-key: "Tab"
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
assert: "#method\.create_an_iterator_from_read .tooltip:focus"
|
|
|
|
define-function: (
|
|
"setup-popup",
|
|
[],
|
|
block {
|
|
store-window-property: {"scrollY": scroll}
|
|
click: "#method\.create_an_iterator_from_read .fn"
|
|
// We ensure that the scroll position changed.
|
|
assert-window-property-false: {"scrollY": |scroll|}
|
|
// Store the new position.
|
|
store-window-property: {"scrollY": scroll}
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
wait-for: "//*[@class='tooltip popover']"
|
|
click: "#settings-menu a"
|
|
}
|
|
)
|
|
|
|
// Now we check that the focus isn't given back to the wrong item when opening
|
|
// another popover.
|
|
call-function: ("setup-popup", {})
|
|
click: ".search-input"
|
|
// We ensure we didn't come back to the previous focused item.
|
|
assert-window-property-false: {"scrollY": |scroll|}
|
|
|
|
// Same but with Escape handling.
|
|
call-function: ("setup-popup", {})
|
|
press-key: "Escape"
|
|
// We ensure we didn't come back to the previous focused item.
|
|
assert-window-property-false: {"scrollY": |scroll|}
|
|
|
|
// Opening the mobile sidebar should close the popover.
|
|
set-window-size: (650, 600)
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
click: ".sidebar-menu-toggle"
|
|
assert: "//*[@class='sidebar shown']"
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
assert-false: "#method\.create_an_iterator_from_read .tooltip:focus"
|
|
|
|
// Also check the focus handling for the settings button.
|
|
set-window-size: (1100, 600)
|
|
reload:
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
click: "#settings-menu a"
|
|
wait-for: "#settings"
|
|
assert-count: ("//*[@class='tooltip popover']", 0)
|
|
assert-false: "#method\.create_an_iterator_from_read .tooltip:focus"
|