| // 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|, |
| }) |