From df8d7770b5befa50aebd93b4a031bfc5b8cc8f2a Mon Sep 17 00:00:00 2001 From: jcgueriaud1 Date: Fri, 23 Jan 2026 15:57:39 +0200 Subject: [PATCH] Update the javadoc --- .../dramafinder/element/AccordionElement.java | 19 +++++ .../element/AccordionPanelElement.java | 57 +++++++++++-- .../element/BigDecimalFieldElement.java | 1 + .../dramafinder/element/ButtonElement.java | 1 + .../dramafinder/element/CardElement.java | 21 +++++ .../dramafinder/element/CheckboxElement.java | 1 + .../element/ContextMenuElement.java | 8 +- .../element/DatePickerElement.java | 1 + .../element/DateTimePickerElement.java | 10 +++ .../dramafinder/element/DetailsElement.java | 45 ++++++++-- .../dramafinder/element/DialogElement.java | 63 +++++++++++--- .../element/EmailFieldElement.java | 1 + .../element/IntegerFieldElement.java | 1 + .../dramafinder/element/ListBoxElement.java | 22 +++++ .../dramafinder/element/MenuBarElement.java | 31 ++++++- .../dramafinder/element/MenuElement.java | 35 ++++++-- .../dramafinder/element/MenuItemElement.java | 15 +++- .../element/NotificationElement.java | 42 ++++++++-- .../element/NumberFieldElement.java | 1 + .../element/PasswordFieldElement.java | 18 ++++ .../dramafinder/element/PopoverElement.java | 33 ++++++-- .../element/ProgressBarElement.java | 82 +++++++++++++++---- .../element/RadioButtonElement.java | 29 +++++-- .../element/RadioButtonGroupElement.java | 16 ++++ .../dramafinder/element/SelectElement.java | 6 ++ .../element/SideNavigationElement.java | 11 ++- .../element/SideNavigationItemElement.java | 14 +++- .../dramafinder/element/TabElement.java | 35 ++++++-- .../dramafinder/element/TabSheetElement.java | 45 ++++++++-- .../dramafinder/element/TextAreaElement.java | 11 ++- .../dramafinder/element/TextFieldElement.java | 4 + .../element/TimePickerElement.java | 2 + .../dramafinder/element/UploadElement.java | 6 ++ .../element/shared/FocusableElement.java | 4 + .../element/shared/HasAriaLabelElement.java | 14 +++- .../element/shared/HasClearButtonElement.java | 16 +++- .../element/shared/HasEnabledElement.java | 20 ++++- .../element/shared/HasHelperElement.java | 18 +++- .../element/shared/HasLabelElement.java | 6 ++ .../element/shared/HasLocatorElement.java | 6 +- .../element/shared/HasPlaceholderElement.java | 18 +++- .../element/shared/HasPrefixElement.java | 18 +++- .../element/shared/HasStyleElement.java | 8 +- .../element/shared/HasSuffixElement.java | 18 +++- .../element/shared/HasThemeElement.java | 12 ++- .../element/shared/HasTooltipElement.java | 17 +++- .../HasValidationPropertiesElement.java | 20 ++++- .../element/shared/HasValueElement.java | 24 +++++- .../element/utils/NumberUtils.java | 12 +++ .../tests/it/NotificationViewIT.java | 1 + 50 files changed, 800 insertions(+), 119 deletions(-) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/AccordionElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/AccordionElement.java index e22f6af..3eb603a 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/AccordionElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/AccordionElement.java @@ -14,6 +14,7 @@ @PlaywrightElement(AccordionElement.FIELD_TAG_NAME) public class AccordionElement extends VaadinElement implements HasStyleElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-accordion"; /** @@ -27,6 +28,8 @@ public AccordionElement(Locator locator) { /** * Assert the number of panels present in the accordion. + * + * @param count the expected number of panels */ public void assertPanelCount(int count) { Locator panels = getLocator().locator(AccordionPanelElement.FIELD_TAG_NAME); @@ -35,6 +38,9 @@ public void assertPanelCount(int count) { /** * Get a panel by its summary text. + * + * @param summary the summary text of the panel + * @return the matching {@code AccordionPanelElement} */ public AccordionPanelElement getPanel(String summary) { return AccordionPanelElement.getAccordionPanelBySummary(getLocator(), summary); @@ -42,6 +48,8 @@ public AccordionPanelElement getPanel(String summary) { /** * Open a panel by its summary text. + * + * @param summary the summary text of the panel to open */ public void openPanel(String summary) { getPanel(summary).setOpen(true); @@ -49,6 +57,8 @@ public void openPanel(String summary) { /** * Close a panel by its summary text. + * + * @param summary the summary text of the panel to close */ public void closePanel(String summary) { getPanel(summary).setOpen(false); @@ -56,6 +66,9 @@ public void closePanel(String summary) { /** * Whether the panel with the given summary is open. + * + * @param summary the summary text of the panel + * @return {@code true} if the panel is open */ public boolean isPanelOpened(String summary) { return getPanel(summary).isOpen(); @@ -63,6 +76,8 @@ public boolean isPanelOpened(String summary) { /** * Assert that the panel with the given summary is open. + * + * @param summary the summary text of the panel */ public void assertPanelOpened(String summary) { getPanel(summary).assertOpened(); @@ -70,6 +85,8 @@ public void assertPanelOpened(String summary) { /** * Assert that the panel with the given summary is closed. + * + * @param summary the summary text of the panel */ public void assertPanelClosed(String summary) { getPanel(summary).assertClosed(); @@ -77,6 +94,8 @@ public void assertPanelClosed(String summary) { /** * Get the currently opened panel. + * + * @return the currently opened {@code AccordionPanelElement} */ public AccordionPanelElement getOpenedPanel() { return AccordionPanelElement.getOpenedAccordionPanel(getLocator()); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/AccordionPanelElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/AccordionPanelElement.java index 7632a0c..1d614ca 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/AccordionPanelElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/AccordionPanelElement.java @@ -13,49 +13,77 @@ @PlaywrightElement(AccordionPanelElement.FIELD_TAG_NAME) public class AccordionPanelElement extends VaadinElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-accordion-panel"; + /** The HTML tag name for the accordion heading. */ public static final String FIELD_HEADING_TAG_NAME = "vaadin-accordion-heading"; /** * Create a new {@code AccordionPanelElement}. + * + * @param locator the locator for the {@code } element */ public AccordionPanelElement(Locator locator) { super(locator); } - /** Assert that the panel is opened. */ + /** + * Assert that the panel is opened. + */ public void assertOpened() { assertThat(getLocator()).hasAttribute("opened", ""); } - /** Assert that the panel is closed. */ + /** + * Assert that the panel is closed. + */ public void assertClosed() { assertThat(getLocator()).not().hasAttribute("opened", ""); } - /** Whether the panel is open. */ + /** + * Whether the panel is open. + * + * @return {@code true} if the panel is open + */ public boolean isOpen() { return getLocator().getAttribute("opened") != null; } - /** Set the open state by clicking the summary when needed. */ + /** + * Set the open state by clicking the summary when needed. + * + * @param open {@code true} to open, {@code false} to close + */ public void setOpen(boolean open) { if (isOpen() != open) { getSummaryLocator().click(); } } - /** Locator pointing to the summary heading. */ + /** + * Locator pointing to the summary heading. + * + * @return the summary locator + */ public Locator getSummaryLocator() { return getLocator().locator(FIELD_HEADING_TAG_NAME); } - /** Text content of the summary heading. */ + /** + * Text content of the summary heading. + * + * @return the summary text + */ public String getSummaryText() { return getSummaryLocator().textContent(); } - /** Locator pointing to the first non-slotted content element. */ + /** + * Locator pointing to the first non-slotted content element. + * + * @return the content locator + */ public Locator getContentLocator() { return getLocator().locator("xpath=./*[not(@slot)][1]"); } @@ -70,7 +98,13 @@ public void assertContentNotVisible() { assertThat(getContentLocator()).not().isVisible(); } - /** Get an accordion panel by its summary text within a scope. */ + /** + * Get an accordion panel by its summary text within a scope. + * + * @param locator the scope to search within + * @param summary the summary text to match + * @return the matching {@code AccordionPanelElement} + */ public static AccordionPanelElement getAccordionPanelBySummary(Locator locator, String summary) { return new AccordionPanelElement(locator.locator(FIELD_TAG_NAME).filter( new Locator.FilterOptions().setHas( @@ -79,7 +113,12 @@ public static AccordionPanelElement getAccordionPanelBySummary(Locator locator, ))); } - /** Get the currently opened accordion panel within a scope. */ + /** + * Get the currently opened accordion panel within a scope. + * + * @param locator the scope to search within + * @return the opened {@code AccordionPanelElement} + */ public static AccordionPanelElement getOpenedAccordionPanel(Locator locator) { return new AccordionPanelElement(locator.locator(FIELD_TAG_NAME).filter( new Locator.FilterOptions().setHas( diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/BigDecimalFieldElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/BigDecimalFieldElement.java index 4862ce4..4a70936 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/BigDecimalFieldElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/BigDecimalFieldElement.java @@ -25,6 +25,7 @@ public class BigDecimalFieldElement extends VaadinElement HasPrefixElement, HasSuffixElement, HasClearButtonElement, HasPlaceholderElement, HasAllowedCharPatternElement, HasThemeElement, FocusableElement, HasAriaLabelElement, HasEnabledElement, HasTooltipElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-big-decimal-field"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/ButtonElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/ButtonElement.java index 97f74a3..888da76 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/ButtonElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/ButtonElement.java @@ -23,6 +23,7 @@ public class ButtonElement extends VaadinElement implements FocusableElement, HasAriaLabelElement, HasEnabledElement, HasPrefixElement, HasStyleElement, HasSuffixElement, HasThemeElement, HasTooltipElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-button"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/CardElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/CardElement.java index c61c87c..9c4b05f 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/CardElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/CardElement.java @@ -16,6 +16,7 @@ @PlaywrightElement(CardElement.FIELD_TAG_NAME) public class CardElement extends VaadinElement implements HasThemeElement, HasStyleElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-card"; /** @@ -61,6 +62,8 @@ public static CardElement getByTitle(Locator locator, String title) { /** * Locator for the title slot. + * + * @return the title locator */ public Locator getTitleLocator() { return getLocator().locator("> [slot='title']"); @@ -68,6 +71,8 @@ public Locator getTitleLocator() { /** * Locator for the subtitle slot. + * + * @return the subtitle locator */ public Locator getSubtitleLocator() { return getLocator().locator("> [slot='subtitle']"); @@ -75,6 +80,8 @@ public Locator getSubtitleLocator() { /** * Locator for the header slot. + * + * @return the header locator */ public Locator getHeaderLocator() { return getLocator().locator("> [slot='header']"); @@ -82,6 +89,8 @@ public Locator getHeaderLocator() { /** * Locator for the header prefix slot. + * + * @return the header prefix locator */ public Locator getHeaderPrefixLocator() { return getLocator().locator("> [slot='header-prefix']"); @@ -89,6 +98,8 @@ public Locator getHeaderPrefixLocator() { /** * Locator for the header suffix slot. + * + * @return the header suffix locator */ public Locator getHeaderSuffixLocator() { return getLocator().locator("> [slot='header-suffix']"); @@ -96,6 +107,8 @@ public Locator getHeaderSuffixLocator() { /** * Locator for the media slot. + * + * @return the media locator */ public Locator getMediaLocator() { return getLocator().locator("> [slot='media']"); @@ -103,6 +116,8 @@ public Locator getMediaLocator() { /** * Locator for the footer slot. + * + * @return the footer locator */ public Locator getFooterLocator() { return getLocator().locator(" > [slot='footer']"); @@ -110,6 +125,8 @@ public Locator getFooterLocator() { /** * Locator for the default (content) slot. + * + * @return the content locator */ public Locator getContentLocator() { return getLocator().locator("xpath=./*[not(@slot)][1]"); @@ -117,6 +134,8 @@ public Locator getContentLocator() { /** * Assert the card title text, or absence when {@code null}. + * + * @param title the expected title text, or {@code null} to assert absence */ public void assertTitle(String title) { if (title != null) { @@ -128,6 +147,8 @@ public void assertTitle(String title) { /** * Assert the card subtitle text, or absence when {@code null}. + * + * @param subtitle the expected subtitle text, or {@code null} to assert absence */ public void assertSubtitle(String subtitle) { if (subtitle != null) { diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/CheckboxElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/CheckboxElement.java index 086896c..7de99e1 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/CheckboxElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/CheckboxElement.java @@ -25,6 +25,7 @@ public class CheckboxElement extends VaadinElement implements FocusableElement, HasAriaLabelElement, HasEnabledElement, HasHelperElement, HasValueElement, HasStyleElement, HasLabelElement, HasValidationPropertiesElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-checkbox"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/ContextMenuElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/ContextMenuElement.java index c5084e3..2f335d4 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/ContextMenuElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/ContextMenuElement.java @@ -17,12 +17,16 @@ */ public class ContextMenuElement extends VaadinElement implements HasStyleElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-context-menu"; + /** The HTML tag name for the context menu list box. */ public static final String FIELD_LIST_BOX_TAG_NAME = "vaadin-context-menu-list-box"; /** * Create a {@code ContextMenuElement} from the page overlay. - * Get the first opened context menu + * Gets the first opened context menu. + * + * @param page the Playwright page */ public ContextMenuElement(Page page) { super(page.locator(FIELD_TAG_NAME + "[opened]")); @@ -30,6 +34,8 @@ public ContextMenuElement(Page page) { /** * Create a {@code ContextMenuElement} from an existing locator. + * + * @param locator the locator for the context menu element */ public ContextMenuElement(Locator locator) { super(locator); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/DatePickerElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/DatePickerElement.java index 78077cc..30685f0 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/DatePickerElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/DatePickerElement.java @@ -30,6 +30,7 @@ public class DatePickerElement extends VaadinElement implements HasInputFieldEle HasClearButtonElement, HasPlaceholderElement, HasThemeElement, FocusableElement, HasAriaLabelElement, HasEnabledElement, HasTooltipElement, HasLabelElement, HasHelperElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-date-picker"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/DateTimePickerElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/DateTimePickerElement.java index bb7b429..7cd6459 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/DateTimePickerElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/DateTimePickerElement.java @@ -35,7 +35,9 @@ public class DateTimePickerElement extends VaadinElement implements HasInputFiel private final DatePickerElement datePickerElement; private final TimePickerElement timePickerElement; + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-date-time-picker"; + /** The date-time formatter for ISO local date-time format. */ public static final DateTimeFormatter ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder() .parseCaseInsensitive() .append(ISO_LOCAL_DATE) @@ -178,6 +180,8 @@ public static DateTimePickerElement getByLabel(Locator locator, String label) { /** * Set only the date part (string input) and dispatch change events. + * + * @param date the date value formatted as dd/mm/yyyy */ public void setDate(String date) { datePickerElement.setValue(date); @@ -187,6 +191,8 @@ public void setDate(String date) { /** * Set only the time part (string input) and dispatch change events. + * + * @param date the time value formatted as HH:mm */ public void setTime(String date) { timePickerElement.setValue(date); @@ -196,6 +202,8 @@ public void setTime(String date) { /** * Assert the date sub-field value equals the expected string. + * + * @param date the expected date value */ public void assertDateValue(String date) { datePickerElement.assertValue(date); @@ -203,6 +211,8 @@ public void assertDateValue(String date) { /** * Assert the time sub-field value equals the expected string. + * + * @param time the expected time value */ public void assertTimeValue(String time) { timePickerElement.assertValue(time); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/DetailsElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/DetailsElement.java index a76af7c..09ffa5c 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/DetailsElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/DetailsElement.java @@ -17,9 +17,14 @@ public class DetailsElement extends VaadinElement implements HasStyleElement, HasThemeElement, HasTooltipElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-details"; - /** Create a new {@code DetailsElement}. */ + /** + * Create a new {@code DetailsElement}. + * + * @param locator the locator for the {@code } element + */ public DetailsElement(Locator locator) { super(locator); } @@ -44,35 +49,61 @@ public void assertClosed() { assertThat(getLocator()).not().hasAttribute("opened", ""); } - /** Whether the details is opened. */ + /** + * Whether the details is opened. + * + * @return {@code true} if the details is open + */ public boolean isOpen() { return getLocator().getAttribute("opened") != null; } - /** Set the opened state by clicking the summary when necessary. */ + /** + * Set the opened state by clicking the summary when necessary. + * + * @param open {@code true} to open, {@code false} to close + */ public void setOpen(boolean open) { if (isOpen() != open) { getSummaryLocator().click(); } } - /** Locator for the summary element. */ + /** + * Locator for the summary element. + * + * @return the summary locator + */ public Locator getSummaryLocator() { return getLocator().locator("vaadin-details-summary"); } - /** Text of the summary element. */ + /** + * Text of the summary element. + * + * @return the summary text + */ public String getSummaryText() { return getSummaryLocator().textContent(); } - /** Locator for the currently visible content container. */ + /** + * Locator for the currently visible content container. + * + * @return the content locator + */ public Locator getContentLocator() { return getLocator().locator("> div[aria-hidden='false']"); } - /** Get a details component by its summary text. */ + /** + * Get a details component by its summary text. + * + * @param page the Playwright page + * @param summary the summary text to match + * @return the matching {@code DetailsElement} + */ public static DetailsElement getBySummaryText(Page page, String summary) { return new DetailsElement( page.locator(FIELD_TAG_NAME).filter( diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/DialogElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/DialogElement.java index ca02625..e7b1f9c 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/DialogElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/DialogElement.java @@ -15,10 +15,13 @@ */ public class DialogElement extends VaadinElement implements HasThemeElement, HasStyleElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-dialog"; /** * Create a {@code DialogElement} by resolving the dialog with ARIA role. + * + * @param page the Playwright page */ public DialogElement(Page page) { super( @@ -26,17 +29,27 @@ public DialogElement(Page page) { .and(page.locator(FIELD_TAG_NAME))); } - /** Create a {@code DialogElement} from an existing locator. */ + /** + * Create a {@code DialogElement} from an existing locator. + * + * @param locator the locator for the dialog element + */ public DialogElement(Locator locator) { super(locator); } - /** Close the dialog using the Escape key. */ + /** + * Close the dialog using the Escape key. + */ public void closeWithEscape() { getLocator().press("Escape"); } - /** Whether the dialog is open (visible). */ + /** + * Whether the dialog is open (visible). + * + * @return {@code true} if the dialog is visible + */ public boolean isOpen() { return getLocator().isVisible(); } @@ -46,7 +59,11 @@ public void assertOpen() { assertThat(getLocator()).hasAttribute("opened", ""); } - /** Whether the dialog is modal (i.e. not modeless). */ + /** + * Whether the dialog is modal (i.e. not modeless). + * + * @return {@code true} if the dialog is modal + */ public boolean isModal() { return getLocator().getAttribute("modeless") == null; } @@ -66,33 +83,59 @@ public void assertClosed() { assertThat(getLocator()).isHidden(); } - /** Get the header text from the title slot. */ + /** + * Get the header text from the title slot. + * + * @return the header text content + */ public String getHeaderText() { return getLocator().locator("> [slot='title']").textContent(); } - /** Assert the header text matches. */ + /** + * Assert the header text matches. + * + * @param headerText the expected header text + */ public void assertHeaderText(String headerText) { assertThat(getLocator().locator("> [slot='title']")).hasText(headerText); } - /** Locator for the header content slot. */ + /** + * Locator for the header content slot. + * + * @return the header content locator + */ public Locator getHeaderLocator() { return getLocator().locator("> [slot='header-content']"); } - /** Locator for the dialog content (first non-slotted child). */ + /** + * Locator for the dialog content (first non-slotted child). + * + * @return the content locator + */ public Locator getContentLocator() { // using xpath to not pierce the shadow dom return getLocator().locator("xpath=./*[not(@slot)][1]"); } - /** Locator for the footer slot. */ + /** + * Locator for the footer slot. + * + * @return the footer locator + */ public Locator getFooterLocator() { return getLocator().locator("> [slot='footer']"); } - /** Get a dialog by its header text (accessible name). */ + /** + * Get a dialog by its header text (accessible name). + * + * @param page the Playwright page + * @param summary the accessible name of the dialog + * @return the matching {@code DialogElement} + */ public static DialogElement getByHeaderText(Page page, String summary) { return new DialogElement( page.getByRole(AriaRole.DIALOG, new Page.GetByRoleOptions().setName(summary)) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/EmailFieldElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/EmailFieldElement.java index ba4bfea..b289848 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/EmailFieldElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/EmailFieldElement.java @@ -10,6 +10,7 @@ @PlaywrightElement(EmailFieldElement.FIELD_TAG_NAME) public class EmailFieldElement extends TextFieldElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-email-field"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/IntegerFieldElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/IntegerFieldElement.java index aeee74d..a07ae4a 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/IntegerFieldElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/IntegerFieldElement.java @@ -16,6 +16,7 @@ @PlaywrightElement(IntegerFieldElement.FIELD_TAG_NAME) public class IntegerFieldElement extends AbstractNumberFieldElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-integer-field"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/ListBoxElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/ListBoxElement.java index cc3af9b..edad6c0 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/ListBoxElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/ListBoxElement.java @@ -24,8 +24,11 @@ public class ListBoxElement extends VaadinElement implements HasAriaLabelElement, HasStyleElement, HasTooltipElement, HasEnabledElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-list-box"; + /** The HTML tag name for list box items. */ public static final String FIELD_ITEM_TAG_NAME = "vaadin-item"; + /** The HTML attribute name for multiple selection mode. */ public static final String MULTIPLE_ATTRIBUTE = "multiple"; /** @@ -49,6 +52,8 @@ public void selectItem(String item) { /** * Get the selected value for single-select list boxes. + * + * @return the text content of the selected item */ public String getSingleSelectedValue() { return getLocatorValue().innerText(); @@ -56,6 +61,8 @@ public String getSingleSelectedValue() { /** * Get all selected values for multi-select list boxes. + * + * @return list of text contents of all selected items */ public List getSelectedValue() { return getLocatorValue().allTextContents(); @@ -67,6 +74,8 @@ private Locator getLocatorValue() { /** * Assert that the selected values match the expected labels. + * + * @param expected the expected selected item labels */ public void assertSelectedValue(String... expected) { int length = expected.length; @@ -94,6 +103,8 @@ public void assertDisabled() { /** * Assert that a specific item is enabled. + * + * @param item the visible label of the item */ public void assertItemEnabled(String item) { assertThat(getItem(item)).isEnabled(); @@ -101,11 +112,18 @@ public void assertItemEnabled(String item) { /** * Assert that a specific item is disabled. + * + * @param item the visible label of the item */ public void assertItemDisabled(String item) { assertThat(getItem(item)).isDisabled(); } + /** + * Whether multiple selection mode is enabled. + * + * @return {@code true} if multiple selection is enabled + */ public boolean isMultiple() { return getLocator().getAttribute(MULTIPLE_ATTRIBUTE) != null; } @@ -133,6 +151,10 @@ private Locator getItem(String label) { /** * Get the {@code ListBoxElement} by its label. + * + * @param page the Playwright page + * @param label the accessible label of the list box + * @return the matching {@code ListBoxElement} */ public static ListBoxElement getByLabel(Page page, String label) { return new ListBoxElement( diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/MenuBarElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/MenuBarElement.java index 0542893..02772bf 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/MenuBarElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/MenuBarElement.java @@ -14,25 +14,42 @@ */ public class MenuBarElement extends VaadinElement implements HasThemeElement, HasStyleElement, HasAriaLabelElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-menu-bar"; - /** Create a {@code MenuBarElement} from the page. */ + /** + * Create a {@code MenuBarElement} from the page. + * + * @param page the Playwright page + */ public MenuBarElement(Page page) { this(page.locator(FIELD_TAG_NAME)); } - /** Create a {@code MenuBarElement} from an existing locator. */ + /** + * Create a {@code MenuBarElement} from an existing locator. + * + * @param locator the locator for the {@code } element + */ public MenuBarElement(Locator locator) { super(locator); } - /** Get a menu item by visible label. */ + /** + * Get a menu item by visible label. + * + * @param name the visible label of the menu item + * @return the matching {@code MenuItemElement} + */ public MenuItemElement getMenuItemElement(String name) { return MenuItemElement.getByLabel(getLocator(), name); } /** * Click a menu item to open its submenu and return the submenu overlay. + * + * @param name the visible label of the menu item to click + * @return the opened {@code MenuElement} submenu overlay */ public MenuElement openSubMenu(String name) { MenuItemElement menuItemElement = getMenuItemElement(name); @@ -41,7 +58,13 @@ public MenuElement openSubMenu(String name) { return new MenuElement(getLocator().page()); } - /** Get a menu bar by its accessible label. */ + /** + * Get a menu bar by its accessible label. + * + * @param page the Playwright page + * @param label the accessible label of the menu bar + * @return the matching {@code MenuBarElement} + */ public static MenuBarElement getByLabel(Page page, String label) { return new MenuBarElement( page.getByRole(AriaRole.MENUBAR, new Page.GetByRoleOptions().setName(label)) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/MenuElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/MenuElement.java index ec30255..f4f9b4b 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/MenuElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/MenuElement.java @@ -12,24 +12,43 @@ */ public class MenuElement extends VaadinElement implements HasThemeElement, HasStyleElement, HasAriaLabelElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-menu-bar-list-box"; - /** Create a {@code MenuElement} from the page. */ + /** + * Create a {@code MenuElement} from the page. + * + * @param page the Playwright page + */ public MenuElement(Page page) { super(page.locator(FIELD_TAG_NAME)); } - /** Create a {@code MenuElement} from an existing locator. */ + /** + * Create a {@code MenuElement} from an existing locator. + * + * @param locator the locator for the menu overlay + */ public MenuElement(Locator locator) { super(locator); } - /** Get a menu item by its visible label within this menu. */ + /** + * Get a menu item by its visible label within this menu. + * + * @param name the visible label of the menu item + * @return the matching {@code MenuItemElement} + */ public MenuItemElement getMenuItemElement(String name) { return MenuItemElement.getByLabel(getLocator(), name); } - /** Click a menu item to open its submenu and return the next overlay. */ + /** + * Click a menu item to open its submenu and return the next overlay. + * + * @param name the visible label of the menu item to click + * @return the opened {@code MenuElement} submenu overlay + */ public MenuElement openSubMenu(String name) { MenuItemElement menuItemElement = getMenuItemElement(name); menuItemElement.click(); @@ -38,7 +57,13 @@ public MenuElement openSubMenu(String name) { } - /** Get a menu overlay by its accessible label. */ + /** + * Get a menu overlay by its accessible label. + * + * @param page the Playwright page + * @param label the accessible label of the menu + * @return the matching {@code MenuElement} + */ public static MenuElement getByLabel(Page page, String label) { return new MenuElement( page.getByRole(AriaRole.MENU, new Page.GetByRoleOptions().setName(label)) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/MenuItemElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/MenuItemElement.java index 7b145f0..b52a7ff 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/MenuItemElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/MenuItemElement.java @@ -13,14 +13,25 @@ */ public class MenuItemElement extends VaadinElement implements HasThemeElement, HasStyleElement, HasAriaLabelElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-menu-bar-button"; - /** Create a {@code MenuItemElement} from an existing locator. */ + /** + * Create a {@code MenuItemElement} from an existing locator. + * + * @param locator the locator for the menu item + */ public MenuItemElement(Locator locator) { super(locator); } - /** Get a menu item by its accessible label within a scope. */ + /** + * Get a menu item by its accessible label within a scope. + * + * @param locator the scope to search within + * @param label the accessible label of the menu item + * @return the matching {@code MenuItemElement} + */ public static MenuItemElement getByLabel(Locator locator, String label) { return new MenuItemElement( locator.getByRole(AriaRole.MENUITEM, new Locator.GetByRoleOptions().setName(label)) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/NotificationElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/NotificationElement.java index 1997626..fc456e0 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/NotificationElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/NotificationElement.java @@ -12,35 +12,65 @@ */ public class NotificationElement extends VaadinElement implements HasThemeElement, HasStyleElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-notification-card"; - /** Create a {@code NotificationElement} from the page. */ + /** + * Create a {@code NotificationElement} from the page. + * + * @param page the Playwright page + */ public NotificationElement(Page page) { super(page.locator(FIELD_TAG_NAME)); } - /** Create a {@code NotificationElement} from an existing locator. */ + /** + * Create a {@code NotificationElement} from an existing locator. + * + * @param locator the locator for the notification element + */ public NotificationElement(Locator locator) { super(locator); } - /** Whether the notification is open (visible). */ + /** + * Whether the notification is open (visible). + * + * @return {@code true} if the notification is visible + */ public boolean isOpen() { return getLocator().isVisible(); } - /** Assert that the notification is open. */ + /** + * Assert that the notification is open. + */ public void assertOpen() { assertThat(getLocator()).isVisible(); } - /** Assert that the notification is closed. */ + /** + * Assert that the notification is closed. + */ public void assertClosed() { assertThat(getLocator()).isHidden(); } - /** Locator for the notification content. */ + /** + * Locator for the notification content. + * + * @return the content locator + */ public Locator getContentLocator() { return getLocator(); } + + /** + * Assert that the notification is containing exactly this content + * + * @param content content of the notification + */ + public void assertContent(String content) { + assertThat(getContentLocator()).hasText(content); + } } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/NumberFieldElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/NumberFieldElement.java index fc07762..d7b0763 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/NumberFieldElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/NumberFieldElement.java @@ -17,6 +17,7 @@ @PlaywrightElement(NumberFieldElement.FIELD_TAG_NAME) public class NumberFieldElement extends AbstractNumberFieldElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-number-field"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/PasswordFieldElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/PasswordFieldElement.java index 2889c79..83c632d 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/PasswordFieldElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/PasswordFieldElement.java @@ -6,10 +6,14 @@ /** * PlaywrightElement for {@code }. + *

+ * Extends {@link TextFieldElement} with password-specific input masking. + * Inherits all text field behaviors including validation, clear button, and placeholders. */ @PlaywrightElement(PasswordFieldElement.FIELD_TAG_NAME) public class PasswordFieldElement extends TextFieldElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-password-field"; /** @@ -36,4 +40,18 @@ public static PasswordFieldElement getByLabel(Page page, String label) { new Page.GetByRoleOptions().setName(label))) ).first()); } + + /** + * Get the {@code PasswordFieldElement} by its label within a given scope. + * + * @param locator the locator to search within + * @param label the accessible label of the field + * @return the matching {@code PasswordFieldElement} + */ + public static PasswordFieldElement getByLabel(Locator locator, String label) { + return new PasswordFieldElement( + locator.locator(FIELD_TAG_NAME) + .filter(new Locator.FilterOptions().setHas(locator.getByLabel(label))) + .first()); + } } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/PopoverElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/PopoverElement.java index 30c0844..3a321cb 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/PopoverElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/PopoverElement.java @@ -14,21 +14,34 @@ */ public class PopoverElement extends VaadinElement implements HasThemeElement, HasStyleElement, HasAriaLabelElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-popover"; - /** Create a {@code PopoverElement} by resolving the dialog with ARIA role. */ + /** + * Create a {@code PopoverElement} by resolving the dialog with ARIA role. + * + * @param page the Playwright page + */ public PopoverElement(Page page) { super( page.getByRole(AriaRole.DIALOG) .and(page.locator(FIELD_TAG_NAME))); } - /** Create a {@code PopoverElement} from an existing locator. */ + /** + * Create a {@code PopoverElement} from an existing locator. + * + * @param locator the locator for the popover element + */ public PopoverElement(Locator locator) { super(locator); } - /** Whether the popover is open (visible). */ + /** + * Whether the popover is open (visible). + * + * @return {@code true} if the popover is visible + */ public boolean isOpen() { return getLocator().isVisible(); } @@ -43,13 +56,23 @@ public void assertClosed() { assertThat(getLocator()).isHidden(); } - /** Locator for the popover content. */ + /** + * Locator for the popover content. + * + * @return the content locator + */ public Locator getContentLocator() { return getLocator(); } - /** Get a popover by its accessible label. */ + /** + * Get a popover by its accessible label. + * + * @param page the Playwright page + * @param label the accessible label of the popover + * @return the matching {@code PopoverElement} + */ public static PopoverElement getByLabel(Page page, String label) { return new PopoverElement( page.getByRole(AriaRole.DIALOG, new Page.GetByRoleOptions().setName(label)) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/ProgressBarElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/ProgressBarElement.java index 6b7553e..817ae15 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/ProgressBarElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/ProgressBarElement.java @@ -15,25 +15,43 @@ @PlaywrightElement(ProgressBarElement.FIELD_TAG_NAME) public class ProgressBarElement extends VaadinElement implements HasThemeElement, HasStyleElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-progress-bar"; + /** The HTML attribute name for indeterminate state. */ public static final String INDETERMINATE_ATTRIBUTE = "indeterminate"; - /** Create a {@code ProgressBarElement} from an existing locator. */ + /** + * Create a {@code ProgressBarElement} from an existing locator. + * + * @param locator the locator for the {@code } element + */ public ProgressBarElement(Locator locator) { super(locator); } - /** Current numeric value parsed from {@code aria-valuenow}. */ + /** + * Current numeric value parsed from {@code aria-valuenow}. + * + * @return the current progress value + */ public double getValue() { return Double.parseDouble(getLocator().getAttribute("aria-valuenow")); } - /** Set the progress bar {@code value}. */ + /** + * Set the progress bar {@code value}. + * + * @param min the value to set + */ public void setValue(double min) { getLocator().evaluate("(el, v) => el.value = v", min); } - /** Assert that the numeric value matches. */ + /** + * Assert that the numeric value matches. + * + * @param expected the expected value, or {@code null} for undefined + */ public void assertValue(Double expected) { if (expected != null) { assertThat(getLocator()).hasAttribute("aria-valuenow", NumberUtils.formatDouble(expected)); @@ -42,54 +60,90 @@ public void assertValue(Double expected) { } } - /** Get the {@code min} value. */ + /** + * Get the {@code min} value. + * + * @return the minimum value, or {@code null} if not set + */ public Double getMin() { String v = getLocator().getAttribute("aria-valuemin"); return v == null ? null : Double.valueOf(v); } - /** Set the {@code min} value. */ + /** + * Set the {@code min} value. + * + * @param min the minimum value to set + */ public void setMin(double min) { getLocator().evaluate("(el, v) => el.min = v", min); } - /** Assert that {@code min} matches the expected value. */ + /** + * Assert that {@code min} matches the expected value. + * + * @param min the expected minimum value + */ public void assertMin(double min) { assertThat(getLocator()).hasAttribute("aria-valuemin", NumberUtils.formatDouble(min)); } - /** Get the {@code max} value. */ + /** + * Get the {@code max} value. + * + * @return the maximum value, or {@code null} if not set + */ public Double getMax() { String v = getLocator().getAttribute("aria-valuemax"); return v == null ? null : Double.valueOf(v); } - /** Set the {@code max} value. */ + /** + * Set the {@code max} value. + * + * @param max the maximum value to set + */ public void setMax(double max) { getLocator().evaluate("(el, v) => el.max = v", max); } - /** Assert that {@code max} matches the expected value. */ + /** + * Assert that {@code max} matches the expected value. + * + * @param max the expected maximum value + */ public void assertMax(double max) { assertThat(getLocator()).hasAttribute("aria-valuemax", NumberUtils.formatDouble(max)); } - /** Whether the bar is indeterminate. */ + /** + * Whether the bar is indeterminate. + * + * @return {@code true} if the progress bar is in indeterminate state + */ public boolean isIndeterminate() { return getLocator().getAttribute(INDETERMINATE_ATTRIBUTE) != null; } - /** Assert indeterminate state. */ + /** + * Assert indeterminate state. + */ public void assertIndeterminate() { assertThat(getLocator()).hasAttribute(INDETERMINATE_ATTRIBUTE, ""); } - /** Assert not indeterminate. */ + /** + * Assert not indeterminate. + */ public void assertNotIndeterminate() { assertThat(getLocator()).not().hasAttribute(INDETERMINATE_ATTRIBUTE, ""); } - /** Set the indeterminate state. */ + /** + * Set the indeterminate state. + * + * @param indeterminate {@code true} for indeterminate, {@code false} otherwise + */ public void setIndeterminate(boolean indeterminate) { getLocator().evaluate("(el, val) => el.indeterminate = val", indeterminate); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonElement.java index d5bd844..2a3bad6 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonElement.java @@ -22,10 +22,13 @@ class RadioButtonElement extends VaadinElement implements FocusableElement, HasAriaLabelElement, HasEnabledElement, HasHelperElement, HasValueElement, HasStyleElement, HasLabelElement, HasValidationPropertiesElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-radio-button"; /** * Create a new {@code RadioButtonElement}. + * + * @param locator the locator for the {@code } element */ public RadioButtonElement(Locator locator) { super(locator); @@ -46,27 +49,43 @@ public Locator getFocusLocator() { return getInputLocator(); } - /** Whether the radio is checked. */ + /** + * Whether the radio is checked. + * + * @return {@code true} if the radio is checked + */ boolean isChecked() { return getInputLocator().isChecked(); } - /** Assert that the radio is checked. */ + /** + * Assert that the radio is checked. + */ void assertChecked() { assertThat(getInputLocator()).isChecked(); } - /** Assert that the radio is not checked. */ + /** + * Assert that the radio is not checked. + */ void assertNotChecked() { assertThat(getInputLocator()).not().isChecked(); } - /** Check the radio. */ + /** + * Check the radio. + */ void check() { getInputLocator().check(); } - /** Get a radio by its label within a given scope. */ + /** + * Get a radio by its label within a given scope. + * + * @param locator the scope to search within + * @param label the accessible label of the radio button + * @return the matching {@code RadioButtonElement} + */ static RadioButtonElement getByLabel(Locator locator, String label) { return new RadioButtonElement( locator.locator(FIELD_TAG_NAME) diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonGroupElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonGroupElement.java index 0e8543d..96afece 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonGroupElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/RadioButtonGroupElement.java @@ -19,6 +19,7 @@ public class RadioButtonGroupElement extends VaadinElement implements HasLabelElement, HasEnabledElement, HasHelperElement, HasValidationPropertiesElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-radio-group"; /** @@ -32,6 +33,8 @@ public RadioButtonGroupElement(Locator locator) { /** * Select a radio by its label text. + * + * @param label the label text of the radio to select */ public void selectByLabel(String label) { getRadioButtonByLabel(label).check(); @@ -39,6 +42,8 @@ public void selectByLabel(String label) { /** * Select a radio by its value. + * + * @param value the value of the radio to select */ public void selectByValue(String value) { getLocator().evaluate("(el, value) => el.value = value", value); @@ -46,6 +51,9 @@ public void selectByValue(String value) { /** * Get a specific radio by its label within the group. + * + * @param label the label text of the radio + * @return the matching {@code RadioButtonElement} */ public RadioButtonElement getRadioButtonByLabel(String label) { return RadioButtonElement.getByLabel(getLocator(), label); @@ -53,6 +61,10 @@ public RadioButtonElement getRadioButtonByLabel(String label) { /** * Get the group by its accessible label. + * + * @param page the Playwright page + * @param label the accessible label of the radio group + * @return the matching {@code RadioButtonGroupElement} */ public static RadioButtonGroupElement getByLabel(Page page, String label) { return new RadioButtonGroupElement( @@ -64,6 +76,8 @@ public static RadioButtonGroupElement getByLabel(Page page, String label) { /** * Set the selected value by label. + * + * @param value the label text of the radio to select */ public void setValue(String value) { RadioButtonElement.getByLabel(getLocator(), value).check(); @@ -71,6 +85,8 @@ public void setValue(String value) { /** * Assert the selected value by label. + * + * @param value the expected selected label, or empty/null for no selection */ public void assertValue(String value) { if (value != null && !value.isEmpty()) { diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/SelectElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/SelectElement.java index a06ca24..9cf4295 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/SelectElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/SelectElement.java @@ -29,10 +29,16 @@ public class SelectElement extends VaadinElement HasPrefixElement, HasThemeElement, HasPlaceholderElement, HasEnabledElement, HasTooltipElement, HasValidationPropertiesElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-select"; + /** The HTML tag name for select items. */ public static final String FIELD_ITEM_TAG_NAME = "vaadin-select-item"; + /** The HTML tag name for the select overlay list box. */ public static final String FIELD_OVERLAY_TAG_NAME = "vaadin-select-list-box"; + /** + * {@inheritDoc} + */ @Override public Locator getInputLocator() { return getLocator().locator("*[slot=\"value\"]").first(); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationElement.java index c5a8574..2b376bc 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationElement.java @@ -13,8 +13,14 @@ @PlaywrightElement(SideNavigationElement.FIELD_TAG_NAME) public class SideNavigationElement extends VaadinElement implements HasLabelElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-side-nav"; + /** + * Create a new {@code SideNavigationElement}. + * + * @param locator the locator for the {@code } element + */ public SideNavigationElement(Locator locator) { super(locator); } @@ -26,6 +32,8 @@ public Locator getLabelLocator() { /** * Checks if the side nav is collapsed. + * + * @return {@code true} if the navigation is collapsed */ public boolean isCollapsed() { return getLocator().getAttribute("collapsed") != null; @@ -108,7 +116,8 @@ public static SideNavigationElement getByLabel(Page page, String label) { } /** - * Toggles the expansion state of the item. + * Toggles the collapsed/expanded state of the navigation. + * Clicks the label slot to trigger the toggle. */ public void toggle() { getLocator().locator("[slot='label']").first().click(); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationItemElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationItemElement.java index a6ab643..e1dd981 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationItemElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/SideNavigationItemElement.java @@ -15,14 +15,22 @@ @PlaywrightElement(SideNavigationItemElement.FIELD_TAG_NAME) public class SideNavigationItemElement extends VaadinElement implements HasEnabledElement, HasPrefixElement, HasSuffixElement, HasLabelElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-side-nav-item"; + /** + * Create a new {@code SideNavigationItemElement}. + * + * @param locator the locator for the {@code } element + */ public SideNavigationItemElement(Locator locator) { super(locator); } /** - * Checks if the item is expanded. + * Checks if the item is expanded (showing child items). + * + * @return {@code true} if the item is expanded */ public boolean isExpanded() { return getLocator().getAttribute("expanded") != null; @@ -86,6 +94,10 @@ public Locator getLabelLocator() { return getLocator(); } + /** + * Navigate to this item by clicking its link. + * This triggers navigation to the item's path. + */ public void navigate() { getLocator().getByRole(AriaRole.LINK).first().click(); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/TabElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/TabElement.java index 91f53a2..00a9ff3 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/TabElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/TabElement.java @@ -10,15 +10,25 @@ @PlaywrightElement(TabElement.FIELD_TAG_NAME) public class TabElement extends VaadinElement { + /** The HTML tag name for the parent tabs container. */ public static final String FIELD_PARENT_TAG_NAME = "vaadin-tabs"; + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-tab"; - /** Create a {@code TabElement} from an existing locator. */ + /** + * Create a {@code TabElement} from an existing locator. + * + * @param locator the locator for the {@code } element + */ public TabElement(Locator locator) { super(locator); } - /** Whether the tab is currently selected. */ + /** + * Whether the tab is currently selected. + * + * @return {@code true} if the tab is selected + */ public boolean isSelected() { return getLocator().getAttribute("selected") != null; } @@ -28,7 +38,11 @@ public void select() { getLocator().click(); } - /** Get the tab label text. */ + /** + * Get the tab label text. + * + * @return the text content of the tab + */ public String getLabel() { return getLocator().textContent(); } @@ -43,12 +57,23 @@ public void assertNotSelected() { assertThat(getLocator()).not().hasAttribute("selected", ""); } - /** Get a tab by visible text within a scope. */ + /** + * Get a tab by visible text within a scope. + * + * @param locator the scope to search within + * @param summary the visible text of the tab + * @return the matching {@code TabElement} + */ public static TabElement getTabByText(Locator locator, String summary) { return new TabElement(locator.locator(FIELD_PARENT_TAG_NAME).locator(FIELD_TAG_NAME).getByText(summary)); } - /** Get the currently selected tab within a scope. */ + /** + * Get the currently selected tab within a scope. + * + * @param locator the scope to search within + * @return the selected {@code TabElement} + */ public static TabElement getSelectedTab(Locator locator) { return new TabElement(locator.locator(FIELD_PARENT_TAG_NAME).locator(FIELD_TAG_NAME + "[selected]")); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/TabSheetElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/TabSheetElement.java index 75b3b98..d69980d 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/TabSheetElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/TabSheetElement.java @@ -13,35 +13,62 @@ @PlaywrightElement(TabSheetElement.FIELD_TAG_NAME) public class TabSheetElement extends VaadinElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-tabsheet"; - /** Create a {@code TabSheetElement} from an existing locator. */ + /** + * Create a {@code TabSheetElement} from an existing locator. + * + * @param locator the locator for the {@code } element + */ public TabSheetElement(Locator locator) { super(locator); } - /** Get the first tabsheet instance on the page. */ + /** + * Get the first tabsheet instance on the page. + * + * @param page the Playwright page + * @return the first {@code TabSheetElement} on the page + */ public static TabSheetElement get(Page page) { return new TabSheetElement(page.locator(FIELD_TAG_NAME).first()); } - /** Assert the count of tabs. */ + /** + * Assert the count of tabs. + * + * @param count the expected number of tabs + */ public void assertTabsCount(int count) { Locator tabs = getLocator().locator(TabElement.FIELD_TAG_NAME); assertThat(tabs).hasCount(count); } - /** Get a tab by its label. */ + /** + * Get a tab by its label. + * + * @param label the visible label of the tab + * @return the matching {@code TabElement} + */ public TabElement getTab(String label) { return TabElement.getTabByText(getLocator(), label); } - /** Get the currently selected tab. */ + /** + * Get the currently selected tab. + * + * @return the selected {@code TabElement} + */ public TabElement getSelectedTab() { return TabElement.getSelectedTab(getLocator()); } - /** Select a tab by label text. */ + /** + * Select a tab by label text. + * + * @param label the visible label of the tab to select + */ public void selectTab(String label) { TabElement tab = getTab(label); if (tab != null) { @@ -49,7 +76,11 @@ public void selectTab(String label) { } } - /** Locator for the currently visible content panel. */ + /** + * Locator for the currently visible content panel. + * + * @return the locator for the active content panel + */ public Locator getContentLocator() { return getLocator().locator("[tab]:not([hidden])"); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/TextAreaElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/TextAreaElement.java index 6b35cad..42ab7ac 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/TextAreaElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/TextAreaElement.java @@ -12,6 +12,7 @@ @PlaywrightElement(TextAreaElement.FIELD_TAG_NAME) public class TextAreaElement extends TextFieldElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-text-area"; /** @@ -24,10 +25,16 @@ public TextAreaElement(Locator locator) { } /** - * {@inheritDoc} + * Returns the locator for the textarea input element. + *

+ * Overrides the parent to target the {@code slot="textarea"} element + * instead of the standard input slot. + * + * @return the locator for the textarea input */ + @Override public Locator getInputLocator() { - return getLocator().locator("*[slot=\"textarea\"]").first(); // slot="helper" + return getLocator().locator("*[slot=\"textarea\"]").first(); } /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/TextFieldElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/TextFieldElement.java index af366a4..84b1505 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/TextFieldElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/TextFieldElement.java @@ -29,9 +29,13 @@ public class TextFieldElement extends VaadinElement HasPrefixElement, HasSuffixElement, HasClearButtonElement, HasPlaceholderElement, HasAllowedCharPatternElement, HasThemeElement, FocusableElement, HasAriaLabelElement, HasEnabledElement, HasTooltipElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-text-field"; + /** The HTML attribute name for maximum length. */ public static final String MAXLENGTH_ATTRIBUTE = "maxlength"; + /** The HTML attribute name for validation pattern. */ public static final String PATTERN_ATTRIBUTE = "pattern"; + /** The HTML attribute name for minimum length. */ public static final String MIN_LENGTH_ATTRIBUTE = "minLength"; /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/TimePickerElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/TimePickerElement.java index 39a1bea..df60736 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/TimePickerElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/TimePickerElement.java @@ -30,7 +30,9 @@ public class TimePickerElement extends VaadinElement implements HasInputFieldEle HasClearButtonElement, HasPlaceholderElement, HasThemeElement, FocusableElement, HasAriaLabelElement, HasEnabledElement, HasTooltipElement, HasLabelElement, HasHelperElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-time-picker"; + /** The time formatter for HH:mm format. */ public static final DateTimeFormatter LOCAL_TIME = DateTimeFormatter.ofPattern("HH:mm"); /** diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/UploadElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/UploadElement.java index fac206b..c0ac599 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/UploadElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/UploadElement.java @@ -25,7 +25,9 @@ public class UploadElement extends VaadinElement implements HasEnabledElement, HasValidationPropertiesElement, HasThemeElement, FocusableElement { + /** The HTML tag name for this Vaadin component. */ public static final String FIELD_TAG_NAME = "vaadin-upload"; + /** The HTML tag name for file row items. */ public static final String FILE_ITEM_TAG_NAME = "vaadin-upload-file"; /** @@ -138,6 +140,10 @@ public void assertFileComplete(String fileName) { assertThat(getFileItemLocator(fileName)).hasAttribute("complete", ""); } + /** + * Assert that the maximum number of files has been reached. + * The upload button will typically be disabled in this state. + */ public void assertMaxFilesReached() { assertThat(getLocator()).hasAttribute("max-files-reached", ""); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/FocusableElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/FocusableElement.java index 36ab633..38f1163 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/FocusableElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/FocusableElement.java @@ -11,6 +11,8 @@ public interface FocusableElement extends HasLocatorElement { /** * The locator to focus/blur. Defaults to the component root. + * + * @return the focusable locator */ default Locator getFocusLocator() { return getLocator(); @@ -32,6 +34,8 @@ default void blur() { /** * Current tab index as string (from {@code tabIndex} attribute). + * + * @return the tab index value */ default String getTabIndex() { return getFocusLocator().getAttribute("tabIndex"); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasAriaLabelElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasAriaLabelElement.java index 33291d6..ea15b9d 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasAriaLabelElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasAriaLabelElement.java @@ -11,18 +11,28 @@ */ public interface HasAriaLabelElement extends HasLocatorElement { - /** Locator where the {@code aria-label} is applied. Defaults to root. */ + /** + * Locator where the {@code aria-label} is applied. Defaults to root. + * + * @return the aria-label locator + */ default Locator getAriaLabelLocator() { return getLocator(); } - /** Get the current {@code aria-label} value. */ + /** + * Get the current {@code aria-label} value. + * + * @return the aria-label attribute value + */ default String getAriaLabel() { return getAriaLabelLocator().getAttribute("aria-label"); } /** * Assert that the {@code aria-label} matches the expected text, or is absent when null. + * + * @param ariaLabel the expected aria-label, or {@code null} to assert absence */ default void assertAriaLabel(String ariaLabel) { if (ariaLabel != null) { diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasClearButtonElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasClearButtonElement.java index 6d16101..69f433c 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasClearButtonElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasClearButtonElement.java @@ -9,17 +9,27 @@ */ public interface HasClearButtonElement extends HasLocatorElement { - /** Locator for the clear button ({@code part~=clear-button}). */ + /** + * Locator for the clear button ({@code part~=clear-button}). + * + * @return the clear button locator + */ default Locator getClearButtonLocator() { return getLocator().locator("[part~=\"clear-button\"]"); } - /** Click the clear button. */ + /** + * Click the clear button. + */ default void clickClearButton() { getClearButtonLocator().click(); } - /** Whether the clear button is visible. */ + /** + * Whether the clear button is visible. + * + * @return {@code true} if the clear button is visible + */ default boolean isClearButtonVisible() { return getClearButtonLocator().isVisible(); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasEnabledElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasEnabledElement.java index 5f34ae3..97ae4e3 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasEnabledElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasEnabledElement.java @@ -9,22 +9,34 @@ */ public interface HasEnabledElement extends HasLocatorElement { - /** Locator used to check enablement. Defaults to root. */ + /** + * Locator used to check enablement. Defaults to root. + * + * @return the enabled locator + */ default Locator getEnabledLocator() { return getLocator(); } - /** Whether the component is enabled. */ + /** + * Whether the component is enabled. + * + * @return {@code true} if the component is enabled + */ default boolean isEnabled() { return getEnabledLocator().isEnabled(); } - /** Assert that the component is enabled. */ + /** + * Assert that the component is enabled. + */ default void assertEnabled() { assertThat(getEnabledLocator()).isEnabled(); } - /** Assert that the component is disabled. */ + /** + * Assert that the component is disabled. + */ default void assertDisabled() { assertThat(getEnabledLocator()).isDisabled(); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasHelperElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasHelperElement.java index e13bd2f..bbf02aa 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasHelperElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasHelperElement.java @@ -9,17 +9,29 @@ */ public interface HasHelperElement extends HasLocatorElement { - /** Locator for the helper slot content. */ + /** + * Locator for the helper slot content. + * + * @return the helper locator + */ default Locator getHelperLocator() { return getLocator().locator("*[slot=\"helper\"]").first(); // slot="helper" } - /** Text content of the helper slot. */ + /** + * Text content of the helper slot. + * + * @return the helper text content + */ default String getHelperText() { return getHelperLocator().textContent(); // slot="helper" } - /** Assert that the helper slot has the expected text. */ + /** + * Assert that the helper slot has the expected text. + * + * @param helperText the expected helper text + */ default void assertHelperHasText(String helperText) { assertThat(getHelperLocator()).hasText(helperText); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLabelElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLabelElement.java index c670cbd..4cf9ceb 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLabelElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLabelElement.java @@ -12,6 +12,8 @@ public interface HasLabelElement extends HasLocatorElement { /** * Locator for the visible label element. + * + * @return the label locator */ default Locator getLabelLocator() { return getLocator().locator("label").first(); @@ -19,6 +21,8 @@ default Locator getLabelLocator() { /** * Get the label text. + * + * @return the label text content */ default String getLabel() { return getLabelLocator().textContent(); @@ -26,6 +30,8 @@ default String getLabel() { /** * Assert that the label text matches, or is hidden when null. + * + * @param label the expected label text, or {@code null} to assert hidden */ default void assertLabel(String label) { if (label != null) { diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLocatorElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLocatorElement.java index 7b9b792..7d4df07 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLocatorElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasLocatorElement.java @@ -6,6 +6,10 @@ * Base contract for objects that expose a Playwright {@link Locator}. */ public interface HasLocatorElement { - /** The root locator for the component. */ + /** + * The root locator for the component. + * + * @return the root locator + */ Locator getLocator(); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPlaceholderElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPlaceholderElement.java index 38109f8..4b72d8a 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPlaceholderElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPlaceholderElement.java @@ -7,17 +7,29 @@ */ public interface HasPlaceholderElement extends HasLocatorElement { - /** Set the {@code placeholder} attribute. */ + /** + * Set the {@code placeholder} attribute. + * + * @param placeholder the placeholder text to set + */ default void setPlaceholder(String placeholder) { getLocator().evaluate("(el, placeholder) => el.placeholder = placeholder", placeholder); } - /** Get the current {@code placeholder} text. */ + /** + * Get the current {@code placeholder} text. + * + * @return the placeholder text + */ default String getPlaceholder() { return getLocator().evaluate("el => el.placeholder").toString(); } - /** Assert that the {@code placeholder} matches the expected text. */ + /** + * Assert that the {@code placeholder} matches the expected text. + * + * @param placeholder the expected placeholder text + */ default void assertPlaceholder(String placeholder) { assertThat(getLocator()).hasAttribute("placeholder", placeholder); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPrefixElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPrefixElement.java index 18b73a2..9daa35b 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPrefixElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasPrefixElement.java @@ -10,17 +10,29 @@ */ public interface HasPrefixElement extends HasLocatorElement { - /** Locator for the prefix slot content. */ + /** + * Locator for the prefix slot content. + * + * @return the prefix locator + */ default Locator getPrefixLocator() { return getLocator().locator("*[slot=\"prefix\"]").first(); } - /** Text content of the prefix slot. */ + /** + * Text content of the prefix slot. + * + * @return the prefix text content + */ default String getPrefixText() { return getPrefixLocator().textContent(); } - /** Assert that the prefix slot has the expected text, or is hidden when null. */ + /** + * Assert that the prefix slot has the expected text, or is hidden when null. + * + * @param text the expected text, or {@code null} to assert hidden + */ default void assertPrefixHasText(String text) { if (text != null) { assertThat(getPrefixLocator()).hasText(text); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasStyleElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasStyleElement.java index 2954855..8eaf965 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasStyleElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasStyleElement.java @@ -9,13 +9,19 @@ */ public interface HasStyleElement extends HasLocatorElement { - /** Get the raw {@code class} attribute value. */ + /** + * Get the raw {@code class} attribute value. + * + * @return the class attribute value + */ default String getCssClass() { return getLocator().getAttribute("class"); } /** * Assert the component has exactly the provided class names, or no classes when null. + * + * @param classnames the expected class names */ default void assertCssClass(String... classnames) { if (classnames != null) { diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasSuffixElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasSuffixElement.java index ba377a6..91a563b 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasSuffixElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasSuffixElement.java @@ -10,17 +10,29 @@ */ public interface HasSuffixElement extends HasLocatorElement { - /** Locator for the suffix slot content. */ + /** + * Locator for the suffix slot content. + * + * @return the suffix locator + */ default Locator getSuffixLocator() { return getLocator().locator("*[slot=\"suffix\"]").first(); } - /** Text content of the suffix slot. */ + /** + * Text content of the suffix slot. + * + * @return the suffix text content + */ default String getSuffixText() { return getSuffixLocator().textContent(); } - /** Assert that the suffix slot has the expected text, or is hidden when null. */ + /** + * Assert that the suffix slot has the expected text, or is hidden when null. + * + * @param text the expected text, or {@code null} to assert hidden + */ default void assertSuffixHasText(String text) { if (text != null) { assertThat(getSuffixLocator()).hasText(text); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasThemeElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasThemeElement.java index fe41d99..1c845cd 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasThemeElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasThemeElement.java @@ -9,12 +9,20 @@ */ public interface HasThemeElement extends HasLocatorElement { - /** Get the current {@code theme} attribute value. */ + /** + * Get the current {@code theme} attribute value. + * + * @return the theme attribute value + */ default String getTheme() { return getLocator().getAttribute("theme"); } - /** Assert that the {@code theme} attribute matches, or is absent when null. */ + /** + * Assert that the {@code theme} attribute matches, or is absent when null. + * + * @param theme the expected theme, or {@code null} to assert absence + */ default void assertTheme(String theme) { if (theme != null) { assertThat(getLocator()).hasAttribute("theme", theme); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasTooltipElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasTooltipElement.java index c5c9764..3fbbee9 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasTooltipElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasTooltipElement.java @@ -12,18 +12,31 @@ */ public interface HasTooltipElement extends HasLocatorElement { - /** Locator for the tooltip content (role=tooltip). */ + /** + * Locator for the tooltip content (role=tooltip). + * + * @return the tooltip locator + */ default Locator getTooltipLocator() { return getLocator().getByRole(AriaRole.TOOLTIP, new Locator.GetByRoleOptions() .setIncludeHidden(true)).first(); } - /** Tooltip text content. */ + /** + * Tooltip text content. + * + * @return the tooltip text content + */ default String getTooltipText() { return getTooltipLocator().textContent(); } + /** + * Assert that the tooltip has the expected text, or is hidden when null. + * + * @param text the expected tooltip text, or {@code null} to assert hidden + */ default void assertTooltipHasText(String text) { if (text != null) { assertThat(getTooltipLocator()).hasText(text, new LocatorAssertions.HasTextOptions().setUseInnerText(true)); diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValidationPropertiesElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValidationPropertiesElement.java index 27ec5f6..54db48b 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValidationPropertiesElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValidationPropertiesElement.java @@ -9,22 +9,34 @@ */ public interface HasValidationPropertiesElement extends HasLocatorElement { - /** Locator for the error message slot. */ + /** + * Locator for the error message slot. + * + * @return the error message locator + */ default Locator getErrorMessageLocator() { return getLocator().locator("> [slot=\"error-message\"]").first(); // slot="helper" } - /** Assert that the component is valid (not {@code invalid}). */ + /** + * Assert that the component is valid (not {@code invalid}). + */ default void assertValid() { assertThat(getLocator()).not().hasAttribute("invalid", ""); } - /** Assert that the component is invalid. */ + /** + * Assert that the component is invalid. + */ default void assertInvalid() { assertThat(getLocator()).hasAttribute("invalid", ""); } - /** Assert that the error message equals the expected text. */ + /** + * Assert that the error message equals the expected text. + * + * @param errorMessage the expected error message text + */ default void assertErrorMessage(String errorMessage) { assertThat(getErrorMessageLocator()).hasText(errorMessage); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValueElement.java b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValueElement.java index f036393..95f1b03 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValueElement.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/shared/HasValueElement.java @@ -9,30 +9,46 @@ */ public interface HasValueElement extends HasLocatorElement { - /** Locator for the native input element inside the component. */ + /** + * Locator for the native input element inside the component. + * + * @return the input locator + */ default Locator getInputLocator() { return getLocator().locator("*[slot=\"input\"]").first(); // slot="helper" } - /** Get the current string value. */ + /** + * Get the current string value. + * + * @return the current value + */ default String getValue() { return getLocator().evaluate("el => el.value").toString(); } /** * Set the field value by filling the input and dispatching a change event. + * + * @param value the value to set */ default void setValue(String value) { getInputLocator().fill(value); getLocator().dispatchEvent("change"); } - /** Clear the input value. */ + /** + * Clear the input value. + */ default void clear() { setValue(""); } - /** Assert that the input value matches the expected string. */ + /** + * Assert that the input value matches the expected string. + * + * @param value the expected value + */ default void assertValue(String value) { assertThat(getInputLocator()).hasValue(value); } diff --git a/src/main/java/org/vaadin/addons/dramafinder/element/utils/NumberUtils.java b/src/main/java/org/vaadin/addons/dramafinder/element/utils/NumberUtils.java index ac26606..bb26145 100644 --- a/src/main/java/org/vaadin/addons/dramafinder/element/utils/NumberUtils.java +++ b/src/main/java/org/vaadin/addons/dramafinder/element/utils/NumberUtils.java @@ -2,8 +2,20 @@ import java.text.DecimalFormat; +/** + * Utility class for number formatting operations. + */ public class NumberUtils { + /** + * Format a double value as a string, removing unnecessary decimal places. + *

+ * If the value has no fractional part, returns it as a long string. + * Otherwise, formats with up to 6 decimal places without scientific notation. + * + * @param value the double value to format + * @return the formatted string representation + */ public static String formatDouble(double value) { // Check if the value has no fractional part if (value == Math.rint(value)) { diff --git a/src/test/java/org/vaadin/addons/dramafinder/tests/it/NotificationViewIT.java b/src/test/java/org/vaadin/addons/dramafinder/tests/it/NotificationViewIT.java index bac5004..53ba05f 100644 --- a/src/test/java/org/vaadin/addons/dramafinder/tests/it/NotificationViewIT.java +++ b/src/test/java/org/vaadin/addons/dramafinder/tests/it/NotificationViewIT.java @@ -26,6 +26,7 @@ public void testNotification() { notification.assertOpen(); assertThat(notification.getContentLocator()).hasText("This is a notification."); + notification.assertContent("This is a notification."); notification.assertClosed(); }