mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
262 lines
8.4 KiB
Plaintext
262 lines
8.4 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": 677,
|
|
"i_x": 955,
|
|
"popover_x": 463,
|
|
})
|
|
|
|
// 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": 245,
|
|
"i_x": 523,
|
|
})
|
|
|
|
// Checking on mobile now.
|
|
set-window-size: (650, 600)
|
|
wait-for-size: ("body", {"width": 650})
|
|
call-function: ("check-notable-tooltip-position-complete", {
|
|
"x": 25,
|
|
"i_x": 303,
|
|
"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"
|
|
// Clicking a notable trait tooltip popover should close the sidebar.
|
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='tooltip']"
|
|
assert-count: ("//*[@class='tooltip popover']", 1)
|
|
assert-false: "//*[@class='sidebar shown']"
|
|
|
|
// 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"
|