mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			182 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// Checks multiple things on the sidebar display (width of its elements, colors, etc).
 | 
						||
include: "utils.goml"
 | 
						||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
show-text: true
 | 
						||
 | 
						||
// First, check the sidebar colors.
 | 
						||
define-function: (
 | 
						||
    "check-colors",
 | 
						||
    [theme, color, background_color],
 | 
						||
    block {
 | 
						||
        call-function: ("switch-theme", {"theme": |theme|})
 | 
						||
        // Checking results colors.
 | 
						||
        assert-css: (".sidebar", {
 | 
						||
            "color": |color|,
 | 
						||
            "background-color": |background_color|
 | 
						||
        }, ALL)
 | 
						||
    },
 | 
						||
)
 | 
						||
 | 
						||
call-function: (
 | 
						||
    "check-colors",
 | 
						||
    {
 | 
						||
        "theme": "ayu",
 | 
						||
        "color": "#c5c5c5",
 | 
						||
        "background_color": "#14191f",
 | 
						||
    }
 | 
						||
)
 | 
						||
call-function: (
 | 
						||
    "check-colors",
 | 
						||
    {
 | 
						||
        "theme": "dark",
 | 
						||
        "color": "#ddd",
 | 
						||
        "background_color": "#505050",
 | 
						||
    }
 | 
						||
)
 | 
						||
call-function: (
 | 
						||
    "check-colors",
 | 
						||
    {
 | 
						||
        "theme": "light",
 | 
						||
        "color": "black",
 | 
						||
        "background_color": "#f5f5f5",
 | 
						||
    }
 | 
						||
)
 | 
						||
 | 
						||
call-function: ("switch-theme", {"theme": "light"})
 | 
						||
 | 
						||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "test_docs")
 | 
						||
// Crate root has no "location" element
 | 
						||
assert-count: (".sidebar .location", 0)
 | 
						||
assert-count: (".sidebar h2", 1)
 | 
						||
assert-text: ("#all-types", "All Items")
 | 
						||
assert-css: ("#all-types", {"color": "#356da4"})
 | 
						||
// We check that we have the crates list and that the "current" on is "test_docs".
 | 
						||
assert-text: (".sidebar-elems ul.crate > li.current > a", "test_docs")
 | 
						||
// And we're also supposed to have the list of items in the current module.
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(1)", "Re-exports")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(2)", "Modules")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(3)", "Macros")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(4)", "Structs")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(5)", "Enums")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(6)", "Constants")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(7)", "Traits")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(8)", "Functions")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(9)", "Type Aliases")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(10)", "Unions")
 | 
						||
assert-text: (".sidebar-elems section ul > li:nth-child(11)", "Keywords")
 | 
						||
assert-text: ("#structs + .item-table .item-name > a", "Foo")
 | 
						||
click: "#structs + .item-table .item-name > a"
 | 
						||
 | 
						||
// PAGE: struct.Foo.html
 | 
						||
assert-count: (".sidebar .sidebar-crate", 1)
 | 
						||
assert-count: (".sidebar .location", 1)
 | 
						||
assert-count: (".sidebar h2", 3)
 | 
						||
// We check that there is no crate listed outside of the top level.
 | 
						||
assert-false: ".sidebar-elems > .crate"
 | 
						||
 | 
						||
click: ".sidebar-elems section .block li > a"
 | 
						||
assert-property-false: ("html", {"scrollTop": "0"})
 | 
						||
 | 
						||
click: ".sidebar h2.location a"
 | 
						||
assert-property: ("html", {"scrollTop": "0"})
 | 
						||
 | 
						||
// We now go back to the crate page to click on the "lib2" crate link.
 | 
						||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
assert-css: (".sidebar-elems ul.crate > li:first-child > a", {"color": "#356da4"})
 | 
						||
click: ".sidebar-elems ul.crate > li:first-child > a"
 | 
						||
 | 
						||
// PAGE: lib2/index.html
 | 
						||
go-to: "file://" + |DOC_PATH| + "/lib2/index.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
 | 
						||
assert-count: (".sidebar .location", 0)
 | 
						||
// We check that we have the crates list and that the "current" on is now "lib2".
 | 
						||
assert-text: (".sidebar-elems ul.crate > li.current > a", "lib2")
 | 
						||
// We now go to the "foobar" function page.
 | 
						||
assert-text: (".sidebar-elems > section ul.block > li:nth-child(1)", "Modules")
 | 
						||
assert-text: (".sidebar-elems > section ul.block > li:nth-child(2)", "Structs")
 | 
						||
assert-text: (".sidebar-elems > section ul.block > li:nth-child(3)", "Traits")
 | 
						||
