HasEnabledElement.java

package org.vaadin.addons.dramafinder.element.shared;

import com.microsoft.playwright.Locator;

import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;

/**
 * Mixin for components that expose enabled/disabled state.
 */
public interface HasEnabledElement extends HasLocatorElement {

    /** Locator used to check enablement. Defaults to root. */
    default Locator getEnabledLocator() {
        return getLocator();
    }

    /** Whether the component is enabled. */
    default boolean isEnabled() {
        return getEnabledLocator().isEnabled();
    }

    /** Whether the component's enabled state matches the expected value. */
    default boolean isEnabled(boolean enabled) {
        return isEnabled() == enabled;
    }

    /** Assert that the component is enabled. */
    default void assertEnabled() {
        assertThat(getEnabledLocator()).isEnabled();
    }

    /** Assert that the component is enabled (true) or disabled (false). */
    default void assertEnabled(boolean enabled) {
        if (enabled) {
            assertEnabled();
        } else {
            assertDisabled();
        }
    }

    /** Assert that the component is disabled. */
    default void assertDisabled() {
        assertThat(getEnabledLocator()).isDisabled();
    }
}