// Checks that the setting "auto hide trait implementations" is working as expected.

define-function: (
    "check-setting",
    [storage_value, setting_attribute_value, toggle_attribute_value],
    block {
        assert-local-storage: {"rustdoc-auto-hide-trait-implementations": |storage_value|}
        click: "#settings-menu"
        wait-for: "#settings"
        assert-property: ("#auto-hide-trait-implementations", {"checked": |setting_attribute_value|})
        assert-attribute: ("#trait-implementations-list > details", {"open": |toggle_attribute_value|}, ALL)
    }
)

go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"

// By default, the trait implementations are not collapsed.
call-function: ("check-setting", {
    "storage_value": null,
    "setting_attribute_value": "false",
    "toggle_attribute_value": "",
})

// Now we change its value.
click: "#auto-hide-trait-implementations"
assert-local-storage: {"rustdoc-auto-hide-trait-implementations": "true"}

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

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

// And now we re-disable the setting.
click: "#auto-hide-trait-implementations"
assert-local-storage: {"rustdoc-auto-hide-trait-implementations": "false"}

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