assert-text: (".sidebar-elems > section ul.block > li:nth-child(4)", "Functions")
 | 
						||
assert-text: (".sidebar-elems > section ul.block > li:nth-child(5)", "Type Aliases")
 | 
						||
assert-text: ("#functions + .item-table .item-name > a", "foobar")
 | 
						||
click: "#functions + .item-table .item-name > a"
 | 
						||
 | 
						||
// PAGE: fn.foobar.html
 | 
						||
// In items containing no items (like functions or constants) and in modules, we have no
 | 
						||
// "location" elements. Only the crate and optional parent module.
 | 
						||
// This page, being directly below the crate, only has its heading.
 | 
						||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
 | 
						||
assert-count: (".sidebar .location", 0)
 | 
						||
assert-count: (".sidebar h2", 1)
 | 
						||
// We check that we don't have the crate list.
 | 
						||
assert-false: ".sidebar-elems > .crate"
 | 
						||
 | 
						||
go-to: "./module/index.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
 | 
						||
assert-text: (".sidebar > .location", "Module module")
 | 
						||
assert-count: (".sidebar .location", 1)
 | 
						||
// Module page requires three headings:
 | 
						||
//   - Presistent crate branding (name and version)
 | 
						||
//   - Module name, followed by TOC for module headings
 | 
						||
//   - "In crate [name]" parent pointer, followed by sibling navigation
 | 
						||
assert-count: (".sidebar h2", 3)
 | 
						||
assert-text: (".sidebar > .sidebar-elems > h2", "In crate lib2")
 | 
						||
assert-property: (".sidebar > .sidebar-elems > h2 > a", {
 | 
						||
    "href": "/lib2/index.html",
 | 
						||
}, ENDS_WITH)
 | 
						||
// We check that we don't have the crate list.
 | 
						||
assert-false: ".sidebar-elems > .crate"
 | 
						||
 | 
						||
go-to: "./sub_module/sub_sub_module/index.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
 | 
						||
assert-text: (".sidebar > .location", "Module sub_sub_module")
 | 
						||
assert-text: (".sidebar > .sidebar-elems > h2", "In lib2::module::sub_module")
 | 
						||
assert-property: (".sidebar > .sidebar-elems > h2 > a", {
 | 
						||
    "href": "/module/sub_module/index.html",
 | 
						||
}, ENDS_WITH)
 | 
						||
// We check that we don't have the crate list.
 | 
						||
assert-false: ".sidebar-elems .crate"
 | 
						||
assert-text: (".sidebar-elems > section ul > li:nth-child(1)", "Functions")
 | 
						||
assert-text: ("#functions + .item-table .item-name > a", "foo")
 | 
						||
 | 
						||
// Links to trait implementations in the sidebar should not wrap even if they are long.
 | 
						||
go-to: "file://" + |DOC_PATH| + "/lib2/struct.HasALongTraitWithParams.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
assert-property: (".sidebar-elems section .block li > a", {"offsetHeight": 29})
 | 
						||
 | 
						||
// Test that clicking on of the "In <module>" headings in the sidebar links to the
 | 
						||
// appropriate anchor in index.html.
 | 
						||
go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
click: "//ul[@class='block mod']/preceding-sibling::h3/a"
 | 
						||
// PAGE: index.html
 | 
						||
assert-css: ("#modules", {"background-color": "#fdffd3"})
 | 
						||
 | 
						||
// Finally, assert that the `[+]/[−]` toggle doesn't affect sidebar width.
 | 
						||
click: "#toggle-all-docs"
 | 
						||
assert-text: ("#toggle-all-docs", "[+]")
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
click: "#toggle-all-docs"
 | 
						||
assert-text: ("#toggle-all-docs", "[−]")
 | 
						||
assert-property: (".sidebar", {"clientWidth": "200"})
 | 
						||
 | 
						||
// Checks that all.html and index.html have their sidebar link in the same place.
 | 
						||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
 | 
						||
store-property: (".sidebar .sidebar-crate h2 a", {
 | 
						||
    "clientWidth": index_sidebar_width,
 | 
						||
    "clientHeight": index_sidebar_height,
 | 
						||
    "offsetTop": index_sidebar_y,
 | 
						||
    "offsetLeft": index_sidebar_x,
 | 
						||
})
 | 
						||
go-to: "file://" + |DOC_PATH| + "/test_docs/all.html"
 | 
						||
assert-property: (".sidebar .sidebar-crate h2 a", {
 | 
						||
    "clientWidth": |index_sidebar_width|,
 | 
						||
    "clientHeight": |index_sidebar_height|,
 | 
						||
    "offsetTop": |index_sidebar_y|,
 | 
						||
    "offsetLeft": |index_sidebar_x|,
 | 
						||
})
 |