// The goal of this test is to check that the external trait implementors, generated with JS, // have the same display than the "local" ones. go-to: "file://" + |DOC_PATH| + "/implementors/trait.Whatever.html" wait-for-css: ("#implementors-list", {"display": "block"}) // There are supposed to be four implementors listed. assert-count: ("#implementors-list .impl", 4) // There are supposed to be two non-negative implementors. assert-count: ("#implementors-list .negative-marker ~ *", 2) // Now we check that both implementors have an anchor, an ID and a similar DOM. define-function: ( "check-dom", [id], block { assert-attribute: (|id| + " > a.anchor", {"href": |id|}) assert: |id| + " > .code-header" }, ) call-function: ("check-dom", {"id": "#impl-Whatever-for-Struct2"}) call-function: ("check-dom", {"id": "#impl-Whatever-2"}) call-function: ("check-dom", {"id": "#impl-Whatever-for-Struct"}) call-function: ("check-dom", {"id": "#impl-Whatever-3"}) // Ensure that negative impl are sorted first. assert-property: ( "#implementors-list > *:nth-child(1) > h3", {"textContent": "impl !Whatever for Struct2"}, ) assert-property: ( "#implementors-list > *:nth-child(2) > h3", {"textContent": "impl !Whatever for StructToImplOnReexport"}, ) // Third one is the negative marker. assert-attribute: ("#implementors-list > *:nth-child(3)", {"class": "negative-marker"}) // This one is a `` so the selector is a bit different. assert-property: ( "#implementors-list > *:nth-child(4) section > h3", {"textContent": "impl Whatever for Struct"}, ) assert-property: ( "#implementors-list > *:nth-child(5) > h3", {"textContent": "impl Whatever for Foo"}, ) go-to: "file://" + |DOC_PATH| + "/test_docs/struct.HasEmptyTraits.html" compare-elements-position-near-false: ( "#impl-EmptyTrait1-for-HasEmptyTraits", "#impl-EmptyTrait2-for-HasEmptyTraits", {"y": 34}, ) compare-elements-position-near: ( "#impl-EmptyTrait3-for-HasEmptyTraits h3", "#impl-EmptyTrait3-for-HasEmptyTraits .item-info", {"y": 34}, ) // Now check that re-exports work correctly. // There should be exactly one impl shown on both of these pages. go-to: "file://" + |DOC_PATH| + "/lib2/trait.TraitToReexport.html" assert-count: ("#implementors-list .impl", 1) go-to: "file://" + |DOC_PATH| + "/implementors/trait.TraitToReexport.html" assert-count: ("#implementors-list .impl", 1) // Now check that the link is properly rewritten for a crate called `http`. // An older version of rustdoc had a buggy check for absolute links. go-to: "file://" + |DOC_PATH| + "/http/trait.HttpTrait.html" assert-count: ("#implementors-list .impl", 1) assert-attribute: ("#implementors-list .impl a.trait", {"href": "../http/trait.HttpTrait.html"}) // Now we check that if JS is disabled, the implementors list will be visible. javascript: false reload: assert-css: ("#implementors-list", {"display": "block"})