| // 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" |