// This test ensures that the "Auto-hide item contents for large items" setting is working as
// expected.

// We need to disable this check because `trait.impl/test_docs/trait.Iterator.js` doesn't exist.
fail-on-request-error: false

define-function: (
    "check-setting",
    [storage_value, setting_attribute_value, toggle_attribute_value],
    block {
        assert-local-storage: {"rustdoc-auto-hide-large-items": |storage_value|}
        click: "rustdoc-toolbar .settings-menu"
        wait-for: "#settings"
        assert-property: ("#auto-hide-large-items", {"checked": |setting_attribute_value|})
        assert-attribute: (".item-decl .type-contents-toggle", {"open": |toggle_attribute_value|})
    }
)

go-to: "file://" + |DOC_PATH| + "/lib2/scroll_traits/trait.Iterator.html"

// We check that the setting is enabled by default and is working.
call-function: ("check-setting", {
    "storage_value": null,
    "setting_attribute_value": "true",
    "toggle_attribute_value": null,
})

// Now we change its value.
click: "#auto-hide-large-items"
assert-local-storage: {"rustdoc-auto-hide-large-items": "false"}

// We check that the changes were applied as expected.
reload:

call-function: ("check-setting", {
    "storage_value": "false",
    "setting_attribute_value": "false",
    "toggle_attribute_value": "",
})

// And now we re-enable the setting.
click: "#auto-hide-large-items"
assert-local-storage: {"rustdoc-auto-hide-large-items": "true"}

// And we check everything is back the way it was before.
reload:
call-function: ("check-setting", {
    "storage_value": "true",
    "setting_attribute_value": "true",
    "toggle_attribute_value": null,
})
