HasTooltipElement.java

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

import com.microsoft.playwright.Locator;
import com.microsoft.playwright.assertions.LocatorAssertions;
import com.microsoft.playwright.options.AriaRole;

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

/**
 * Utilities to interact with components implementing
 * Vaadin's HasTooltip the first child with role tooltip
 */
public interface HasTooltipElement extends HasLocatorElement {

    /** Locator for the tooltip content (role=tooltip). */
    default Locator getTooltipLocator() {
        return getLocator().getByRole(AriaRole.TOOLTIP,
                new Locator.GetByRoleOptions()
                        .setIncludeHidden(true)).first();
    }

    /** Tooltip text content. */
    default String getTooltipText() {
        return getTooltipLocator().textContent();
    }

    default void assertTooltipHasText(String text) {
        if (text != null) {
            assertThat(getTooltipLocator()).hasText(text, new LocatorAssertions.HasTextOptions().setUseInnerText(true));
        } else {
            assertThat(getTooltipLocator()).not().isVisible();
        }
    }
}