blob: 14421ab746f52bf0596b75287c07fbe8b41fe548 [file] [log] [blame] [edit]
// Checks that the "copy code" button is not triggering JS error and its display
// isn't broken.
go-to: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html"
define-function: (
"check-copy-button",
[],
block {
// First we ensure that there are no "copy code" currently existing.
assert-count: (".example-wrap .copy-button", 0)
move-cursor-to: ".example-wrap"
assert-count: (".example-wrap .copy-button", 1)
// We now ensure it's only displayed when the example is hovered.
assert-css: (".example-wrap .copy-button", { "visibility": "visible" })
move-cursor-to: "rustdoc-toolbar #search-button"
assert-css: (".example-wrap .copy-button", { "visibility": "hidden" })
// Checking that the copy button has the same size as the "copy path" button.
compare-elements-size: (
"#copy-path",
".example-wrap:nth-of-type(1) .copy-button",
["height", "width"],
)
},
)
call-function: ("check-copy-button", {})
// Checking that the run button and the copy button have the same height and same width.
compare-elements-size: (
".example-wrap:nth-of-type(1) .test-arrow",
".example-wrap:nth-of-type(1) .copy-button",
["height", "width"],
)
// ... and the same y position.
compare-elements-position: (
".example-wrap:nth-of-type(1) .test-arrow",
".example-wrap:nth-of-type(1) .copy-button",
["y"],
)
store-size: (".example-wrap:nth-of-type(1) .copy-button", {
"height": copy_height,
"width": copy_width,
})
assert: |copy_height| > 0 && |copy_width| > 0
// We now check that copying code when line numbers are displayed don't include these line numbers.
// First we ensure that the clipboard is empty.
assert-clipboard: ""
// We make the line numbers appear.
click: "rustdoc-toolbar .settings-menu"
wait-for-css: ("#settings", {"display": "block"})
// We make the line numbers appear.
click: "#line-numbers"
wait-for-local-storage: {"rustdoc-line-numbers": "true" }
// We close the settings menu.
click: "rustdoc-toolbar .settings-menu"
wait-for-css-false: ("#settings", {"display": "block"})
// We ensure that there are actually line numbers generated in the DOM.
assert-text: (".example-wrap pre.rust code span[data-nosnippet]", "1")
// We make the copy button appear.
move-cursor-to: ".example-wrap pre.rust code"
wait-for-css: (".example-wrap .button-holder", {"visibility": "visible"})
// We click on the copy button.
click: ".example-wrap .button-holder .copy-button"
assert-clipboard: 'println!("nothing fancy");
println!("but with two lines!");'
// Back to UI checks, checking same things for the copy button when there is no run button.
go-to: "file://" + |DOC_PATH| + "/lib2/sub_mod/struct.Foo.html"
call-function: ("check-copy-button", {})
// Ensure there is no run button.
assert-count: (".example-wrap .test-arrow", 0)
// Check it's the same size without a run button.
assert-size: (".example-wrap:nth-of-type(1) .copy-button", {
"height": |copy_height|,
"width": |copy_width|,
})