From 54fbe8c0a721d9b0dd9847f23cf2026665fd92b7 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Thu, 25 Sep 2025 10:43:04 -0600 Subject: [PATCH 01/16] tests: new tests added and flaky test issue solved. --- .../com/webforj/samples/views/BaseTest.java | 3 + .../views/alert/ClosableAlertViewIT.java | 33 +++++++++++ .../CheckboxHorizontalTextViewIT.java | 28 ++++++++++ .../views/dialog/DialogAutoFocusViewIT.java | 32 +++++++++++ .../views/dialog/DialogSectionsViewIT.java | 33 +++++++++++ .../views/drawer/DrawerTaskViewIT.java | 48 ++++++++++++++++ .../ChoiceboxDropdownTypeViewIT.java | 34 +++++++++++ .../confirm/ConfirmDialogOptionsViewIT.java | 44 +++++++++++++++ .../input/InputDialogBasicViewIT.java | 56 +++++++++++++++++++ .../input/InputDialogTypeViewIT.java | 35 ++++++++++++ .../samples/views/toast/ToastViewIT.java | 33 +++++++++++ 11 files changed, 379 insertions(+) create mode 100644 src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/toast/ToastViewIT.java diff --git a/src/test/java/com/webforj/samples/views/BaseTest.java b/src/test/java/com/webforj/samples/views/BaseTest.java index d20716bb3..1ac87dc88 100644 --- a/src/test/java/com/webforj/samples/views/BaseTest.java +++ b/src/test/java/com/webforj/samples/views/BaseTest.java @@ -6,6 +6,7 @@ import com.microsoft.playwright.Page; import com.microsoft.playwright.Playwright; import com.microsoft.playwright.Tracing; +import com.microsoft.playwright.assertions.PlaywrightAssertions; import com.microsoft.playwright.options.LoadState; import com.webforj.samples.config.RunConfig; @@ -32,6 +33,8 @@ public void setupBrowser() { new BrowserType.LaunchOptions() .setHeadless(RunConfig.isHeadless()) .setSlowMo(RunConfig.getSlowMo())); + + PlaywrightAssertions.setDefaultAssertionTimeout(15000); } @BeforeEach diff --git a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java new file mode 100644 index 000000000..b87a0c5fd --- /dev/null +++ b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java @@ -0,0 +1,33 @@ +package com.webforj.samples.views.alert; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class ClosableAlertViewIT extends BaseTest { + + @BeforeEach + public void setupClosableAlert() { + navigateToRoute("closablealert"); + // Kill animations for more reliable testing + page.addStyleTag(new Page.AddStyleTagOptions() + .setContent("* { transition: none !important; animation: none !important; }")); + } + + @Test + public void testAlertClosable() { + Locator alert = page.getByRole(AriaRole.ALERT); + + assertThat(alert).isVisible(); + + Locator closeButton = page.getByRole(AriaRole.BUTTON).filter().getByLabel("icon x"); + closeButton.click(); + assertThat(alert).not().isVisible(); + } +} diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java new file mode 100644 index 000000000..6f2c00062 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java @@ -0,0 +1,28 @@ +package com.webforj.samples.views.checkbox; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.webforj.samples.views.BaseTest; + +public class CheckboxHorizontalTextViewIT extends BaseTest { + + @BeforeEach + public void setupCheckboxHorizontalText() { + navigateToRoute("checkboxhorizontaltext"); + } + + @Test + public void testCheckboxHorizontal(){ + Locator checkbox = page.getByText("Daily").nth(1); + + assertThat(checkbox).isChecked(); + + checkbox.click(); + assertThat(checkbox).not().isChecked(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java new file mode 100644 index 000000000..b794e677c --- /dev/null +++ b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java @@ -0,0 +1,32 @@ +package com.webforj.samples.views.dialog; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class DialogAutoFocusViewIT extends BaseTest { + + @BeforeEach + public void setupDialogAutoFocus() { + navigateToRoute("dialogautofocus"); + + // Kill animations for more reliable testing + page.addStyleTag(new Page.AddStyleTagOptions() + .setContent("* { transition: none !important; animation: none !important; }")); + } + + @Test + public void testDialogAutoFocus() { + Locator textField = page.getByRole(AriaRole.TEXTBOX, + new Page.GetByRoleOptions().setName("This Box is Auto Focused")); + + assertThat(textField).isFocused(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java new file mode 100644 index 000000000..bf64ba4cd --- /dev/null +++ b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java @@ -0,0 +1,33 @@ +package com.webforj.samples.views.dialog; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.webforj.samples.views.BaseTest; + +public class DialogSectionsViewIT extends BaseTest { + + @BeforeEach + public void setupDialogSections() { + navigateToRoute("dialogsections"); + + // Kill animations for more reliable testing + page.addStyleTag(new Page.AddStyleTagOptions() + .setContent("* { transition: none !important; animation: none !important; }")); + } + + @Test + public void testDialogSections() { + Locator header = page.getByText("Header"); + Locator content = page.getByText("Content"); + Locator footer = page.getByText("Footer"); + + assertThat(header).isVisible(); + assertThat(content).isVisible(); + assertThat(footer).isVisible(); + } +} diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java new file mode 100644 index 000000000..9bd407c3f --- /dev/null +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java @@ -0,0 +1,48 @@ +package com.webforj.samples.views.drawer; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class DrawerTaskViewIT extends BaseTest { + + @BeforeEach + public void setupDrawerTask() { + navigateToRoute("drawertask"); + // Kill animations for more reliable testing + page.addStyleTag(new Page.AddStyleTagOptions() + .setContent("* { transition: none !important; animation: none !important; }")); + } + + @Test + public void testDrawerTask() { + Locator drawer = page.locator("dwc-drawer"); + assertThat(drawer).isVisible(); + + Locator meetingCheckbox = page.getByRole(AriaRole.CHECKBOX, + new Page.GetByRoleOptions().setName("Call John about the meeting")); + meetingCheckbox.check(); + + Locator clearButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Clear Completed")); + clearButton.click(); + + assertThat(meetingCheckbox).not().isVisible(); + + Locator newTaskInput = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("New Task")); + newTaskInput.fill("New Task from IT"); + + Locator addTaskButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Add Task")); + addTaskButton.click(); + + Locator newTaskCheckbox = page.getByRole(AriaRole.CHECKBOX, + new Page.GetByRoleOptions().setName("New Task from IT")); + assertThat(newTaskCheckbox).isVisible(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java b/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java new file mode 100644 index 000000000..dc9ad0a8b --- /dev/null +++ b/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java @@ -0,0 +1,34 @@ +package com.webforj.samples.views.lists.choicebox; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class ChoiceboxDropdownTypeViewIT extends BaseTest { + + @BeforeEach + public void setupChoiceboxDropdownType() { + navigateToRoute("choiceboxdropdowntype"); + } + + @Test + public void testChoiceboxDropdownType() { + + Locator choiceBoxElectronics = page.getByRole(AriaRole.BUTTON,new Page.GetByRoleOptions().setName("Electronics")); + choiceBoxElectronics.click(); + + Locator kitchenDropdown = page.getByRole(AriaRole.OPTION, new Page.GetByRoleOptions().setName("Kitchen")); + kitchenDropdown.click(); + + Locator choiceBoxKitchen = page.getByRole(AriaRole.BUTTON,new Page.GetByRoleOptions().setName("Kitchen")); + + assertThat(choiceBoxKitchen).isVisible(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java new file mode 100644 index 000000000..95de66533 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java @@ -0,0 +1,44 @@ +package com.webforj.samples.views.optiondialog.confirm; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class ConfirmDialogOptionsViewIT extends BaseTest { + + @BeforeEach + public void setupConfirmDialogOptionsView() { + navigateToRoute("confirmdialogoptions"); + } + + @Test + public void testDialogConfirmation() { + Locator dialog = page.getByRole(AriaRole.DIALOG); + assertThat(dialog).isVisible(); + + Locator confirmButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Discard")); + confirmButton.click(); + Locator discardedDialog = page.getByText("Changes discarded"); + assertThat(discardedDialog).isVisible(); + + Locator gotItButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Got it")); + gotItButton.click(); + + assertThat(dialog).isVisible(); + + Locator saveButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Save")); + saveButton.click(); + + Locator savedDialog = page.getByText("Changes saved"); + assertThat(savedDialog).isVisible(); + gotItButton.click(); + + assertThat(dialog).isVisible(); + } +} \ No newline at end of file diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java new file mode 100644 index 000000000..5c99aacc5 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java @@ -0,0 +1,56 @@ +package com.webforj.samples.views.optiondialog.input; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class InputDialogBasicViewIT extends BaseTest { + + @BeforeEach + public void setupInputDialogBasicView() { + navigateToRoute("inputdialogbasic"); + } + + @Test + public void testInvalidInputDialog() { + Locator dialog = page.getByRole(AriaRole.DIALOG); + assertThat(dialog).isVisible(); + + Locator inputField = page.getByRole(AriaRole.TEXTBOX); + inputField.fill("wrongCode"); + + Locator deleteButton = page.getByRole(AriaRole.BUTTON, + new Page.GetByRoleOptions().setName("Delete Repository")); + deleteButton.click(); + + Locator errorDialog = page.getByText("Failed to delete the repository. Code entered is incorrect"); + assertThat(errorDialog).isVisible(); + + Locator okButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("OK")); + okButton.click(); + } + + @Test + public void testValidInputDialog() { + Locator dialog = page.getByRole(AriaRole.DIALOG); + assertThat(dialog).isVisible(); + + Locator inputField = page.getByRole(AriaRole.TEXTBOX); + Locator deleteButton = page.getByRole(AriaRole.BUTTON, + new Page.GetByRoleOptions().setName("Delete Repository")); + + inputField.fill("7ANfB"); + deleteButton.click(); + + Locator okButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("OK")); + Locator successDialog = page.getByText("Repository was deleted successfully"); + assertThat(successDialog).isVisible(); + okButton.click(); + } +} diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java new file mode 100644 index 000000000..80a967809 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java @@ -0,0 +1,35 @@ +package com.webforj.samples.views.optiondialog.input; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class InputDialogTypeViewIT extends BaseTest { + + @BeforeEach + public void setupInputDialogTypeView() { + navigateToRoute("inputdialogtype"); + } + + @Test + public void testInputDialogTypeView() { + Locator dialog = page.getByRole(AriaRole.DIALOG); + assertThat(dialog).isVisible(); + + Locator inputField = page.getByRole(AriaRole.TEXTBOX); + inputField.fill("mySecretPassword"); + Locator continueButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Continue")); + continueButton.click(); + Locator accessGrantedDialog = page.getByText("Access granted"); + assertThat(accessGrantedDialog).isVisible(); + Locator gotItButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Got it")); + gotItButton.click(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java b/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java new file mode 100644 index 000000000..9edd4d57c --- /dev/null +++ b/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java @@ -0,0 +1,33 @@ +package com.webforj.samples.views.toast; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.views.BaseTest; + +public class ToastViewIT extends BaseTest { + + @BeforeEach + public void setupToastView() { + navigateToRoute("toast"); + // Kill animations for more reliable testing + page.addStyleTag(new Page.AddStyleTagOptions() + .setContent("* { transition: none !important; animation: none !important; }")); + } + + @Test + public void testToastStopButton() { + Locator toast = page.getByText("System update failed. Restoring to the previous state."); + assertThat(toast).isVisible(); + + Locator stopButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Stop")); + stopButton.click(); + + assertThat(stopButton).not().isVisible(); + } +} From d58037bfba3b8f66f025b02f49adf278d59ef7cf Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 1 Oct 2025 14:55:43 -0600 Subject: [PATCH 02/16] tests: respect browser config; select chromium/firefox/webkit and fix Playwright launch API --- .../com/webforj/samples/views/BaseTest.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/webforj/samples/views/BaseTest.java b/src/test/java/com/webforj/samples/views/BaseTest.java index 1ac87dc88..989f8f79d 100644 --- a/src/test/java/com/webforj/samples/views/BaseTest.java +++ b/src/test/java/com/webforj/samples/views/BaseTest.java @@ -29,10 +29,22 @@ public abstract class BaseTest { @BeforeAll public void setupBrowser() { playwright = Playwright.create(); - browser = playwright.chromium().launch( - new BrowserType.LaunchOptions() - .setHeadless(RunConfig.isHeadless()) - .setSlowMo(RunConfig.getSlowMo())); + String name = RunConfig.getBrowser().toLowerCase(); + BrowserType type; + switch (name) { + case "firefox": + type = playwright.firefox(); + break; + case "webkit": + type = playwright.webkit(); + break; + default: + type = playwright.chromium(); + break; + } + browser = type.launch(new BrowserType.LaunchOptions() + .setHeadless(RunConfig.isHeadless()) + .setSlowMo(RunConfig.getSlowMo())); PlaywrightAssertions.setDefaultAssertionTimeout(15000); } From b80579405aca4ba22fa0ab8a3a270749b822d5fe Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Thu, 9 Oct 2025 15:03:34 -0600 Subject: [PATCH 03/16] fix: disableanimation method moved to basetest --- pom.xml | 1 - src/test/java/com/webforj/samples/views/BaseTest.java | 3 +++ .../webforj/samples/views/alert/ClosableAlertViewIT.java | 4 ---- .../views/checkbox/CheckboxHorizontalTextViewIT.java | 6 +++--- .../webforj/samples/views/dialog/DialogAutoFocusViewIT.java | 4 ---- .../webforj/samples/views/dialog/DialogSectionsViewIT.java | 5 ----- .../com/webforj/samples/views/drawer/DrawerTaskViewIT.java | 6 +----- .../views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java | 5 +++-- .../samples/views/login/LoginCancelButtonViewIT.java | 3 --- .../java/com/webforj/samples/views/toast/ToastViewIT.java | 3 --- 10 files changed, 10 insertions(+), 30 deletions(-) diff --git a/pom.xml b/pom.xml index ae0bfc8a7..c62805f46 100644 --- a/pom.xml +++ b/pom.xml @@ -249,7 +249,6 @@ false both ${threadCount} - true false true diff --git a/src/test/java/com/webforj/samples/views/BaseTest.java b/src/test/java/com/webforj/samples/views/BaseTest.java index 989f8f79d..e45ee2262 100644 --- a/src/test/java/com/webforj/samples/views/BaseTest.java +++ b/src/test/java/com/webforj/samples/views/BaseTest.java @@ -89,5 +89,8 @@ protected void navigateToRoute(String route) { page.navigate("http://localhost:8998/" + route); // Wait for the page to be fully loaded page.waitForLoadState(LoadState.DOMCONTENTLOADED); + + page.addStyleTag(new Page.AddStyleTagOptions() + .setContent("* { transition: none !important; animation: none !important; }")); } } diff --git a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java index b87a0c5fd..557f14332 100644 --- a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java +++ b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; import com.microsoft.playwright.options.AriaRole; import com.webforj.samples.views.BaseTest; @@ -15,9 +14,6 @@ public class ClosableAlertViewIT extends BaseTest { @BeforeEach public void setupClosableAlert() { navigateToRoute("closablealert"); - // Kill animations for more reliable testing - page.addStyleTag(new Page.AddStyleTagOptions() - .setContent("* { transition: none !important; animation: none !important; }")); } @Test diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java index 6f2c00062..fe0750d57 100644 --- a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java @@ -16,13 +16,13 @@ public void setupCheckboxHorizontalText() { } @Test - public void testCheckboxHorizontal(){ + public void testCheckboxHorizontal() { Locator checkbox = page.getByText("Daily").nth(1); - + assertThat(checkbox).isChecked(); checkbox.click(); assertThat(checkbox).not().isChecked(); } - + } diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java index b794e677c..b9e69f821 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java @@ -15,10 +15,6 @@ public class DialogAutoFocusViewIT extends BaseTest { @BeforeEach public void setupDialogAutoFocus() { navigateToRoute("dialogautofocus"); - - // Kill animations for more reliable testing - page.addStyleTag(new Page.AddStyleTagOptions() - .setContent("* { transition: none !important; animation: none !important; }")); } @Test diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java index bf64ba4cd..1836f3934 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; import com.webforj.samples.views.BaseTest; public class DialogSectionsViewIT extends BaseTest { @@ -14,10 +13,6 @@ public class DialogSectionsViewIT extends BaseTest { @BeforeEach public void setupDialogSections() { navigateToRoute("dialogsections"); - - // Kill animations for more reliable testing - page.addStyleTag(new Page.AddStyleTagOptions() - .setContent("* { transition: none !important; animation: none !important; }")); } @Test diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java index 9bd407c3f..57991202c 100644 --- a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java @@ -14,11 +14,7 @@ public class DrawerTaskViewIT extends BaseTest { @BeforeEach public void setupDrawerTask() { - navigateToRoute("drawertask"); - // Kill animations for more reliable testing - page.addStyleTag(new Page.AddStyleTagOptions() - .setContent("* { transition: none !important; animation: none !important; }")); - } + navigateToRoute("drawertask"); } @Test public void testDrawerTask() { diff --git a/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java b/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java index dc9ad0a8b..d376fe3ca 100644 --- a/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java +++ b/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java @@ -20,13 +20,14 @@ public void setupChoiceboxDropdownType() { @Test public void testChoiceboxDropdownType() { - Locator choiceBoxElectronics = page.getByRole(AriaRole.BUTTON,new Page.GetByRoleOptions().setName("Electronics")); + Locator choiceBoxElectronics = page.getByRole(AriaRole.BUTTON, + new Page.GetByRoleOptions().setName("Electronics")); choiceBoxElectronics.click(); Locator kitchenDropdown = page.getByRole(AriaRole.OPTION, new Page.GetByRoleOptions().setName("Kitchen")); kitchenDropdown.click(); - Locator choiceBoxKitchen = page.getByRole(AriaRole.BUTTON,new Page.GetByRoleOptions().setName("Kitchen")); + Locator choiceBoxKitchen = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Kitchen")); assertThat(choiceBoxKitchen).isVisible(); } diff --git a/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java b/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java index fb5000cf8..021d6a3fc 100644 --- a/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java +++ b/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java @@ -5,9 +5,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import com.microsoft.playwright.options.AriaRole; import com.webforj.samples.pages.login.LoginCancelButtonPage; import com.webforj.samples.views.BaseTest; diff --git a/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java b/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java index 9edd4d57c..8088da6ec 100644 --- a/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java +++ b/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java @@ -15,9 +15,6 @@ public class ToastViewIT extends BaseTest { @BeforeEach public void setupToastView() { navigateToRoute("toast"); - // Kill animations for more reliable testing - page.addStyleTag(new Page.AddStyleTagOptions() - .setContent("* { transition: none !important; animation: none !important; }")); } @Test From 5164693d1155b187f47fb5d10c65b8f6cbc8df2a Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Tue, 14 Oct 2025 15:10:14 -0600 Subject: [PATCH 04/16] refactor: update test names for better readability --- .../com/webforj/samples/config/RunConfig.java | 1 - .../views/alert/ClosableAlertViewIT.java | 2 +- .../samples/views/appnav/AppNavViewIT.java | 6 +-- .../samples/views/button/ButtonViewIT.java | 4 +- .../CheckboxHorizontalTextViewIT.java | 2 +- .../views/dialog/DialogAutoFocusViewIT.java | 2 +- .../views/dialog/DialogSectionsViewIT.java | 2 +- .../views/drawer/DrawerTaskViewIT.java | 2 +- .../views/element/ElementInputDemoViewIT.java | 2 +- .../element/ElementInputEventViewIT.java | 2 +- .../fields/datefield/DateFieldViewIT.java | 8 +-- .../fields/numberfield/NumberFieldViewIT.java | 6 +-- .../passwordfield/PasswordFieldViewIT.java | 2 +- .../fields/textfield/TextFieldViewIT.java | 10 ++-- .../container/FlexPositioningViewIT.java | 12 ++--- .../flexlayout/item/FlexOrderViewIT.java | 4 +- .../views/googlecharts/ChartRedrawViewIT.java | 6 +-- .../views/icon/IconVariationsViewIT.java | 2 +- .../ChoiceboxDropdownTypeViewIT.java | 2 +- .../views/login/LoginCancelButtonViewIT.java | 2 +- .../views/login/LoginCustomFieldsViewIT.java | 10 ++-- .../views/navigator/NavigatorBasicViewIT.java | 2 +- .../views/navigator/NavigatorPagesViewIT.java | 2 +- .../confirm/ConfirmDialogOptionsViewIT.java | 2 +- .../input/InputDialogTypeViewIT.java | 2 +- .../radiobutton/RadioButtonGroupViewIT.java | 2 +- .../radiobutton/RadioButtonSwitchViewIT.java | 2 +- .../radiobutton/RadioButtonTextViewIT.java | 2 +- .../views/slider/DonationSliderViewIT.java | 2 +- .../views/slider/SliderLabelsViewIT.java | 3 +- .../views/slider/SliderTickSpacingViewIT.java | 51 ------------------- .../samples/views/slider/SliderViewIT.java | 2 +- .../spinner/SpinnerDirectionDemoViewIT.java | 2 +- .../views/spinner/SpinnerSpeedDemoViewIT.java | 2 +- .../tabbedpane/TabbedPaneAlignmentViewIT.java | 4 +- .../tabbedpane/TabbedPaneBorderViewIT.java | 4 +- .../tabbedpane/TabbedPanePlacementViewIT.java | 4 +- .../samples/views/table/DataTableViewIT.java | 6 +-- .../table/TableColumnComparatorViewIT.java | 2 +- .../views/table/TableColumnPinningViewIT.java | 2 +- .../views/table/TableEditDataViewIT.java | 2 +- .../views/table/TableFilteringViewIT.java | 12 ++--- .../table/TableMultipleSelectionViewIT.java | 4 +- .../views/table/TableRichContentViewIT.java | 6 +-- .../table/TableSingleSelectionViewIT.java | 2 +- .../views/textarea/TextAreaViewIT.java | 6 +-- 46 files changed, 84 insertions(+), 135 deletions(-) delete mode 100644 src/test/java/com/webforj/samples/views/slider/SliderTickSpacingViewIT.java diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index 2b3f6e789..5ca83504e 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -16,7 +16,6 @@ public class RunConfig { private static void parseE2EProps(String propsString) { try { - // Parse manually to handle browsers=a:b:c case String[] pairs = propsString.split(","); for (String pair : pairs) { diff --git a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java index 557f14332..997deed09 100644 --- a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java +++ b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java @@ -17,7 +17,7 @@ public void setupClosableAlert() { } @Test - public void testAlertClosable() { + public void testAlertClosableAtStart() { Locator alert = page.getByRole(AriaRole.ALERT); assertThat(alert).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java b/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java index 9c8d14f6b..0a7ac1af9 100644 --- a/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java +++ b/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java @@ -19,7 +19,7 @@ public void setupAppNav() { } @Test - public void testTablerIcon() { + public void testDrawerOpened() { appNavPage.getTablerIcon().click(); assertThat(appNavPage.getAppLayout()).not().hasAttribute("drawer-opened", "12"); @@ -29,7 +29,7 @@ public void testTablerIcon() { } @Test - public void testUpdateMainContent() { + public void testPrimaryTabSelected() { appNavPage.getInboxDropdown().click(); appNavPage.getSidebarPrimaryTab().click(); @@ -38,7 +38,7 @@ public void testUpdateMainContent() { } @Test - public void testAboutDropdown() { + public void testExternalLinks() { appNavPage.getAboutDropdown().click(); assertThat(appNavPage.getSidebarWebforJ().locator("a")).hasAttribute("href", "https://webforj.com/"); diff --git a/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java b/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java index f4d38b3c2..819c4c4f3 100644 --- a/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java +++ b/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java @@ -19,14 +19,14 @@ public void setupButtonDemo() { } @Test - public void testClickSubmitDisplaysWelcomeMessage() { + public void testWelcomeMessageDisplayedAtStart() { button.getSubmitButton().click(); assertThat(button.getWelcomeDialog()).isVisible(); } @Test - public void testClickClearClearsInputs() { + public void testInputsCleared() { assertThat(button.getFirstName()).hasValue("Jason"); assertThat(button.getLastName()).hasValue("Turner"); assertThat(button.getEmail()).hasValue("turner.jason@email.com"); diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java index fe0750d57..8ddefd530 100644 --- a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java @@ -16,7 +16,7 @@ public void setupCheckboxHorizontalText() { } @Test - public void testCheckboxHorizontal() { + public void testDailyCheckboxChecked() { Locator checkbox = page.getByText("Daily").nth(1); assertThat(checkbox).isChecked(); diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java index b9e69f821..d834f8283 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java @@ -18,7 +18,7 @@ public void setupDialogAutoFocus() { } @Test - public void testDialogAutoFocus() { + public void testAutoFocus() { Locator textField = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("This Box is Auto Focused")); diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java index 1836f3934..93f8f96b8 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java @@ -16,7 +16,7 @@ public void setupDialogSections() { } @Test - public void testDialogSections() { + public void testSectionsVisible() { Locator header = page.getByText("Header"); Locator content = page.getByText("Content"); Locator footer = page.getByText("Footer"); diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java index 57991202c..53ab1a57e 100644 --- a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java @@ -17,7 +17,7 @@ public void setupDrawerTask() { navigateToRoute("drawertask"); } @Test - public void testDrawerTask() { + public void testTaskAdded() { Locator drawer = page.locator("dwc-drawer"); assertThat(drawer).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java b/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java index ba5c28eb3..f3ec65f44 100644 --- a/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java +++ b/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java @@ -19,7 +19,7 @@ public void setupInputDemo() { } @Test - public void testInput() { + public void testInputValue() { elementInputDemoPage.getInputField().fill("Hello World"); assertThat(elementInputDemoPage.getInputField()).hasValue("Hello World"); } diff --git a/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java b/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java index f09836a9f..851585b40 100644 --- a/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java +++ b/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java @@ -19,7 +19,7 @@ public void setupInputEvent() { } @Test - public void testEventListener() { + public void testDialogMessage() { elementInputEventPage.getInputField().fill("Hello World"); elementInputEventPage.getInputField().press("Enter"); diff --git a/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java index 447dd3026..45d206aad 100644 --- a/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java @@ -22,7 +22,7 @@ public void setupDateField() { } @Test - public void testValidDates() { + public void testValidDatesEntered() { String departureDate = today.plusDays(3).format(DateTimeFormatter.ISO_LOCAL_DATE); String returnDate = today.plusDays(6).format(DateTimeFormatter.ISO_LOCAL_DATE); @@ -34,7 +34,7 @@ public void testValidDates() { } @Test - public void testEarlierReturnDate() { + public void testEarlierReturnDateCorrected() { String departureDate = today.plusDays(6).format(DateTimeFormatter.ISO_LOCAL_DATE); String returnDate = today.plusDays(3).format(DateTimeFormatter.ISO_LOCAL_DATE); String correctedReturnDateISOFormat = today.plusDays(6).format(DateTimeFormatter.ISO_LOCAL_DATE); @@ -46,7 +46,7 @@ public void testEarlierReturnDate() { } @Test - public void testInvalidString() { + public void testInvalidStringIgnored() { dateFieldPage.getDepartureDate().click(); dateFieldPage.getDepartureDate().press("Control+A"); dateFieldPage.getDepartureDate().pressSequentially("abcd"); @@ -55,7 +55,7 @@ public void testInvalidString() { } @Test - public void testSpecialChar() { + public void testSpecialCharsIgnored() { page.keyboard().press("Tab"); page.keyboard().press("Tab"); dateFieldPage.getDepartureDate().pressSequentially("#$%&"); diff --git a/src/test/java/com/webforj/samples/views/fields/numberfield/NumberFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/numberfield/NumberFieldViewIT.java index 0baf1409a..b808027e6 100644 --- a/src/test/java/com/webforj/samples/views/fields/numberfield/NumberFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/numberfield/NumberFieldViewIT.java @@ -21,16 +21,16 @@ public void setupNumberField() { } @Test - public void testNumericNumber() { + public void testNumericNumberEntered() { numberFieldPage.getNumberField().fill("1234567890"); assertThat(numberFieldPage.getNumberField()).hasValue("1234567890"); } @Test - public void testNonNumericNumber() { + public void testNonNumericNumberIgnored () { try { numberFieldPage.getNumberField().fill("abcd"); - } + } catch (PlaywrightException e) { } assertThat(numberFieldPage.getNumberField()).hasValue(""); diff --git a/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java index f9dbb451d..65120dea9 100644 --- a/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java @@ -19,7 +19,7 @@ public void setupPasswordField() { } @Test - public void testVisibilityToggle() { + public void testVisibilityToggled() { passwordFieldPage.getPasswordField().fill("Password123!"); assertThat(passwordFieldPage.getPasswordField()).hasAttribute("type", "password"); diff --git a/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java index ed0dbe204..145946141 100644 --- a/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java @@ -21,7 +21,7 @@ public void setupTextField() { } @Test - public void testAllInputFields() { + public void testAllInputFieldsEnteredAtStart() { textFieldPage.getUsernameInput().clear(); textFieldPage.getUsernameInput().fill("Jane Doe"); textFieldPage.getEmailInput().clear(); @@ -41,7 +41,7 @@ public void testAllInputFields() { } @Test - public void testValidEmail() { + public void testValidEmailsEnteredAtStart() { List validEmails = List.of( "user@example.com", "user@subdomain.example.com", @@ -60,7 +60,7 @@ public void testValidEmail() { } @Test - public void testInvalidEmail() { + public void testInvalidEmailsIgnoredAtStart() { List invalidEmails = List.of( "user@", "@example.com", @@ -85,7 +85,7 @@ public void testInvalidEmail() { } @Test - public void testValidURL() { + public void testValidURLsEnteredAtStart() { List validURLs = List.of( "http://example.com", "https://example.com", @@ -110,7 +110,7 @@ public void testValidURL() { } @Test - public void testInvalidURL() { + public void testInvalidURLsIgnoredAtStart() { List invalidURLs = List.of( "example.com", "http//example.com", diff --git a/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java b/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java index 30c14a1a8..66538519a 100644 --- a/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java +++ b/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java @@ -22,7 +22,7 @@ public void setupFlexPositioning() { } @Test - public void testFlexStartPositionsBoxesAtStart() { + public void testFlexStartPositionsBoxesAtStartAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Flex-start").nth(0).click(); @@ -31,7 +31,7 @@ public void testFlexStartPositionsBoxesAtStart() { } @Test - public void testFlexEndPositionsBoxesAtEnd() { + public void testFlexEndPositionsBoxesAtStartAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Flex-end").nth(0).click(); @@ -40,7 +40,7 @@ public void testFlexEndPositionsBoxesAtEnd() { } @Test - public void testCenterPositionsBoxesCentrally() { + public void testCenterPositionsBoxesAtStartAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Center").nth(0).click(); @@ -49,7 +49,7 @@ public void testCenterPositionsBoxesCentrally() { } @Test - public void testSpaceBetweenDistributesBoxesWithEdges() { + public void testSpaceBetweenDistributesBoxesWithEdgesAtStartAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Space-between").nth(0).click(); @@ -58,7 +58,7 @@ public void testSpaceBetweenDistributesBoxesWithEdges() { } @Test - public void testSpaceAroundDistributesBoxesWithEqualSpaceAround() { + public void testSpaceAroundDistributesBoxesWithEqualSpaceAroundAtStartAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Space-around").nth(0).click(); @@ -67,7 +67,7 @@ public void testSpaceAroundDistributesBoxesWithEqualSpaceAround() { } @Test - public void testSpaceEvenlyDistributesBoxesWithEqualSpaceBetweenAndAround() { + public void testSpaceEvenlyDistributesBoxesWithEqualSpaceBetweenAndAroundAtStartAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Space-evenly").nth(0).click(); diff --git a/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java b/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java index a8d0e5ac2..f568e42d2 100644 --- a/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java +++ b/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java @@ -20,8 +20,8 @@ public void setupFlexOrder() { } @Test - public void testEnteringZeroPositionsBoxWithOrderZero() { + public void testZeroOrderPositionsBoxAtStartAtStart() { flexOrderPage.getSetOrderButton().click(); - assertThat(flexOrderPage.buttonValue(0)).isVisible(); + assertThat(flexOrderPage.buttonValue(0)).isVisible(); } } diff --git a/src/test/java/com/webforj/samples/views/googlecharts/ChartRedrawViewIT.java b/src/test/java/com/webforj/samples/views/googlecharts/ChartRedrawViewIT.java index 3abb2e494..2c62ea1d2 100644 --- a/src/test/java/com/webforj/samples/views/googlecharts/ChartRedrawViewIT.java +++ b/src/test/java/com/webforj/samples/views/googlecharts/ChartRedrawViewIT.java @@ -19,7 +19,7 @@ public void navigateToChartRedraw() { } @Test - public void testChartUpdating() { + public void testChartValuesUpdated() { chartRedraw.updateChart(140, 120, 100, 80); assertThat(chartRedraw.getValueForInstagram()).hasValue("140"); assertThat(chartRedraw.getValueForTwitter()).hasValue("120"); @@ -28,7 +28,7 @@ public void testChartUpdating() { } @Test - public void testInvalidNonNumberInput() { + public void testInvalidNonNumberInputsIgnored() { chartRedraw.cleanField(chartRedraw.getValueForInstagram()); page.keyboard().type("abc"); @@ -36,7 +36,7 @@ public void testInvalidNonNumberInput() { } @Test - public void testInvalidSpecialCharacters() { + public void testInvalidSpecialCharactersIgnored() { chartRedraw.cleanField(chartRedraw.getValueForInstagram()); page.keyboard().type("$!#%&*"); diff --git a/src/test/java/com/webforj/samples/views/icon/IconVariationsViewIT.java b/src/test/java/com/webforj/samples/views/icon/IconVariationsViewIT.java index ae7c5d7cc..42bbff478 100644 --- a/src/test/java/com/webforj/samples/views/icon/IconVariationsViewIT.java +++ b/src/test/java/com/webforj/samples/views/icon/IconVariationsViewIT.java @@ -30,7 +30,7 @@ public void setupIconVariations() { } @Test - public void testSVG() throws IOException, InterruptedException { + public void testSVGsLoaded() throws IOException, InterruptedException { Map svgIcons = Map.of( "calendar", CALENDAR_ICON_URL, diff --git a/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java b/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java index d376fe3ca..99c67daf5 100644 --- a/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java +++ b/src/test/java/com/webforj/samples/views/lists/choicebox/ChoiceboxDropdownTypeViewIT.java @@ -18,7 +18,7 @@ public void setupChoiceboxDropdownType() { } @Test - public void testChoiceboxDropdownType() { + public void testChoiceboxDropdownTypeSelected() { Locator choiceBoxElectronics = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Electronics")); diff --git a/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java b/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java index 021d6a3fc..5a1e03a75 100644 --- a/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java +++ b/src/test/java/com/webforj/samples/views/login/LoginCancelButtonViewIT.java @@ -19,7 +19,7 @@ public void setupLoginCancelButton() { } @Test - public void testCancelButton() { + public void testCancelButtonDisabled() { login.getCancelButton().click(); assertThat(login.getSignInButton()).hasAttribute("disabled", ""); } diff --git a/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java b/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java index 539d1ebe4..78ea1edcc 100644 --- a/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java +++ b/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java @@ -19,7 +19,7 @@ public void setupLoginCustomFields() { } @Test - public void testSuccessfulLogin() { + public void testSuccessfulLoginWithValidCredentialsAtStart() { login.getCustomderID().fill("Tesla"); login.getUsername().fill("admin"); login.getPassword().fill("admin"); @@ -32,7 +32,7 @@ public void testSuccessfulLogin() { } @Test - public void testInvalidCustomerID() { + public void testInvalidCustomerIDIgnoredAtStart() { login.getCustomderID().fill("Toyota"); login.getUsername().fill("admin"); @@ -43,7 +43,7 @@ public void testInvalidCustomerID() { } @Test - public void testValidCustomerIDAndBlankInput() { + public void testValidCustomerIDAndBlankInputsIgnoredAtStart() { login.getCustomderID().fill("Tesla"); login.getUsername().fill(" "); login.getPassword().fill(" "); @@ -53,7 +53,7 @@ public void testValidCustomerIDAndBlankInput() { } @Test - public void testValidCustomerIDAndInvalidInput() { + public void testValidCustomerIDAndInvalidInputsIgnoredAtStart() { login.getCustomderID().fill("Tesla"); login.getUsername().fill("user1"); login.getPassword().fill("wrongpass"); @@ -63,7 +63,7 @@ public void testValidCustomerIDAndInvalidInput() { } @Test - public void testBlankCustomerIDAndValidInput() { + public void testBlankCustomerIDAndValidInputsIgnored() { login.getCustomderID().fill(" "); login.getUsername().fill("admin"); login.getPassword().fill("admin"); diff --git a/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java b/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java index b4c85f6d8..e82255d42 100644 --- a/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java +++ b/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java @@ -19,7 +19,7 @@ public void setupNavigatorBasics() { } @Test - public void testRangeConsistency() { + public void testRangeConsistencyAtStart() { navigator.clickNext(); assertThat(navigator.navigatorValue(1)).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java b/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java index a78e3d514..0bb6496ad 100644 --- a/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java +++ b/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java @@ -19,7 +19,7 @@ public void setupNavigatorPage() { } @Test - public void testVerifyEllipsis() { + public void testVerifyEllipsisAtStart() { navigator.navigatorValue(4).click(); assertThat(navigator.showingRange(31,40)).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java index 95de66533..959e1dd35 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java @@ -18,7 +18,7 @@ public void setupConfirmDialogOptionsView() { } @Test - public void testDialogConfirmation() { + public void testDialogConfirmationAtStart() { Locator dialog = page.getByRole(AriaRole.DIALOG); assertThat(dialog).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java index 80a967809..5b992dfda 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java @@ -18,7 +18,7 @@ public void setupInputDialogTypeView() { } @Test - public void testInputDialogTypeView() { + public void testInputDialogType() { Locator dialog = page.getByRole(AriaRole.DIALOG); assertThat(dialog).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java index 68560b37a..58d83fd4f 100644 --- a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java +++ b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java @@ -19,7 +19,7 @@ public void setupRadioButtonGroup() { } @Test - public void testRadioButtonGroup() { + public void testStronglyDisagreeRadioButtonGroup() { radioButtonGroupPage.getStronglyDisagreeRB().check(); assertThat(radioButtonGroupPage.getStronglyDisagreeRB()).isChecked(); diff --git a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java index 181a15771..4a7fd47bc 100644 --- a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java +++ b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java @@ -19,7 +19,7 @@ public void setupRadioButtonSwitch() { } @Test - public void testSwitchButtonStyle() { + public void testSwitchRadioButtonStyle() { radioButton.getSwitchRadio().check(); assertThat(radioButton.getSwitchRadio()).isChecked(); diff --git a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java index e8545417b..5e6284eee 100644 --- a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java +++ b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java @@ -19,7 +19,7 @@ public void setupRadioButtonText() { } @Test - public void testButtonAlignment() { + public void testLeftAlignedButtonStyle() { radioButton.getLeftAlignedInput().check(); assertThat(radioButton.getLeftAlignedInput()).hasAttribute("aria-checked", "true"); } diff --git a/src/test/java/com/webforj/samples/views/slider/DonationSliderViewIT.java b/src/test/java/com/webforj/samples/views/slider/DonationSliderViewIT.java index d2d702243..e7f8c2f6b 100644 --- a/src/test/java/com/webforj/samples/views/slider/DonationSliderViewIT.java +++ b/src/test/java/com/webforj/samples/views/slider/DonationSliderViewIT.java @@ -19,7 +19,7 @@ public void setupDonationSlider() { } @Test - public void testDonation() { + public void testDonationSlider() { sliderPage.getTwentyDollarsOption().click(); assertThat(sliderPage.getDonationLowerHandle()).hasAttribute("aria-valuenow", "20.0"); diff --git a/src/test/java/com/webforj/samples/views/slider/SliderLabelsViewIT.java b/src/test/java/com/webforj/samples/views/slider/SliderLabelsViewIT.java index 0e52dd852..8b543d233 100644 --- a/src/test/java/com/webforj/samples/views/slider/SliderLabelsViewIT.java +++ b/src/test/java/com/webforj/samples/views/slider/SliderLabelsViewIT.java @@ -18,8 +18,9 @@ public void setupSliderLabels() { sliderPage = new SliderLabelsPage(page); } + @Test - public void testLabelsThemes() { + public void testLabelsThemesSlider() { sliderPage.getTenDegreeOption().click(); assertThat(sliderPage.getSliderLabel()).hasAttribute("theme", "primary"); diff --git a/src/test/java/com/webforj/samples/views/slider/SliderTickSpacingViewIT.java b/src/test/java/com/webforj/samples/views/slider/SliderTickSpacingViewIT.java deleted file mode 100644 index 2f26b8cf7..000000000 --- a/src/test/java/com/webforj/samples/views/slider/SliderTickSpacingViewIT.java +++ /dev/null @@ -1,51 +0,0 @@ -// package com.webforj.samples.views.slider; - -// import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; - -// import java.util.regex.Pattern; - -// import org.junit.jupiter.api.BeforeEach; -// import org.junit.jupiter.api.Test; - -// import com.webforj.samples.pages.slider.SliderTickSpacingPage; -// import com.webforj.samples.views.BaseTest; - -// public class SliderTickSpacingViewIT extends BaseTest { - -// private SliderTickSpacingPage sliderPage; - -// @BeforeEach -// public void setupMajorandMinorTick() { -// navigateToRoute(SliderTickSpacingPage.getRoute()); -// sliderPage = new SliderTickSpacingPage(page); -// } - -// @Test -// public void testMajorandMinorTick() { -// assertThat(sliderPage.getMajorTickInput()).hasValue("20"); -// assertThat(sliderPage.getMinorTickInput()).hasValue("10"); - -// // 20 major tick causes 6 major ticks. -// // 10 minor tick causes 11 minor ticks. - -// assertThat(sliderPage.getMajorTicks()).hasCount(6); -// assertThat(sliderPage.getMinorTicks()).hasCount(11); -// } - -// @Test -// public void testHiddingTicks() { -// sliderPage.getTickToggle().click(); -// assertThat(sliderPage.getTickSpacingControl()) -// .hasClass(Pattern.compile(".*control--noTicks.*")); -// } - -// @Test -// public void testSnappingTicks() { -// sliderPage.getSnapToggle().click(); -// assertThat(sliderPage.getLowerHandle()).hasAttribute("aria-valuenow", "50.0"); - -// sliderPage.getSnapThumb().click(); -// page.keyboard().press("ArrowRight"); -// assertThat(sliderPage.getLowerHandle()).hasAttribute("aria-valuenow", "60.0"); -// } -// } diff --git a/src/test/java/com/webforj/samples/views/slider/SliderViewIT.java b/src/test/java/com/webforj/samples/views/slider/SliderViewIT.java index 32acaa597..33dc82a1f 100644 --- a/src/test/java/com/webforj/samples/views/slider/SliderViewIT.java +++ b/src/test/java/com/webforj/samples/views/slider/SliderViewIT.java @@ -19,7 +19,7 @@ public void setupSliderView() { } @Test - public void testSliderView() { + public void testVolumeSlider() { sliderPage.getVolumeOffButton().click(); assertThat(sliderPage.getLowerHandle()).hasAttribute("aria-valuenow", "0.0"); diff --git a/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java b/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java index 97b889d9e..26b55c76e 100644 --- a/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java +++ b/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java @@ -19,7 +19,7 @@ public void setupSpinnerDirection() { } @Test - public void testSpinnerDirectionCorrectness() { + public void testSpinnerDirection() { spinnerPage.getClockwiseButton().click(); assertThat(spinnerPage.getSpinner()).hasAttribute("clockwise", ""); diff --git a/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java b/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java index 7fb60a690..85ca56951 100644 --- a/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java +++ b/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java @@ -19,7 +19,7 @@ public void setupSpinnerSpeeds() { } @Test - public void testPauseAndResumeFunctionality() { + public void testPauseAndResumeSpinner() { spinnerPage.getPauseButton().click(); assertThat(spinnerPage.getSpinner()).hasAttribute("paused", ""); diff --git a/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneAlignmentViewIT.java b/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneAlignmentViewIT.java index fb58d9be6..4ead77018 100644 --- a/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneAlignmentViewIT.java +++ b/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneAlignmentViewIT.java @@ -13,13 +13,13 @@ public class TabbedPaneAlignmentViewIT extends BaseTest { private TabbedPaneAlignmentPage tabbedPaneAlignmentPage; @BeforeEach - public void setupAlignment() { + public void setupAlignmentTabbedPane() { navigateToRoute(TabbedPaneAlignmentPage.getRoute()); tabbedPaneAlignmentPage = new TabbedPaneAlignmentPage(page); } @Test - public void testAlignment() { + public void testAlignmentTabbedPane() { tabbedPaneAlignmentPage.getAlignmentDropdown().click(); tabbedPaneAlignmentPage.getAlignmentDropdownButton().click(); //CENTER assertThat(tabbedPaneAlignmentPage.getAlignmentTabbedPane()).hasAttribute("alignment", "center"); diff --git a/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneBorderViewIT.java b/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneBorderViewIT.java index 0870982c6..4cf06b5b2 100644 --- a/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneBorderViewIT.java +++ b/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPaneBorderViewIT.java @@ -13,13 +13,13 @@ public class TabbedPaneBorderViewIT extends BaseTest { private TabbedPaneBorderPage tabbedPaneBorderPage; @BeforeEach - public void setupBorder() { + public void setupBorderTabbedPane() { navigateToRoute(TabbedPaneBorderPage.getRoute()); tabbedPaneBorderPage = new TabbedPaneBorderPage(page); } @Test - public void testBorder() { + public void testBorderTabbedPane() { tabbedPaneBorderPage.getHideBorderToggle().click(); assertThat(tabbedPaneBorderPage.getBorderTabbedPane()).hasAttribute("borderless", ""); diff --git a/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPanePlacementViewIT.java b/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPanePlacementViewIT.java index ee7491584..c5f5f95ed 100644 --- a/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPanePlacementViewIT.java +++ b/src/test/java/com/webforj/samples/views/tabbedpane/TabbedPanePlacementViewIT.java @@ -13,13 +13,13 @@ public class TabbedPanePlacementViewIT extends BaseTest { private TabbedPanePlacementPage tabbedPanePlacementPage; @BeforeEach - public void setupTabbedPanePlacement() { + public void setupPlacementTabbedPane() { navigateToRoute(TabbedPanePlacementPage.getRoute()); tabbedPanePlacementPage = new TabbedPanePlacementPage(page); } @Test - public void testPlacement() { + public void testPlacementTabbedPane() { tabbedPanePlacementPage.getPlacementDropdown().click(); tabbedPanePlacementPage.getAlignmentDropdownButton().click(); //BOTTOM assertThat(tabbedPanePlacementPage.getPlacementTabbedPane()).hasAttribute("placement", "bottom"); diff --git a/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java b/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java index 4573a407d..319a7e4b4 100644 --- a/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java @@ -24,7 +24,7 @@ public void setupDataTable() { } @Test - public void testEntriesPerPage() { + public void testEntriesPerPageAndPaginator() { dataTable.getEntriesDropdown().click(); dataTable.getEntriesTen().click(); assertThat(dataTable.getTableRows()).hasCount(10); @@ -54,7 +54,7 @@ public void testFilteringNonLatinAlphabetCharacters() { } @Test - public void testPaginatorDisplaysCorrectly() { + public void testPaginatorDisplaysCorrectlyPaginator() { dataTable.getPaginatorLastPage().click(); assertThat(dataTable.goToSpecificPage(862)).isVisible(); @@ -72,7 +72,7 @@ public void testPaginatorDisplaysCorrectly() { } @Test - public void testPaginatorNavigatesCorrectly() { + public void testPaginatorNavigatesCorrectlyPaginator() { dataTable.getPaginatorNextPage().click(); assertThat(dataTable.getPaginationText("Showing 11 to 20 of 8618")).isVisible(); } diff --git a/src/test/java/com/webforj/samples/views/table/TableColumnComparatorViewIT.java b/src/test/java/com/webforj/samples/views/table/TableColumnComparatorViewIT.java index 66193b8be..652fe6e20 100644 --- a/src/test/java/com/webforj/samples/views/table/TableColumnComparatorViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableColumnComparatorViewIT.java @@ -24,7 +24,7 @@ public void setupTableColumnComparator() { } @Test - public void testComparatorFunctionality() { + public void testComparatorFunctionalityTableColumnComparator() { tableColumnComparator.getNumberColumnHeader().click(); List ascNumbersText = tableColumnComparator.getNumberCells().allTextContents(); diff --git a/src/test/java/com/webforj/samples/views/table/TableColumnPinningViewIT.java b/src/test/java/com/webforj/samples/views/table/TableColumnPinningViewIT.java index 7e9be2b6f..25ffcb769 100644 --- a/src/test/java/com/webforj/samples/views/table/TableColumnPinningViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableColumnPinningViewIT.java @@ -19,7 +19,7 @@ public void setupTableColumnPinning() { } @Test - public void testEditButton() { + public void testEditButtonTableColumnPinning() { tablePage.getEditButton().click(); assertThat(tablePage.getDialogBox()).hasText("You asked to edit record number 000001."); } diff --git a/src/test/java/com/webforj/samples/views/table/TableEditDataViewIT.java b/src/test/java/com/webforj/samples/views/table/TableEditDataViewIT.java index 903c71d07..ce6ccc13c 100644 --- a/src/test/java/com/webforj/samples/views/table/TableEditDataViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableEditDataViewIT.java @@ -19,7 +19,7 @@ public void setupTableEditData() { } @Test - public void testEditButton() { + public void testEditButtonTableEditData() { tablePage.getEditButton().click(); tablePage.getInput().clear(); diff --git a/src/test/java/com/webforj/samples/views/table/TableFilteringViewIT.java b/src/test/java/com/webforj/samples/views/table/TableFilteringViewIT.java index b9681f347..6ffbcef53 100644 --- a/src/test/java/com/webforj/samples/views/table/TableFilteringViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableFilteringViewIT.java @@ -19,7 +19,7 @@ public void setupTableFiltering() { } @Test - public void testValidTitle() { + public void testValidTitleFiltering() { tableFiltering.getTitleFilterInput().fill("Abbey Road"); assertThat(tableFiltering.getTableRows()).hasCount(1); @@ -28,7 +28,7 @@ public void testValidTitle() { } @Test - public void testPartialTitle() { + public void testPartialTitleFiltering() { tableFiltering.getTitleFilterInput().fill("Road"); assertThat(tableFiltering.getTableRows()).hasCount(1); @@ -36,7 +36,7 @@ public void testPartialTitle() { } @Test - public void testCaseSensitiveTitle() { + public void testCaseSensitiveTitleFiltering() { tableFiltering.getTitleFilterInput().fill("abbey ROAD"); assertThat(tableFiltering.getTableRows()).hasCount(1); @@ -44,21 +44,21 @@ public void testCaseSensitiveTitle() { } @Test - public void testNonexistentTitle() { + public void testNonexistentTitleFiltering() { tableFiltering.getTitleFilterInput().fill("Nonexistent Album"); assertThat(tableFiltering.getTableRows()).hasCount(0); } @Test - public void testSpecialCharactersInSearch() { + public void testSpecialCharactersInSearchFiltering() { tableFiltering.getTitleFilterInput().fill("#$!?"); assertThat(tableFiltering.getTableRows()).hasCount(0); } @Test - public void testSearchFiltersByTitleOnly() { + public void testSearchFiltersCaseSensitively() { tableFiltering.getTitleFilterInput().fill("ABBA"); assertThat(tableFiltering.getTableRows()).hasCount(0); diff --git a/src/test/java/com/webforj/samples/views/table/TableMultipleSelectionViewIT.java b/src/test/java/com/webforj/samples/views/table/TableMultipleSelectionViewIT.java index 400d1b65b..3bcbdbe12 100644 --- a/src/test/java/com/webforj/samples/views/table/TableMultipleSelectionViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableMultipleSelectionViewIT.java @@ -23,7 +23,7 @@ public void setupTableMultiSelection() { } @Test - public void testSelectAllButton() { + public void testSelectAllRecords() { List expectedRecords = Arrays.asList( "Mississippi Blues", "Gold - Greatest Hits", @@ -55,7 +55,7 @@ public void testSelectAllButton() { } @Test - public void testMultipleSelection() { + public void testMultipleSelectionRecords() { multipleSelection.getRowCheckboxes().nth(1).click(); assertThat(multipleSelection.getRecordItems()).containsText("Mississippi Blues"); diff --git a/src/test/java/com/webforj/samples/views/table/TableRichContentViewIT.java b/src/test/java/com/webforj/samples/views/table/TableRichContentViewIT.java index a5a254974..3468ade1e 100644 --- a/src/test/java/com/webforj/samples/views/table/TableRichContentViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableRichContentViewIT.java @@ -23,7 +23,7 @@ public void setupTableRichContent() { } @Test - public void testMasterCheckbox() { + public void testMasterCheckboxRichContent() { tableRichContent.getMasterCheckBox().click(); @@ -40,14 +40,14 @@ public void testMasterCheckbox() { } @Test - public void testIndividualCheckbox() { + public void testIndividualCheckboxRichContent() { tableRichContent.getMasterCheckBox().click(); assertThat(tableRichContent.getFirstCheckbox()).isChecked(); } @Test - void testTableImages() { + void testTableImagesRichContent() { Locator images = tableRichContent.getImages(); int count = images.count(); diff --git a/src/test/java/com/webforj/samples/views/table/TableSingleSelectionViewIT.java b/src/test/java/com/webforj/samples/views/table/TableSingleSelectionViewIT.java index b8e18f56d..7eaae13f6 100644 --- a/src/test/java/com/webforj/samples/views/table/TableSingleSelectionViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/TableSingleSelectionViewIT.java @@ -19,7 +19,7 @@ public void setupTableSingleSelection() { } @Test - public void testSingleItemSelectionAndConfirmationDialog() { + public void testSingleSelectionRecords() { tableSingleSelectionPage.getFirstArtist().click(); assertThat(tableSingleSelectionPage.getDialogMessage("Mississippi Blues", "John Hurt & The Ramblers")) diff --git a/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java b/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java index c5a602bf5..b0446986b 100644 --- a/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java +++ b/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java @@ -21,7 +21,7 @@ public void setupFeedbackTextArea() { } @Test - public void testToastMessage() { + public void testToastMessageTextArea() { feedbackTextAreaPage.getFeedbackTextarea().fill("Hello World"); feedbackTextAreaPage.getSubmitButton().click(); @@ -30,7 +30,7 @@ public void testToastMessage() { } @Test - public void testCharacterLimit() { + public void testCharacterLimitTextArea() { // "Hello World" repeated 20 times is 220 characters, but we still expect the // result to be 200 characters. for (int i = 0; i < 20; i++) { @@ -42,7 +42,7 @@ public void testCharacterLimit() { } @Test - public void testEmptyFeedback() { + public void testEmptyFeedbackTextArea() { feedbackTextAreaPage.getSubmitButton().click(); assertThat(feedbackTextAreaPage.getDonationToaster()).not().isVisible(); From 0fac2f7ec4e3c80f42cf43be3aaed01dd3b11125 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Tue, 14 Oct 2025 15:22:23 -0600 Subject: [PATCH 05/16] fix:cross-browser running enabled in jenkins --- .../com/webforj/samples/config/RunConfig.java | 20 ++++++++++++++++++- .../com/webforj/samples/views/BaseTest.java | 4 +++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index 5ca83504e..d54410339 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -5,6 +5,7 @@ public class RunConfig { private static final boolean DEFAULT_HEADLESS = true; private static final int DEFAULT_TIMEOUT = 30000; private static final int DEFAULT_SLOW_MO = 0; + private static final boolean IS_CI = "true".equalsIgnoreCase(System.getenv("CI")); static { // Parse webforj.e2e if provided @@ -84,10 +85,27 @@ private static int getConfigInt(String key, int defaultValue) { } public static String getBrowser() { - return getConfig("browser", DEFAULT_BROWSER); + String browser = System.getProperty("browser"); + if (browser == null) { + browser = System.getProperty("playwright.browser"); + } + if (browser == null) { + browser = System.getenv("BROWSER"); + } + if (browser == null) { + browser = DEFAULT_BROWSER; + } + return browser.toLowerCase(); + } + + public static boolean isCI() { + return IS_CI; } public static boolean isHeadless() { + if (IS_CI) { + return true; + } return getConfigBoolean("headless", DEFAULT_HEADLESS); } diff --git a/src/test/java/com/webforj/samples/views/BaseTest.java b/src/test/java/com/webforj/samples/views/BaseTest.java index e45ee2262..fbd891009 100644 --- a/src/test/java/com/webforj/samples/views/BaseTest.java +++ b/src/test/java/com/webforj/samples/views/BaseTest.java @@ -67,9 +67,11 @@ public void setupTest(TestInfo testInfo) { public void teardownTest(TestInfo testInfo) { if (context != null) { String testName = testInfo.getDisplayName().replaceAll("[^a-zA-Z0-9]", ""); + String browserName = RunConfig.getBrowser(); + String tracePath = "./target/playwright-traces/" + browserName + "-" + testName + ".zip"; context.tracing().stop(new Tracing.StopOptions() - .setPath(Paths.get("./target/playwright-traces/" + testName + ".zip"))); + .setPath(Paths.get(tracePath))); context.close(); } From e712b0143fb6ca91e92832cb22909876cdf738b2 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Tue, 14 Oct 2025 16:08:06 -0600 Subject: [PATCH 06/16] fix:cross-browser running enabled in jenkins --- src/test/java/com/webforj/samples/config/RunConfig.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index d54410339..9092668fc 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -1,7 +1,8 @@ package com.webforj.samples.config; public class RunConfig { - private static final String DEFAULT_BROWSER = "chromium"; + private static final String DEFAULT_BROWSER_LOCAL = "chromium"; + private static final String DEFAULT_BROWSER_CI = "chromium,firefox,webkit"; private static final boolean DEFAULT_HEADLESS = true; private static final int DEFAULT_TIMEOUT = 30000; private static final int DEFAULT_SLOW_MO = 0; @@ -93,7 +94,8 @@ public static String getBrowser() { browser = System.getenv("BROWSER"); } if (browser == null) { - browser = DEFAULT_BROWSER; + // Use all browsers in CI, just chromium locally + browser = IS_CI ? DEFAULT_BROWSER_CI : DEFAULT_BROWSER_LOCAL; } return browser.toLowerCase(); } From 9ad9d164db878e3089217388128126bceacae3a9 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 15 Oct 2025 10:46:39 -0600 Subject: [PATCH 07/16] refactor: update test names for better readability --- .../java/com/webforj/samples/config/RunConfig.java | 2 +- .../samples/views/alert/ClosableAlertViewIT.java | 2 +- .../webforj/samples/views/appnav/AppNavViewIT.java | 4 ++-- .../webforj/samples/views/button/ButtonViewIT.java | 4 ++-- .../views/checkbox/CheckboxHorizontalTextViewIT.java | 2 +- .../samples/views/dialog/DialogAutoFocusViewIT.java | 2 +- .../samples/views/dialog/DialogSectionsViewIT.java | 2 +- .../samples/views/drawer/DrawerTaskViewIT.java | 2 +- .../views/element/ElementInputDemoViewIT.java | 2 +- .../views/element/ElementInputEventViewIT.java | 2 +- .../views/fields/datefield/DateFieldViewIT.java | 2 +- .../fields/passwordfield/PasswordFieldViewIT.java | 2 +- .../views/fields/textfield/TextFieldViewIT.java | 10 +++++----- .../flexlayout/container/FlexPositioningViewIT.java | 12 ++++++------ .../views/flexlayout/item/FlexOrderViewIT.java | 2 +- .../samples/views/login/LoginCustomFieldsViewIT.java | 8 ++++---- .../views/navigator/NavigatorBasicViewIT.java | 2 +- .../views/navigator/NavigatorPagesViewIT.java | 2 +- .../confirm/ConfirmDialogOptionsViewIT.java | 2 +- .../optiondialog/input/InputDialogBasicViewIT.java | 4 ++-- .../optiondialog/input/InputDialogTypeViewIT.java | 2 +- .../views/radiobutton/RadioButtonGroupViewIT.java | 2 +- .../views/radiobutton/RadioButtonSwitchViewIT.java | 2 +- .../views/radiobutton/RadioButtonTextViewIT.java | 2 +- .../views/spinner/SpinnerDirectionDemoViewIT.java | 2 +- .../views/spinner/SpinnerSpeedDemoViewIT.java | 2 +- .../webforj/samples/views/table/DataTableViewIT.java | 6 +++--- .../samples/views/textarea/TextAreaViewIT.java | 6 +++--- .../com/webforj/samples/views/toast/ToastViewIT.java | 2 +- 29 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index 9092668fc..aad45ee9a 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -11,7 +11,7 @@ public class RunConfig { static { // Parse webforj.e2e if provided String e2eProps = System.getProperty("webforj.e2e"); - if (e2eProps != null && !e2eProps.isEmpty()) { + if (e2eProps != null && !e2eProps.isEmpty()) { parseE2EProps(e2eProps); } } diff --git a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java index 997deed09..e7e2167ff 100644 --- a/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java +++ b/src/test/java/com/webforj/samples/views/alert/ClosableAlertViewIT.java @@ -17,7 +17,7 @@ public void setupClosableAlert() { } @Test - public void testAlertClosableAtStart() { + public void testAlertClosesWhenCloseButtonIsClicked() { Locator alert = page.getByRole(AriaRole.ALERT); assertThat(alert).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java b/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java index 0a7ac1af9..1ef6f42d3 100644 --- a/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java +++ b/src/test/java/com/webforj/samples/views/appnav/AppNavViewIT.java @@ -19,7 +19,7 @@ public void setupAppNav() { } @Test - public void testDrawerOpened() { + public void testDrawerOpensAndCloses() { appNavPage.getTablerIcon().click(); assertThat(appNavPage.getAppLayout()).not().hasAttribute("drawer-opened", "12"); @@ -38,7 +38,7 @@ public void testPrimaryTabSelected() { } @Test - public void testExternalLinks() { + public void testExternalLinksAreCorrect() { appNavPage.getAboutDropdown().click(); assertThat(appNavPage.getSidebarWebforJ().locator("a")).hasAttribute("href", "https://webforj.com/"); diff --git a/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java b/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java index 819c4c4f3..3655a2d3a 100644 --- a/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java +++ b/src/test/java/com/webforj/samples/views/button/ButtonViewIT.java @@ -19,14 +19,14 @@ public void setupButtonDemo() { } @Test - public void testWelcomeMessageDisplayedAtStart() { + public void testWelcomeMessageIsDisplayedWhenSubmitButtonIsClicked() { button.getSubmitButton().click(); assertThat(button.getWelcomeDialog()).isVisible(); } @Test - public void testInputsCleared() { + public void testInputsAreClearedWhenClearButtonIsClicked() { assertThat(button.getFirstName()).hasValue("Jason"); assertThat(button.getLastName()).hasValue("Turner"); assertThat(button.getEmail()).hasValue("turner.jason@email.com"); diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java index 8ddefd530..967bb91e7 100644 --- a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java @@ -16,7 +16,7 @@ public void setupCheckboxHorizontalText() { } @Test - public void testDailyCheckboxChecked() { + public void testDailyCheckboxIsCheckedAndUncheckedWhenClicked() { Locator checkbox = page.getByText("Daily").nth(1); assertThat(checkbox).isChecked(); diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java index d834f8283..1a729e45e 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java @@ -18,7 +18,7 @@ public void setupDialogAutoFocus() { } @Test - public void testAutoFocus() { + public void testAutoFocusIsEnabled() { Locator textField = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("This Box is Auto Focused")); diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java index 93f8f96b8..5da53872b 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java @@ -16,7 +16,7 @@ public void setupDialogSections() { } @Test - public void testSectionsVisible() { + public void testSectionsAreVisible() { Locator header = page.getByText("Header"); Locator content = page.getByText("Content"); Locator footer = page.getByText("Footer"); diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java index 53ab1a57e..5d0dcd5dd 100644 --- a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java @@ -17,7 +17,7 @@ public void setupDrawerTask() { navigateToRoute("drawertask"); } @Test - public void testTaskAdded() { + public void testTaskAddedWhenAddTaskButtonIsClicked() { Locator drawer = page.locator("dwc-drawer"); assertThat(drawer).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java b/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java index f3ec65f44..0a2af4b93 100644 --- a/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java +++ b/src/test/java/com/webforj/samples/views/element/ElementInputDemoViewIT.java @@ -19,7 +19,7 @@ public void setupInputDemo() { } @Test - public void testInputValue() { + public void testInputValueIsSetWhenInputFieldIsFilled() { elementInputDemoPage.getInputField().fill("Hello World"); assertThat(elementInputDemoPage.getInputField()).hasValue("Hello World"); } diff --git a/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java b/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java index 851585b40..ace2fbdf7 100644 --- a/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java +++ b/src/test/java/com/webforj/samples/views/element/ElementInputEventViewIT.java @@ -19,7 +19,7 @@ public void setupInputEvent() { } @Test - public void testDialogMessage() { + public void testDialogMessageIsShownWhenInputFieldIsFilled() { elementInputEventPage.getInputField().fill("Hello World"); elementInputEventPage.getInputField().press("Enter"); diff --git a/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java index 45d206aad..215aaa8b5 100644 --- a/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/datefield/DateFieldViewIT.java @@ -20,7 +20,7 @@ public void setupDateField() { navigateToRoute(DateFieldPage.getRoute()); dateFieldPage = new DateFieldPage(page); } - + @Test public void testValidDatesEntered() { String departureDate = today.plusDays(3).format(DateTimeFormatter.ISO_LOCAL_DATE); diff --git a/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java index 65120dea9..60a34b1dd 100644 --- a/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/passwordfield/PasswordFieldViewIT.java @@ -19,7 +19,7 @@ public void setupPasswordField() { } @Test - public void testVisibilityToggled() { + public void testVisibilityToggledWhenEyeOffIconIsClicked() { passwordFieldPage.getPasswordField().fill("Password123!"); assertThat(passwordFieldPage.getPasswordField()).hasAttribute("type", "password"); diff --git a/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java index 145946141..cc73388ff 100644 --- a/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java +++ b/src/test/java/com/webforj/samples/views/fields/textfield/TextFieldViewIT.java @@ -21,7 +21,7 @@ public void setupTextField() { } @Test - public void testAllInputFieldsEnteredAtStart() { + public void testAllInputFieldsAreEnteredWhenAllInputFieldsAreFilled() { textFieldPage.getUsernameInput().clear(); textFieldPage.getUsernameInput().fill("Jane Doe"); textFieldPage.getEmailInput().clear(); @@ -41,7 +41,7 @@ public void testAllInputFieldsEnteredAtStart() { } @Test - public void testValidEmailsEnteredAtStart() { + public void testValidEmailsAreEnteredWhenValidEmailsAreFilled() { List validEmails = List.of( "user@example.com", "user@subdomain.example.com", @@ -60,7 +60,7 @@ public void testValidEmailsEnteredAtStart() { } @Test - public void testInvalidEmailsIgnoredAtStart() { + public void testInvalidEmailsAreIgnoredWhenInvalidEmailsAreFilled() { List invalidEmails = List.of( "user@", "@example.com", @@ -85,7 +85,7 @@ public void testInvalidEmailsIgnoredAtStart() { } @Test - public void testValidURLsEnteredAtStart() { + public void testValidURLsAreEnteredWhenValidURLsAreFilled() { List validURLs = List.of( "http://example.com", "https://example.com", @@ -110,7 +110,7 @@ public void testValidURLsEnteredAtStart() { } @Test - public void testInvalidURLsIgnoredAtStart() { + public void testInvalidURLsAreIgnoredWhenInvalidURLsAreFilled() { List invalidURLs = List.of( "example.com", "http//example.com", diff --git a/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java b/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java index 66538519a..5ef09498d 100644 --- a/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java +++ b/src/test/java/com/webforj/samples/views/flexlayout/container/FlexPositioningViewIT.java @@ -22,7 +22,7 @@ public void setupFlexPositioning() { } @Test - public void testFlexStartPositionsBoxesAtStartAtStart() { + public void testFlexStartPositionsBoxesAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Flex-start").nth(0).click(); @@ -31,7 +31,7 @@ public void testFlexStartPositionsBoxesAtStartAtStart() { } @Test - public void testFlexEndPositionsBoxesAtStartAtStart() { + public void testFlexEndPositionsBoxesAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Flex-end").nth(0).click(); @@ -40,7 +40,7 @@ public void testFlexEndPositionsBoxesAtStartAtStart() { } @Test - public void testCenterPositionsBoxesAtStartAtStart() { + public void testCenterPositionsBoxesAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Center").nth(0).click(); @@ -49,7 +49,7 @@ public void testCenterPositionsBoxesAtStartAtStart() { } @Test - public void testSpaceBetweenDistributesBoxesWithEdgesAtStartAtStart() { + public void testSpaceBetweenDistributesBoxesWithEdgesAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Space-between").nth(0).click(); @@ -58,7 +58,7 @@ public void testSpaceBetweenDistributesBoxesWithEdgesAtStartAtStart() { } @Test - public void testSpaceAroundDistributesBoxesWithEqualSpaceAroundAtStartAtStart() { + public void testSpaceAroundDistributesBoxesWithEqualSpaceAroundAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Space-around").nth(0).click(); @@ -67,7 +67,7 @@ public void testSpaceAroundDistributesBoxesWithEqualSpaceAroundAtStartAtStart() } @Test - public void testSpaceEvenlyDistributesBoxesWithEqualSpaceBetweenAndAroundAtStartAtStart() { + public void testSpaceEvenlyDistributesBoxesWithEqualSpaceBetweenAndAroundAtStart() { flexPositioningPage.getFlexPositioningDropdown().click(); flexPositioningPage.getListBox("Space-evenly").nth(0).click(); diff --git a/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java b/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java index f568e42d2..41122bb27 100644 --- a/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java +++ b/src/test/java/com/webforj/samples/views/flexlayout/item/FlexOrderViewIT.java @@ -20,7 +20,7 @@ public void setupFlexOrder() { } @Test - public void testZeroOrderPositionsBoxAtStartAtStart() { + public void testZeroOrderPositionsBoxAtStart() { flexOrderPage.getSetOrderButton().click(); assertThat(flexOrderPage.buttonValue(0)).isVisible(); } diff --git a/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java b/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java index 78ea1edcc..c10f40956 100644 --- a/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java +++ b/src/test/java/com/webforj/samples/views/login/LoginCustomFieldsViewIT.java @@ -19,7 +19,7 @@ public void setupLoginCustomFields() { } @Test - public void testSuccessfulLoginWithValidCredentialsAtStart() { + public void testSuccessfulLoginWithValidCredentials() { login.getCustomderID().fill("Tesla"); login.getUsername().fill("admin"); login.getPassword().fill("admin"); @@ -32,7 +32,7 @@ public void testSuccessfulLoginWithValidCredentialsAtStart() { } @Test - public void testInvalidCustomerIDIgnoredAtStart() { + public void testInvalidCustomerIDIgnored() { login.getCustomderID().fill("Toyota"); login.getUsername().fill("admin"); @@ -43,7 +43,7 @@ public void testInvalidCustomerIDIgnoredAtStart() { } @Test - public void testValidCustomerIDAndBlankInputsIgnoredAtStart() { + public void testValidCustomerIDAndBlankInputsIgnored() { login.getCustomderID().fill("Tesla"); login.getUsername().fill(" "); login.getPassword().fill(" "); @@ -53,7 +53,7 @@ public void testValidCustomerIDAndBlankInputsIgnoredAtStart() { } @Test - public void testValidCustomerIDAndInvalidInputsIgnoredAtStart() { + public void testValidCustomerIDAndInvalidInputsIgnored() { login.getCustomderID().fill("Tesla"); login.getUsername().fill("user1"); login.getPassword().fill("wrongpass"); diff --git a/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java b/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java index e82255d42..b4c85f6d8 100644 --- a/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java +++ b/src/test/java/com/webforj/samples/views/navigator/NavigatorBasicViewIT.java @@ -19,7 +19,7 @@ public void setupNavigatorBasics() { } @Test - public void testRangeConsistencyAtStart() { + public void testRangeConsistency() { navigator.clickNext(); assertThat(navigator.navigatorValue(1)).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java b/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java index 0bb6496ad..a78e3d514 100644 --- a/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java +++ b/src/test/java/com/webforj/samples/views/navigator/NavigatorPagesViewIT.java @@ -19,7 +19,7 @@ public void setupNavigatorPage() { } @Test - public void testVerifyEllipsisAtStart() { + public void testVerifyEllipsis() { navigator.navigatorValue(4).click(); assertThat(navigator.showingRange(31,40)).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java index 959e1dd35..f83c5b408 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java @@ -18,7 +18,7 @@ public void setupConfirmDialogOptionsView() { } @Test - public void testDialogConfirmationAtStart() { + public void testDialogConfirmationIsShownWhenDiscardButtonIsClicked() { Locator dialog = page.getByRole(AriaRole.DIALOG); assertThat(dialog).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java index 5c99aacc5..b96b56668 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java @@ -18,7 +18,7 @@ public void setupInputDialogBasicView() { } @Test - public void testInvalidInputDialog() { + public void testInvalidInputDialogIsShownWhenDeleteButtonIsClicked() { Locator dialog = page.getByRole(AriaRole.DIALOG); assertThat(dialog).isVisible(); @@ -37,7 +37,7 @@ public void testInvalidInputDialog() { } @Test - public void testValidInputDialog() { + public void testValidInputDialogIsShownWhenDeleteButtonIsClicked() { Locator dialog = page.getByRole(AriaRole.DIALOG); assertThat(dialog).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java index 5b992dfda..b730488a1 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java @@ -18,7 +18,7 @@ public void setupInputDialogTypeView() { } @Test - public void testInputDialogType() { + public void testInputDialogTypeIsShownWhenContinueButtonIsClicked() { Locator dialog = page.getByRole(AriaRole.DIALOG); assertThat(dialog).isVisible(); diff --git a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java index 58d83fd4f..16458e4ad 100644 --- a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java +++ b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonGroupViewIT.java @@ -19,7 +19,7 @@ public void setupRadioButtonGroup() { } @Test - public void testStronglyDisagreeRadioButtonGroup() { + public void testStronglyDisagreeRadioButtonGroupIsChecked() { radioButtonGroupPage.getStronglyDisagreeRB().check(); assertThat(radioButtonGroupPage.getStronglyDisagreeRB()).isChecked(); diff --git a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java index 4a7fd47bc..3f1cd1e88 100644 --- a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java +++ b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonSwitchViewIT.java @@ -19,7 +19,7 @@ public void setupRadioButtonSwitch() { } @Test - public void testSwitchRadioButtonStyle() { + public void testSwitchRadioButtonStyleIsChecked() { radioButton.getSwitchRadio().check(); assertThat(radioButton.getSwitchRadio()).isChecked(); diff --git a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java index 5e6284eee..e33dc94f0 100644 --- a/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java +++ b/src/test/java/com/webforj/samples/views/radiobutton/RadioButtonTextViewIT.java @@ -19,7 +19,7 @@ public void setupRadioButtonText() { } @Test - public void testLeftAlignedButtonStyle() { + public void testLeftAlignedButtonStyleIsChecked() { radioButton.getLeftAlignedInput().check(); assertThat(radioButton.getLeftAlignedInput()).hasAttribute("aria-checked", "true"); } diff --git a/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java b/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java index 26b55c76e..fa31f08c5 100644 --- a/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java +++ b/src/test/java/com/webforj/samples/views/spinner/SpinnerDirectionDemoViewIT.java @@ -19,7 +19,7 @@ public void setupSpinnerDirection() { } @Test - public void testSpinnerDirection() { + public void testSpinnerDirectionIsClockwise() { spinnerPage.getClockwiseButton().click(); assertThat(spinnerPage.getSpinner()).hasAttribute("clockwise", ""); diff --git a/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java b/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java index 85ca56951..9d04190cb 100644 --- a/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java +++ b/src/test/java/com/webforj/samples/views/spinner/SpinnerSpeedDemoViewIT.java @@ -19,7 +19,7 @@ public void setupSpinnerSpeeds() { } @Test - public void testPauseAndResumeSpinner() { + public void testSpinnerSpeedIsSet() { spinnerPage.getPauseButton().click(); assertThat(spinnerPage.getSpinner()).hasAttribute("paused", ""); diff --git a/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java b/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java index 319a7e4b4..b9ed00414 100644 --- a/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java +++ b/src/test/java/com/webforj/samples/views/table/DataTableViewIT.java @@ -39,7 +39,7 @@ public void testEntriesPerPageAndPaginator() { } @Test - public void testSearchButtonFilter() { + public void testSearchButtonFilterOnTable() { dataTable.searchAthlete(ATHLETE_NAME); assertThat(dataTable.getTableRows()).hasCount(3); } @@ -54,7 +54,7 @@ public void testFilteringNonLatinAlphabetCharacters() { } @Test - public void testPaginatorDisplaysCorrectlyPaginator() { + public void testPaginatorDisplaysCorrectly() { dataTable.getPaginatorLastPage().click(); assertThat(dataTable.goToSpecificPage(862)).isVisible(); @@ -72,7 +72,7 @@ public void testPaginatorDisplaysCorrectlyPaginator() { } @Test - public void testPaginatorNavigatesCorrectlyPaginator() { + public void testPaginatorNavigatesCorrectly() { dataTable.getPaginatorNextPage().click(); assertThat(dataTable.getPaginationText("Showing 11 to 20 of 8618")).isVisible(); } diff --git a/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java b/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java index b0446986b..91a3e415a 100644 --- a/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java +++ b/src/test/java/com/webforj/samples/views/textarea/TextAreaViewIT.java @@ -21,7 +21,7 @@ public void setupFeedbackTextArea() { } @Test - public void testToastMessageTextArea() { + public void testToastMessageIsDisplayedWhenSubmitButtonIsClicked() { feedbackTextAreaPage.getFeedbackTextarea().fill("Hello World"); feedbackTextAreaPage.getSubmitButton().click(); @@ -30,7 +30,7 @@ public void testToastMessageTextArea() { } @Test - public void testCharacterLimitTextArea() { + public void testCharacterLimitIsEnforced() { // "Hello World" repeated 20 times is 220 characters, but we still expect the // result to be 200 characters. for (int i = 0; i < 20; i++) { @@ -42,7 +42,7 @@ public void testCharacterLimitTextArea() { } @Test - public void testEmptyFeedbackTextArea() { + public void testEmptyFeedbackTextAreaIsNotSubmitted() { feedbackTextAreaPage.getSubmitButton().click(); assertThat(feedbackTextAreaPage.getDonationToaster()).not().isVisible(); diff --git a/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java b/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java index 8088da6ec..3f2cdffbe 100644 --- a/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java +++ b/src/test/java/com/webforj/samples/views/toast/ToastViewIT.java @@ -18,7 +18,7 @@ public void setupToastView() { } @Test - public void testToastStopButton() { + public void testToastStopButtonClosesToast() { Locator toast = page.getByText("System update failed. Restoring to the previous state."); assertThat(toast).isVisible(); From 9be207ee3615b8dd03738f2469eb2c5f535ee496 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Thu, 16 Oct 2025 08:10:17 -0600 Subject: [PATCH 08/16] remove: css animation disabling --- src/test/java/com/webforj/samples/views/BaseTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/com/webforj/samples/views/BaseTest.java b/src/test/java/com/webforj/samples/views/BaseTest.java index fbd891009..f1cdc03fe 100644 --- a/src/test/java/com/webforj/samples/views/BaseTest.java +++ b/src/test/java/com/webforj/samples/views/BaseTest.java @@ -92,7 +92,5 @@ protected void navigateToRoute(String route) { // Wait for the page to be fully loaded page.waitForLoadState(LoadState.DOMCONTENTLOADED); - page.addStyleTag(new Page.AddStyleTagOptions() - .setContent("* { transition: none !important; animation: none !important; }")); } } From dfd2ce0205975cb41721a12064f3b5061b579c63 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 22 Oct 2025 15:15:18 -0600 Subject: [PATCH 09/16] test: new tests added --- .../pages/alert/AlertExpansesPage.java | 35 +++++++++++++++ .../samples/pages/alert/AlertThemesPage.java | 24 ++++++++++ .../applayout/applayout/AppLayoutPage.java | 25 +++++++++++ .../AppLayoutDrawerUtilityPage.java | 25 +++++++++++ .../fullnavbar/AppLayoutFullNavbarPage.java | 25 +++++++++++ .../AppLayoutMultipleHeadersPage.java | 24 ++++++++++ .../samples/pages/appnav/AppNavPage.java | 14 +++--- .../pages/button/ButtonDisablePage.java | 30 +++++++++++++ .../samples/pages/button/ButtonEventPage.java | 30 +++++++++++++ .../pages/button/ButtonThemesPage.java | 30 +++++++++++++ .../checkbox/CheckboxHorizontalTextPage.java | 23 ++++++++++ .../pages/composite/CompositePage.java | 36 +++++++++++++++ .../pages/dialog/DialogAutoFocusPage.java | 24 ++++++++++ .../pages/dialog/DialogSectionsPage.java | 35 +++++++++++++++ .../pages/drawer/DrawerAutoFocusPage.java | 5 +++ .../samples/pages/drawer/DrawerTaskPage.java | 5 +++ .../views/alert/AlertExpansesViewIT.java | 29 ++++++++++++ .../views/alert/AlertThemesViewIT.java | 26 +++++++++++ .../applayout/applayout/AppLayoutViewIT.java | 26 +++++++++++ .../AppLayoutDrawerUtilityViewIT.java | 26 +++++++++++ .../fullnavbar/AppLayoutFullNavbarViewIT.java | 27 ++++++++++++ .../AppLayoutMultipleHeadersViewIT.java | 26 +++++++++++ .../views/button/ButtonDisableViewIT.java | 33 ++++++++++++++ .../views/button/ButtonEventViewIT.java | 27 ++++++++++++ .../views/button/ButtonThemesViewIT.java | 5 +++ .../CheckboxHorizontalTextViewIT.java | 18 ++++---- .../views/composite/CompositeViewIT.java | 44 +++++++++++++++++++ .../views/dialog/DialogAutoFocusViewIT.java | 16 +++---- .../views/dialog/DialogSectionsViewIT.java | 18 ++++---- .../views/drawer/DrawerAutoFocusViewIT.java | 5 +++ 30 files changed, 679 insertions(+), 37 deletions(-) create mode 100644 src/test/java/com/webforj/samples/pages/alert/AlertExpansesPage.java create mode 100644 src/test/java/com/webforj/samples/pages/alert/AlertThemesPage.java create mode 100644 src/test/java/com/webforj/samples/pages/applayout/applayout/AppLayoutPage.java create mode 100644 src/test/java/com/webforj/samples/pages/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityPage.java create mode 100644 src/test/java/com/webforj/samples/pages/applayout/fullnavbar/AppLayoutFullNavbarPage.java create mode 100644 src/test/java/com/webforj/samples/pages/applayout/multipleheaders/AppLayoutMultipleHeadersPage.java create mode 100644 src/test/java/com/webforj/samples/pages/button/ButtonDisablePage.java create mode 100644 src/test/java/com/webforj/samples/pages/button/ButtonEventPage.java create mode 100644 src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java create mode 100644 src/test/java/com/webforj/samples/pages/checkbox/CheckboxHorizontalTextPage.java create mode 100644 src/test/java/com/webforj/samples/pages/composite/CompositePage.java create mode 100644 src/test/java/com/webforj/samples/pages/dialog/DialogAutoFocusPage.java create mode 100644 src/test/java/com/webforj/samples/pages/dialog/DialogSectionsPage.java create mode 100644 src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java create mode 100644 src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java create mode 100644 src/test/java/com/webforj/samples/views/alert/AlertExpansesViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/alert/AlertThemesViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/applayout/applayout/AppLayoutViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/applayout/fullnavbar/AppLayoutFullNavbarViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/applayout/multipleheaders/AppLayoutMultipleHeadersViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/button/ButtonDisableViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/button/ButtonEventViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/composite/CompositeViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java diff --git a/src/test/java/com/webforj/samples/pages/alert/AlertExpansesPage.java b/src/test/java/com/webforj/samples/pages/alert/AlertExpansesPage.java new file mode 100644 index 000000000..8c1f42fe7 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/alert/AlertExpansesPage.java @@ -0,0 +1,35 @@ +package com.webforj.samples.pages.alert; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class AlertExpansesPage { + + private static final String ROUTE = "alertexpanses"; + + private final Locator alertXSmall; + private final Locator alertMedium; + private final Locator alertXLarge; + + public AlertExpansesPage(Page page) { + this.alertXSmall = page.locator("dwc-alert").filter(new Locator.FilterOptions().setHasText("This alert uses the XSMALL expanse.")); + this.alertMedium = page.locator("dwc-alert").filter(new Locator.FilterOptions().setHasText("This alert uses the MEDIUM expanse.")); + this.alertXLarge = page.locator("dwc-alert").filter(new Locator.FilterOptions().setHasText("This alert uses the XLARGE expanse.")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getAlertXSmall() { + return alertXSmall; + } + + public Locator getAlertMedium() { + return alertMedium; + } + + public Locator getAlertXLarge() { + return alertXLarge; + } +} diff --git a/src/test/java/com/webforj/samples/pages/alert/AlertThemesPage.java b/src/test/java/com/webforj/samples/pages/alert/AlertThemesPage.java new file mode 100644 index 000000000..613e532b7 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/alert/AlertThemesPage.java @@ -0,0 +1,24 @@ +package com.webforj.samples.pages.alert; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class AlertThemesPage { + + private static final String ROUTE = "alertthemes"; + + private final Locator successAlert; + + public AlertThemesPage(Page page) { + this.successAlert = page.locator("dwc-alert").filter(new Locator.FilterOptions().setHasText("This is an alert with the SUCCESS theme!")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getSuccessAlert() { + return successAlert; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/applayout/applayout/AppLayoutPage.java b/src/test/java/com/webforj/samples/pages/applayout/applayout/AppLayoutPage.java new file mode 100644 index 000000000..70f746e8a --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/applayout/applayout/AppLayoutPage.java @@ -0,0 +1,25 @@ +package com.webforj.samples.pages.applayout.applayout; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class AppLayoutPage { + + private static final String ROUTE = "applayout"; + + private final Locator dashboardLink; + + public AppLayoutPage(Page page) { + this.dashboardLink = page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Dashboard")); + + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDashboardLink() { + return dashboardLink; + } +} diff --git a/src/test/java/com/webforj/samples/pages/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityPage.java b/src/test/java/com/webforj/samples/pages/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityPage.java new file mode 100644 index 000000000..c9917d3da --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityPage.java @@ -0,0 +1,25 @@ +package com.webforj.samples.pages.applayout.applayoutdrawerutility; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class AppLayoutDrawerUtilityPage { + + private static final String ROUTE = "applayoutdrawerutility"; + + private final Locator headerText; + + public AppLayoutDrawerUtilityPage(Page page) { + + this.headerText = page.getByText("Joe Smith"); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getHeaderText() { + return headerText; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/applayout/fullnavbar/AppLayoutFullNavbarPage.java b/src/test/java/com/webforj/samples/pages/applayout/fullnavbar/AppLayoutFullNavbarPage.java new file mode 100644 index 000000000..2390295cc --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/applayout/fullnavbar/AppLayoutFullNavbarPage.java @@ -0,0 +1,25 @@ +package com.webforj.samples.pages.applayout.fullnavbar; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class AppLayoutFullNavbarPage { + + + private static final String ROUTE = "applayoutfullnavbar"; + + private final Locator header; + + public AppLayoutFullNavbarPage(Page page) { + this.header = page.locator("header"); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getHeaderText() { + return header; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/applayout/multipleheaders/AppLayoutMultipleHeadersPage.java b/src/test/java/com/webforj/samples/pages/applayout/multipleheaders/AppLayoutMultipleHeadersPage.java new file mode 100644 index 000000000..820a859de --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/applayout/multipleheaders/AppLayoutMultipleHeadersPage.java @@ -0,0 +1,24 @@ +package com.webforj.samples.pages.applayout.multipleheaders; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class AppLayoutMultipleHeadersPage { + + private static final String ROUTE = "applayoutmultipleheaders"; + + private final Locator dwcToolbar; + + public AppLayoutMultipleHeadersPage(Page page) { + this.dwcToolbar = page.locator("dwc-toolbar"); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDwcToolbar() { + return dwcToolbar; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/appnav/AppNavPage.java b/src/test/java/com/webforj/samples/pages/appnav/AppNavPage.java index 37d5a19f2..45f839b74 100644 --- a/src/test/java/com/webforj/samples/pages/appnav/AppNavPage.java +++ b/src/test/java/com/webforj/samples/pages/appnav/AppNavPage.java @@ -24,16 +24,16 @@ public AppNavPage(Page page) { this.tablerIcon = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("menu 2")); this.appLayout = page.locator("dwc-app-layout"); - this.paragraph = page.getByText("Content for", new Page.GetByTextOptions().setExact(false)); + this.paragraph = page.getByText("Content for", new Page.GetByTextOptions()); - this.inboxDropdown = page.getByText("Inbox", new Page.GetByTextOptions().setExact(false)); + this.inboxDropdown = page.getByText("Inbox", new Page.GetByTextOptions()); - this.sidebarPrimaryTab = page.getByText("Primary", new Page.GetByTextOptions().setExact(false)); + this.sidebarPrimaryTab = page.getByText("Primary", new Page.GetByTextOptions()); - this.aboutDropdown = page.getByText("About", new Page.GetByTextOptions().setExact(false)); - this.sidebarWebforJ = page.getByText("webforJ", new Page.GetByTextOptions().setExact(false)); - this.sidebarGitHub = page.getByText("GitHub", new Page.GetByTextOptions().setExact(false)); - this.sidebarDocumentation = page.getByText("Documentation", new Page.GetByTextOptions().setExact(false)); + this.aboutDropdown = page.getByText("About", new Page.GetByTextOptions()); + this.sidebarWebforJ = page.getByText("webforJ", new Page.GetByTextOptions()); + this.sidebarGitHub = page.getByText("GitHub", new Page.GetByTextOptions()); + this.sidebarDocumentation = page.getByText("Documentation", new Page.GetByTextOptions()); } public static String getRoute() { diff --git a/src/test/java/com/webforj/samples/pages/button/ButtonDisablePage.java b/src/test/java/com/webforj/samples/pages/button/ButtonDisablePage.java new file mode 100644 index 000000000..a283cdf88 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/button/ButtonDisablePage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.button; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class ButtonDisablePage { + + private static final String ROUTE = "buttondisable"; + + private final Locator submitButton; + private final Locator emailInput; + + public ButtonDisablePage(Page page) { + this.submitButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Submit")); + this.emailInput = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Enter an email")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getSubmitButton() { + return submitButton; + } + + public Locator getEmailInput() { + return emailInput; + } +} diff --git a/src/test/java/com/webforj/samples/pages/button/ButtonEventPage.java b/src/test/java/com/webforj/samples/pages/button/ButtonEventPage.java new file mode 100644 index 000000000..a5e5fb938 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/button/ButtonEventPage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.button; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class ButtonEventPage { + + private static final String ROUTE = "buttonevent"; + + private final Locator button; + private final Page page; + + public ButtonEventPage(Page page) { + this.button = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Click Me!")); + this.page = page; + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getButton() { + return button; + } + + public Locator getCounterText(String text) { + return page.getByText("Current Counter: " + text); + } +} \ No newline at end of file diff --git a/src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java b/src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java new file mode 100644 index 000000000..9f0e14d15 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.button; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class ButtonThemesPage { + + private static final String ROUTE = "buttonthemes"; + + private final Locator solidButton; + private final Locator outlinedButton; + + public ButtonThemesPage(Page page) { + this.solidButton = page.locator("dwc-button").filter(new Locator.FilterOptions().setHasText("Danger")); + this.outlinedButton = page.locator("dwc-button").filter(new Locator.FilterOptions().setHasText("Outlined Button")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getSolidButton() { + return solidButton; + } + + public Locator getOutlinedButton() { + return outlinedButton; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/checkbox/CheckboxHorizontalTextPage.java b/src/test/java/com/webforj/samples/pages/checkbox/CheckboxHorizontalTextPage.java new file mode 100644 index 000000000..f3e2c576e --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/checkbox/CheckboxHorizontalTextPage.java @@ -0,0 +1,23 @@ +package com.webforj.samples.pages.checkbox; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class CheckboxHorizontalTextPage { + + private static final String ROUTE = "checkboxhorizontaltext"; + + private final Locator dailyCheckbox; + + public CheckboxHorizontalTextPage(Page page) { + this.dailyCheckbox = page.getByText("Daily").nth(1); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDailyCheckbox() { + return dailyCheckbox; + } +} \ No newline at end of file diff --git a/src/test/java/com/webforj/samples/pages/composite/CompositePage.java b/src/test/java/com/webforj/samples/pages/composite/CompositePage.java new file mode 100644 index 000000000..29565176d --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/composite/CompositePage.java @@ -0,0 +1,36 @@ +package com.webforj.samples.pages.composite; + +import com.microsoft.playwright.Page; +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.options.AriaRole; + + public class CompositePage { + + private static final String ROUTE = "composite/"; + + private final Locator toDoInput; + private final Locator firstTaskCheckbox; + private final Locator firstDeleteButton; + + public CompositePage(Page page) { + this.toDoInput = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Enter a new task and press Enter...")); + this.firstTaskCheckbox = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("Review documentation")); + this.firstDeleteButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Delete")).first(); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getToDoInput() { + return toDoInput; + } + + public Locator getFirstTaskCheckbox() { + return firstTaskCheckbox; + } + + public Locator getFirstDeleteButton() { + return firstDeleteButton; + } +} diff --git a/src/test/java/com/webforj/samples/pages/dialog/DialogAutoFocusPage.java b/src/test/java/com/webforj/samples/pages/dialog/DialogAutoFocusPage.java new file mode 100644 index 000000000..d2db522e0 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/dialog/DialogAutoFocusPage.java @@ -0,0 +1,24 @@ +package com.webforj.samples.pages.dialog; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class DialogAutoFocusPage { + + private static final String ROUTE = "dialogautofocus"; + + private final Locator textField; + + public DialogAutoFocusPage(Page page) { + this.textField = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("This Box is Auto Focused")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getTextField() { + return textField; + } +} diff --git a/src/test/java/com/webforj/samples/pages/dialog/DialogSectionsPage.java b/src/test/java/com/webforj/samples/pages/dialog/DialogSectionsPage.java new file mode 100644 index 000000000..61c1d7bd5 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/dialog/DialogSectionsPage.java @@ -0,0 +1,35 @@ +package com.webforj.samples.pages.dialog; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; + +public class DialogSectionsPage { + + private static final String ROUTE = "dialogsections"; + + private final Locator header; + private final Locator content; + private final Locator footer; + + public DialogSectionsPage(Page page) { + this.header = page.getByText("Header"); + this.content = page.getByText("Content"); + this.footer = page.getByText("Footer"); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getHeader() { + return header; + } + + public Locator getContent() { + return content; + } + + public Locator getFooter() { + return footer; + } +} diff --git a/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java b/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java new file mode 100644 index 000000000..a378a6cc9 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java @@ -0,0 +1,5 @@ +package com.webforj.samples.pages.drawer; + +public class DrawerAutoFocusPage { + +} diff --git a/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java b/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java new file mode 100644 index 000000000..16e59e5fd --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java @@ -0,0 +1,5 @@ +package com.webforj.samples.pages.drawer; + +public class DrawerTaskPage { + +} diff --git a/src/test/java/com/webforj/samples/views/alert/AlertExpansesViewIT.java b/src/test/java/com/webforj/samples/views/alert/AlertExpansesViewIT.java new file mode 100644 index 000000000..2daf7ffce --- /dev/null +++ b/src/test/java/com/webforj/samples/views/alert/AlertExpansesViewIT.java @@ -0,0 +1,29 @@ +package com.webforj.samples.views.alert; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.alert.AlertExpansesPage; + +import com.webforj.samples.views.BaseTest; + +public class AlertExpansesViewIT extends BaseTest { + + private AlertExpansesPage alertExpansesPage; + + @BeforeEach + public void setupAlertExpanses() { + navigateToRoute(AlertExpansesPage.getRoute()); + alertExpansesPage = new AlertExpansesPage(page); + } + + @Test + public void testAlertExpanses() { + + assertThat(alertExpansesPage.getAlertXSmall()).hasAttribute("expanse", "xs"); + assertThat(alertExpansesPage.getAlertMedium()).hasAttribute("expanse", "m"); + assertThat(alertExpansesPage.getAlertXLarge()).hasAttribute("expanse", "xl"); + } +} diff --git a/src/test/java/com/webforj/samples/views/alert/AlertThemesViewIT.java b/src/test/java/com/webforj/samples/views/alert/AlertThemesViewIT.java new file mode 100644 index 000000000..b00ca7001 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/alert/AlertThemesViewIT.java @@ -0,0 +1,26 @@ +package com.webforj.samples.views.alert; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import com.webforj.samples.pages.alert.AlertThemesPage; +import com.webforj.samples.views.BaseTest; + +public class AlertThemesViewIT extends BaseTest { + + private AlertThemesPage alertThemesPage; + + @BeforeEach + public void setupAlertThemes() { + navigateToRoute(AlertThemesPage.getRoute()); + alertThemesPage = new AlertThemesPage(page); + } + + @Test + public void testAlertThemes() { + assertThat(alertThemesPage.getSuccessAlert()).hasAttribute("theme", "success"); + } + +} diff --git a/src/test/java/com/webforj/samples/views/applayout/applayout/AppLayoutViewIT.java b/src/test/java/com/webforj/samples/views/applayout/applayout/AppLayoutViewIT.java new file mode 100644 index 000000000..a1adfe634 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/applayout/applayout/AppLayoutViewIT.java @@ -0,0 +1,26 @@ +package com.webforj.samples.views.applayout.applayout; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.applayout.applayout.AppLayoutPage; +import com.webforj.samples.views.BaseTest; + +public class AppLayoutViewIT extends BaseTest{ + + private AppLayoutPage appLayoutPage; + + @BeforeEach + public void setupAppLayout() { + navigateToRoute(AppLayoutPage.getRoute()); + appLayoutPage = new AppLayoutPage(page); + } + + @Test + public void testDashboardLink() { + appLayoutPage.getDashboardLink().click(); + assertThat(page.getByText("Content for Dashboard")).isVisible(); + } +} diff --git a/src/test/java/com/webforj/samples/views/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityViewIT.java b/src/test/java/com/webforj/samples/views/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityViewIT.java new file mode 100644 index 000000000..4a27fdfd8 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/applayout/applayoutdrawerutility/AppLayoutDrawerUtilityViewIT.java @@ -0,0 +1,26 @@ +package com.webforj.samples.views.applayout.applayoutdrawerutility; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.applayout.applayoutdrawerutility.AppLayoutDrawerUtilityPage; +import com.webforj.samples.views.BaseTest; + +public class AppLayoutDrawerUtilityViewIT extends BaseTest{ + + private AppLayoutDrawerUtilityPage appLayoutDrawerUtilityPage; + + @BeforeEach + public void setupAppLayoutDrawerUtility() { + navigateToRoute(AppLayoutDrawerUtilityPage.getRoute()); + appLayoutDrawerUtilityPage = new AppLayoutDrawerUtilityPage(page); + } + + @Test + public void testHeaderText() { + assertThat(appLayoutDrawerUtilityPage.getHeaderText()).isVisible(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/applayout/fullnavbar/AppLayoutFullNavbarViewIT.java b/src/test/java/com/webforj/samples/views/applayout/fullnavbar/AppLayoutFullNavbarViewIT.java new file mode 100644 index 000000000..f8a0ff544 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/applayout/fullnavbar/AppLayoutFullNavbarViewIT.java @@ -0,0 +1,27 @@ +package com.webforj.samples.views.applayout.fullnavbar; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.applayout.fullnavbar.AppLayoutFullNavbarPage; +import com.webforj.samples.views.BaseTest; + +public class AppLayoutFullNavbarViewIT extends BaseTest { + + private AppLayoutFullNavbarPage appLayoutFullNavbarPage; + + @BeforeEach + public void setupAppLayoutFullNavbar() { + navigateToRoute(AppLayoutFullNavbarPage.getRoute()); + appLayoutFullNavbarPage = new AppLayoutFullNavbarPage(page); + } + + @Test + public void testHeaderOffScreen() { + assertThat(appLayoutFullNavbarPage.getHeaderText()).isEmpty(); + + } + +} diff --git a/src/test/java/com/webforj/samples/views/applayout/multipleheaders/AppLayoutMultipleHeadersViewIT.java b/src/test/java/com/webforj/samples/views/applayout/multipleheaders/AppLayoutMultipleHeadersViewIT.java new file mode 100644 index 000000000..3a59c80e4 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/applayout/multipleheaders/AppLayoutMultipleHeadersViewIT.java @@ -0,0 +1,26 @@ +package com.webforj.samples.views.applayout.multipleheaders; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.applayout.multipleheaders.AppLayoutMultipleHeadersPage; +import com.webforj.samples.views.BaseTest; + +public class AppLayoutMultipleHeadersViewIT extends BaseTest{ + + private AppLayoutMultipleHeadersPage appLayoutMultipleHeadersPage; + + @BeforeEach + public void setupAppLayoutMultipleHeaders() { + navigateToRoute(AppLayoutMultipleHeadersPage.getRoute()); + appLayoutMultipleHeadersPage = new AppLayoutMultipleHeadersPage(page); + } + + @Test + public void testDwcToolbar() { + assertThat(appLayoutMultipleHeadersPage.getDwcToolbar()).hasCount(2); + } + +} diff --git a/src/test/java/com/webforj/samples/views/button/ButtonDisableViewIT.java b/src/test/java/com/webforj/samples/views/button/ButtonDisableViewIT.java new file mode 100644 index 000000000..44bbcd1d0 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/button/ButtonDisableViewIT.java @@ -0,0 +1,33 @@ +package com.webforj.samples.views.button; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.button.ButtonDisablePage; +import com.webforj.samples.views.BaseTest; + +public class ButtonDisableViewIT extends BaseTest { + + private ButtonDisablePage buttonDisable; + + @BeforeEach + public void setupButtonDisableDemo() { + navigateToRoute(ButtonDisablePage.getRoute()); + buttonDisable = new ButtonDisablePage(page); + } + + @Test + public void testSubmitButtonIsDisabledWhenEmailInputIsNotValid() { + buttonDisable.getEmailInput().fill("invalid-email"); + assertThat(buttonDisable.getSubmitButton()).isDisabled(); + } + + @Test + public void testSubmitButtonIsEnabledWhenEmailInputIsValid() { + buttonDisable.getEmailInput().fill("valid-email@example.com"); + assertThat(buttonDisable.getSubmitButton()).isEnabled(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/button/ButtonEventViewIT.java b/src/test/java/com/webforj/samples/views/button/ButtonEventViewIT.java new file mode 100644 index 000000000..4118880de --- /dev/null +++ b/src/test/java/com/webforj/samples/views/button/ButtonEventViewIT.java @@ -0,0 +1,27 @@ +package com.webforj.samples.views.button; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.button.ButtonEventPage; +import com.webforj.samples.views.BaseTest; + +public class ButtonEventViewIT extends BaseTest { + + private ButtonEventPage buttonEventPage; + + @BeforeEach + public void setupButtonEventDemo() { + navigateToRoute(ButtonEventPage.getRoute()); + buttonEventPage = new ButtonEventPage(page); + } + + @Test + public void testButtonEventIsTriggeredWhenButtonIsClicked() { + buttonEventPage.getButton().click(); + assertThat(buttonEventPage.getCounterText("1")).isVisible(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java b/src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java new file mode 100644 index 000000000..fae9f412b --- /dev/null +++ b/src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java @@ -0,0 +1,5 @@ +package com.webforj.samples.views.button; + +public class ButtonThemesViewIT { + +} diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java index 967bb91e7..c50ed255f 100644 --- a/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxHorizontalTextViewIT.java @@ -1,28 +1,26 @@ package com.webforj.samples.views.checkbox; import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import com.microsoft.playwright.Locator; +import com.webforj.samples.pages.checkbox.CheckboxHorizontalTextPage; import com.webforj.samples.views.BaseTest; public class CheckboxHorizontalTextViewIT extends BaseTest { + private CheckboxHorizontalTextPage checkboxHorizontalTextPage; + @BeforeEach public void setupCheckboxHorizontalText() { - navigateToRoute("checkboxhorizontaltext"); + navigateToRoute(CheckboxHorizontalTextPage.getRoute()); + checkboxHorizontalTextPage = new CheckboxHorizontalTextPage(page); } @Test public void testDailyCheckboxIsCheckedAndUncheckedWhenClicked() { - Locator checkbox = page.getByText("Daily").nth(1); + assertThat(checkboxHorizontalTextPage.getDailyCheckbox()).isChecked(); - assertThat(checkbox).isChecked(); - - checkbox.click(); - assertThat(checkbox).not().isChecked(); + checkboxHorizontalTextPage.getDailyCheckbox().click(); + assertThat(checkboxHorizontalTextPage.getDailyCheckbox()).not().isChecked(); } - } diff --git a/src/test/java/com/webforj/samples/views/composite/CompositeViewIT.java b/src/test/java/com/webforj/samples/views/composite/CompositeViewIT.java new file mode 100644 index 000000000..d1cb514f2 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/composite/CompositeViewIT.java @@ -0,0 +1,44 @@ +package com.webforj.samples.views.composite; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.pages.composite.CompositePage; +import com.webforj.samples.views.BaseTest; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +public class CompositeViewIT extends BaseTest { + + private CompositePage compositePage; + + @BeforeEach + public void setupComposite() { + navigateToRoute(CompositePage.getRoute()); + compositePage = new CompositePage(page); + } + + @Test + public void testAddItemWhenEnterKeyIsPressed() { + compositePage.getToDoInput().fill("New Task"); + compositePage.getToDoInput().press("Enter"); + Locator addedItem = page.getByText("New Task"); + assertThat(addedItem).isVisible(); + } + + @Test + public void testDeleteItemWhenDeleteButtonIsClicked() { + compositePage.getFirstDeleteButton().click(); + assertThat(compositePage.getFirstTaskCheckbox()).not().isVisible(); + } + + @Test + public void testBlankInputDoesNotAddItem() { + compositePage.getToDoInput().fill(" "); + compositePage.getToDoInput().press("Enter"); + Locator radioButtons = page.getByRole(AriaRole.RADIO); + assertThat(radioButtons.nth(3)).not().isVisible(); + } +} diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java index 1a729e45e..fad2f9a2d 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogAutoFocusViewIT.java @@ -1,28 +1,24 @@ package com.webforj.samples.views.dialog; import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.pages.dialog.DialogAutoFocusPage; import com.webforj.samples.views.BaseTest; public class DialogAutoFocusViewIT extends BaseTest { + private DialogAutoFocusPage dialogAutoFocusPage; + @BeforeEach public void setupDialogAutoFocus() { - navigateToRoute("dialogautofocus"); + navigateToRoute(DialogAutoFocusPage.getRoute()); + dialogAutoFocusPage = new DialogAutoFocusPage(page); } @Test public void testAutoFocusIsEnabled() { - Locator textField = page.getByRole(AriaRole.TEXTBOX, - new Page.GetByRoleOptions().setName("This Box is Auto Focused")); - - assertThat(textField).isFocused(); + assertThat(dialogAutoFocusPage.getTextField()).isFocused(); } } diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java index 5da53872b..d78d36ed1 100644 --- a/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/dialog/DialogSectionsViewIT.java @@ -4,25 +4,23 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import com.microsoft.playwright.Locator; +import com.webforj.samples.pages.dialog.DialogSectionsPage; import com.webforj.samples.views.BaseTest; public class DialogSectionsViewIT extends BaseTest { + private DialogSectionsPage dialogSectionsPage; + @BeforeEach public void setupDialogSections() { - navigateToRoute("dialogsections"); + navigateToRoute(DialogSectionsPage.getRoute()); + dialogSectionsPage = new DialogSectionsPage(page); } @Test public void testSectionsAreVisible() { - Locator header = page.getByText("Header"); - Locator content = page.getByText("Content"); - Locator footer = page.getByText("Footer"); - - assertThat(header).isVisible(); - assertThat(content).isVisible(); - assertThat(footer).isVisible(); + assertThat(dialogSectionsPage.getHeader()).isVisible(); + assertThat(dialogSectionsPage.getContent()).isVisible(); + assertThat(dialogSectionsPage.getFooter()).isVisible(); } } diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java new file mode 100644 index 000000000..2b49857c9 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java @@ -0,0 +1,5 @@ +package com.webforj.samples.views.drawer; + +public class DrawerAutoFocusViewIT { + +} From 4df90d8b93a94e375a63478c1d6e61502285fe5b Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Mon, 27 Oct 2025 09:43:49 -0600 Subject: [PATCH 10/16] Delete src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java --- .../webforj/samples/views/drawer/DrawerAutoFocusViewIT.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java deleted file mode 100644 index 2b49857c9..000000000 --- a/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.webforj.samples.views.drawer; - -public class DrawerAutoFocusViewIT { - -} From 7250bbb1d5b1e264639aaf463c45efb998b7b8ce Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Mon, 27 Oct 2025 09:44:07 -0600 Subject: [PATCH 11/16] Delete src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java --- .../com/webforj/samples/views/button/ButtonThemesViewIT.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java diff --git a/src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java b/src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java deleted file mode 100644 index fae9f412b..000000000 --- a/src/test/java/com/webforj/samples/views/button/ButtonThemesViewIT.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.webforj.samples.views.button; - -public class ButtonThemesViewIT { - -} From 14e6ace6c5663a846a2911bc4b01ccf02d7ccc2b Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Mon, 27 Oct 2025 15:50:48 -0600 Subject: [PATCH 12/16] fix: local host 8998 to 8080 --- src/test/java/com/webforj/samples/views/BaseTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/webforj/samples/views/BaseTest.java b/src/test/java/com/webforj/samples/views/BaseTest.java index f1cdc03fe..e82d86c6f 100644 --- a/src/test/java/com/webforj/samples/views/BaseTest.java +++ b/src/test/java/com/webforj/samples/views/BaseTest.java @@ -88,7 +88,7 @@ public void teardownBrowser() { } protected void navigateToRoute(String route) { - page.navigate("http://localhost:8998/" + route); + page.navigate("http://localhost:8080/" + route); // Wait for the page to be fully loaded page.waitForLoadState(LoadState.DOMCONTENTLOADED); From 1f8c29b469f034938c70c5046de1f07237aef1cf Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 29 Oct 2025 14:55:13 -0600 Subject: [PATCH 13/16] tests: Playwright Integration Tests Added --- .../com/webforj/samples/config/RunConfig.java | 2 +- .../pages/busyindicator/BusyDemoPage.java | 30 +++++++++++ .../pages/button/ButtonThemesPage.java | 30 ----------- .../pages/checkbox/CheckboxExpansePage.java | 25 +++++++++ .../checkbox/CheckboxIndeterminatePage.java | 37 +++++++++++++ .../ColumnsLayoutAlignmentPage.java | 30 +++++++++++ .../pages/dialog/DialogBackdropBlurPage.java | 30 +++++++++++ .../samples/pages/dialog/DialogClosePage.java | 36 +++++++++++++ .../pages/drawer/DrawerAutoFocusPage.java | 22 +++++++- .../samples/pages/drawer/DrawerTaskPage.java | 51 +++++++++++++++++- .../pages/element/ElementInputTextPage.java | 24 +++++++++ .../pages/fields/timefield/TimeFieldPage.java | 25 +++++++++ .../pages/flexlayout/FlexBasisPage.java | 37 +++++++++++++ .../pages/flexlayout/FlexLayoutPage.java | 31 +++++++++++ .../confirm/ConfirmDialogOptionsPage.java | 53 +++++++++++++++++++ .../input/InputDialogBasicPage.java | 53 +++++++++++++++++++ .../input/InputDialogTypePage.java | 47 ++++++++++++++++ .../pages/textarea/TextAreaStatesPage.java | 30 +++++++++++ .../views/busyindicator/BusyDemoViewIT.java | 32 +++++++++++ .../views/checkbox/CheckboxExpanseViewIT.java | 26 +++++++++ .../checkbox/CheckboxIndeterminateViewIT.java | 38 +++++++++++++ .../ColumnsLayoutAlignmentViewIT.java | 36 +++++++++++++ .../dialog/DialogBackdropBlurViewIT.java | 26 +++++++++ .../views/dialog/DialogCloseViewIT.java | 31 +++++++++++ .../views/drawer/DrawerAutoFocusViewIT.java | 24 +++++++++ .../views/drawer/DrawerTaskViewIT.java | 38 +++++-------- .../views/element/ElementInputTextViewIT.java | 22 ++++++++ .../fields/timefield/TimeFieldViewIT.java | 28 ++++++++++ .../views/flexlayout/FlexBasisViewIT.java | 31 +++++++++++ .../views/flexlayout/FlexLayoutViewIT.java | 29 ++++++++++ .../confirm/ConfirmDialogOptionsViewIT.java | 33 ++++-------- .../input/InputDialogBasicViewIT.java | 46 +++++----------- .../input/InputDialogTypeViewIT.java | 27 ++++------ .../views/textarea/TextAreaStatesViewIT.java | 30 +++++++++++ 34 files changed, 960 insertions(+), 130 deletions(-) create mode 100644 src/test/java/com/webforj/samples/pages/busyindicator/BusyDemoPage.java delete mode 100644 src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java create mode 100644 src/test/java/com/webforj/samples/pages/checkbox/CheckboxExpansePage.java create mode 100644 src/test/java/com/webforj/samples/pages/checkbox/CheckboxIndeterminatePage.java create mode 100644 src/test/java/com/webforj/samples/pages/columnslayout/ColumnsLayoutAlignmentPage.java create mode 100644 src/test/java/com/webforj/samples/pages/dialog/DialogBackdropBlurPage.java create mode 100644 src/test/java/com/webforj/samples/pages/dialog/DialogClosePage.java create mode 100644 src/test/java/com/webforj/samples/pages/element/ElementInputTextPage.java create mode 100644 src/test/java/com/webforj/samples/pages/fields/timefield/TimeFieldPage.java create mode 100644 src/test/java/com/webforj/samples/pages/flexlayout/FlexBasisPage.java create mode 100644 src/test/java/com/webforj/samples/pages/flexlayout/FlexLayoutPage.java create mode 100644 src/test/java/com/webforj/samples/pages/optiondialog/confirm/ConfirmDialogOptionsPage.java create mode 100644 src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogBasicPage.java create mode 100644 src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogTypePage.java create mode 100644 src/test/java/com/webforj/samples/pages/textarea/TextAreaStatesPage.java create mode 100644 src/test/java/com/webforj/samples/views/busyindicator/BusyDemoViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/checkbox/CheckboxExpanseViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/checkbox/CheckboxIndeterminateViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/columnslayout/ColumnsLayoutAlignmentViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/dialog/DialogBackdropBlurViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/dialog/DialogCloseViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/element/ElementInputTextViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/fields/timefield/TimeFieldViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/flexlayout/FlexBasisViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/flexlayout/FlexLayoutViewIT.java create mode 100644 src/test/java/com/webforj/samples/views/textarea/TextAreaStatesViewIT.java diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index aad45ee9a..9092668fc 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -11,7 +11,7 @@ public class RunConfig { static { // Parse webforj.e2e if provided String e2eProps = System.getProperty("webforj.e2e"); - if (e2eProps != null && !e2eProps.isEmpty()) { + if (e2eProps != null && !e2eProps.isEmpty()) { parseE2EProps(e2eProps); } } diff --git a/src/test/java/com/webforj/samples/pages/busyindicator/BusyDemoPage.java b/src/test/java/com/webforj/samples/pages/busyindicator/BusyDemoPage.java new file mode 100644 index 000000000..87ddcf8e9 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/busyindicator/BusyDemoPage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.busyindicator; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class BusyDemoPage { + + private static final String ROUTE = "busydemo"; + + private final Locator busyIndicator; + private final Locator nameInput; + + public BusyDemoPage(Page page) { + this.busyIndicator = page.getByRole(AriaRole.DIALOG); + this.nameInput = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Name")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getBusyIndicator() { + return busyIndicator; + } + + public Locator getNameInput() { + return nameInput; + } +} diff --git a/src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java b/src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java deleted file mode 100644 index 9f0e14d15..000000000 --- a/src/test/java/com/webforj/samples/pages/button/ButtonThemesPage.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.webforj.samples.pages.button; - -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; - -public class ButtonThemesPage { - - private static final String ROUTE = "buttonthemes"; - - private final Locator solidButton; - private final Locator outlinedButton; - - public ButtonThemesPage(Page page) { - this.solidButton = page.locator("dwc-button").filter(new Locator.FilterOptions().setHasText("Danger")); - this.outlinedButton = page.locator("dwc-button").filter(new Locator.FilterOptions().setHasText("Outlined Button")); - } - - public static String getRoute() { - return ROUTE; - } - - public Locator getSolidButton() { - return solidButton; - } - - public Locator getOutlinedButton() { - return outlinedButton; - } - -} diff --git a/src/test/java/com/webforj/samples/pages/checkbox/CheckboxExpansePage.java b/src/test/java/com/webforj/samples/pages/checkbox/CheckboxExpansePage.java new file mode 100644 index 000000000..619548395 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/checkbox/CheckboxExpansePage.java @@ -0,0 +1,25 @@ +package com.webforj.samples.pages.checkbox; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class CheckboxExpansePage { + + + private static final String ROUTE = "checkboxexpanse"; + + private final Locator checkboxXSmall; + + public CheckboxExpansePage(Page page) { + this.checkboxXSmall = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("XSMALL")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getCheckboxXSmall() { + return checkboxXSmall; + } +} diff --git a/src/test/java/com/webforj/samples/pages/checkbox/CheckboxIndeterminatePage.java b/src/test/java/com/webforj/samples/pages/checkbox/CheckboxIndeterminatePage.java new file mode 100644 index 000000000..36dea0bd5 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/checkbox/CheckboxIndeterminatePage.java @@ -0,0 +1,37 @@ +package com.webforj.samples.pages.checkbox; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class CheckboxIndeterminatePage { + + private static final String ROUTE = "checkboxindeterminate"; + + private final Locator parentCheckbox; + private final Locator child1Checkbox; + private final Locator child2Checkbox; + + public CheckboxIndeterminatePage(Page page) { + this.parentCheckbox = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("Parent")); + this.child1Checkbox = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("Child 1")); + this.child2Checkbox = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("Child 2")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getParentCheckbox() { + return parentCheckbox; + } + + public Locator getChild1Checkbox() { + return child1Checkbox; + } + + public Locator getChild2Checkbox() { + return child2Checkbox; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/columnslayout/ColumnsLayoutAlignmentPage.java b/src/test/java/com/webforj/samples/pages/columnslayout/ColumnsLayoutAlignmentPage.java new file mode 100644 index 000000000..5d489ffa7 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/columnslayout/ColumnsLayoutAlignmentPage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.columnslayout; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class ColumnsLayoutAlignmentPage { + + private static final String ROUTE = "columnslayoutalignment"; + + private final Locator firstName; + private final Locator lastName; + + public ColumnsLayoutAlignmentPage(Page page) { + this.firstName = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("First Name")); + this.lastName = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Last Name")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getFirstName() { + return firstName; + } + + public Locator getLastName() { + return lastName; + } +} diff --git a/src/test/java/com/webforj/samples/pages/dialog/DialogBackdropBlurPage.java b/src/test/java/com/webforj/samples/pages/dialog/DialogBackdropBlurPage.java new file mode 100644 index 000000000..f0f63b567 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/dialog/DialogBackdropBlurPage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.dialog; + +import com.microsoft.playwright.Page; +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.options.AriaRole; + +public class DialogBackdropBlurPage { + + private static final String ROUTE = "dialogbackdropblur"; + + private final Locator dwcDialog; + private final Locator backgroundBlur; + + public DialogBackdropBlurPage(Page page) { + this.dwcDialog = page.locator("dwc-dialog"); + this.backgroundBlur = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Toggle Background Blur")); +} + + public static String getRoute() { + return ROUTE; + } + + public Locator getDwcDialog() { + return dwcDialog; + } + + public Locator getBackgroundBlur() { + return backgroundBlur; + } +} diff --git a/src/test/java/com/webforj/samples/pages/dialog/DialogClosePage.java b/src/test/java/com/webforj/samples/pages/dialog/DialogClosePage.java new file mode 100644 index 000000000..f4ea79a60 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/dialog/DialogClosePage.java @@ -0,0 +1,36 @@ +package com.webforj.samples.pages.dialog; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class DialogClosePage { + + private static final String ROUTE = "dialogclose"; + + private final Locator dialog; + private final Locator closeDialogButton; + private final Locator showDialogButton; + + public DialogClosePage(Page page) { + this.dialog = page.getByRole(AriaRole.DIALOG); + this.closeDialogButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Close Dialog")); + this.showDialogButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Show Dialog")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDialog() { + return dialog; + } + + public Locator getCloseDialogButton() { + return closeDialogButton; + } + + public Locator getShowDialogButton() { + return showDialogButton; + } +} diff --git a/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java b/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java index a378a6cc9..53922e05e 100644 --- a/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java +++ b/src/test/java/com/webforj/samples/pages/drawer/DrawerAutoFocusPage.java @@ -1,5 +1,25 @@ package com.webforj.samples.pages.drawer; +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + public class DrawerAutoFocusPage { - + + private static final String ROUTE = "drawerautofocus"; + + private final Locator emailNotifications; + + public DrawerAutoFocusPage(Page page) { + this.emailNotifications = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("Email Notifications")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getEmailNotifications() { + return emailNotifications; + } + } diff --git a/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java b/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java index 16e59e5fd..4da492474 100644 --- a/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java +++ b/src/test/java/com/webforj/samples/pages/drawer/DrawerTaskPage.java @@ -1,5 +1,54 @@ package com.webforj.samples.pages.drawer; +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + public class DrawerTaskPage { - + + private static final String ROUTE = "drawertask"; + + private final Locator drawer; + private final Locator meetingCheckbox; + private final Locator clearButton; + private final Locator newTaskInput; + private final Locator addTaskButton; + private final Locator newTaskCheckbox; + + public DrawerTaskPage(Page page) { + this.drawer = page.locator("dwc-drawer"); + this.meetingCheckbox = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("Call John about the meeting")); + this.clearButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Clear Completed")); + this.newTaskInput = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("New Task")); + this.addTaskButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Add Task")); + this.newTaskCheckbox = page.getByRole(AriaRole.CHECKBOX, new Page.GetByRoleOptions().setName("New Task from IT")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDrawer() { + return drawer; + } + + public Locator getMeetingCheckbox() { + return meetingCheckbox; + } + + public Locator getClearButton() { + return clearButton; + } + + public Locator getNewTaskInput() { + return newTaskInput; + } + + public Locator getAddTaskButton() { + return addTaskButton; + } + + public Locator getNewTaskCheckbox() { + return newTaskCheckbox; + } } diff --git a/src/test/java/com/webforj/samples/pages/element/ElementInputTextPage.java b/src/test/java/com/webforj/samples/pages/element/ElementInputTextPage.java new file mode 100644 index 000000000..32a911fc5 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/element/ElementInputTextPage.java @@ -0,0 +1,24 @@ +package com.webforj.samples.pages.element; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + + public class ElementInputTextPage { + + private static final String ROUTE = "elementinputtext"; + + private final Locator inputField; + + public ElementInputTextPage(Page page) { + this.inputField = page.getByRole(AriaRole.TEXTBOX); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getInputField() { + return inputField; + } +} diff --git a/src/test/java/com/webforj/samples/pages/fields/timefield/TimeFieldPage.java b/src/test/java/com/webforj/samples/pages/fields/timefield/TimeFieldPage.java new file mode 100644 index 000000000..e630251ab --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/fields/timefield/TimeFieldPage.java @@ -0,0 +1,25 @@ +package com.webforj.samples.pages.fields.timefield; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class TimeFieldPage { + + private static final String ROUTE = "timefield"; + + private final Locator reminder; + + public TimeFieldPage(Page page) { + this.reminder = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Set Reminder:").setExact(true)); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getReminder() { + return reminder; + } + +} diff --git a/src/test/java/com/webforj/samples/pages/flexlayout/FlexBasisPage.java b/src/test/java/com/webforj/samples/pages/flexlayout/FlexBasisPage.java new file mode 100644 index 000000000..4c5bb28d3 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/flexlayout/FlexBasisPage.java @@ -0,0 +1,37 @@ +package com.webforj.samples.pages.flexlayout; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class FlexBasisPage { + + private static final String ROUTE = "flexbasis"; + + private final Locator setBasisButton; + private final Locator numberField; + private final Locator box1; + + public FlexBasisPage(Page page) { + this.setBasisButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Set basis")); + this.numberField = page.getByRole(AriaRole.SPINBUTTON, new Page.GetByRoleOptions().setName("Basis •")); + this.box1 = page.locator("dwc-button").filter(new Locator.FilterOptions().setHas(page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Box 1")))); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getSetBasisButton() { + return setBasisButton; + } + + public Locator getNumberField() { + return numberField; + } + + public Locator getBox1() { + return box1; + } + +} \ No newline at end of file diff --git a/src/test/java/com/webforj/samples/pages/flexlayout/FlexLayoutPage.java b/src/test/java/com/webforj/samples/pages/flexlayout/FlexLayoutPage.java new file mode 100644 index 000000000..337dfea98 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/flexlayout/FlexLayoutPage.java @@ -0,0 +1,31 @@ +package com.webforj.samples.pages.flexlayout; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class FlexLayoutPage { + + private static final String ROUTE = "flexlayout"; + + private final Locator cityField; + private final Locator zipField; + + public FlexLayoutPage(Page page) { + + this.cityField = page.locator("dwc-field").filter(new Locator.FilterOptions().setHas(page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("City")))); + this.zipField = page.locator("dwc-numberfield").filter(new Locator.FilterOptions().setHas(page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Zip")))); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getCityField() { + return cityField; + } + + public Locator getZipField() { + return zipField; + } +} diff --git a/src/test/java/com/webforj/samples/pages/optiondialog/confirm/ConfirmDialogOptionsPage.java b/src/test/java/com/webforj/samples/pages/optiondialog/confirm/ConfirmDialogOptionsPage.java new file mode 100644 index 000000000..e843fead8 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/optiondialog/confirm/ConfirmDialogOptionsPage.java @@ -0,0 +1,53 @@ +package com.webforj.samples.pages.optiondialog.confirm; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class ConfirmDialogOptionsPage { + private static final String ROUTE = "confirmdialogoptions"; + + private final Locator dialog; + private final Locator discardButton; + private final Locator saveButton; + private final Locator gotItButton; + private final Locator discardedDialog; + private final Locator savedDialog; + + public ConfirmDialogOptionsPage(Page page) { + this.dialog = page.getByRole(AriaRole.DIALOG); + this.discardButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Discard")); + this.saveButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Save")); + this.gotItButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Got it")); + this.discardedDialog = page.getByText("Changes discarded"); + this.savedDialog = page.getByText("Changes saved"); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDialog() { + return dialog; + } + + public Locator getDiscardButton() { + return discardButton; + } + + public Locator getSaveButton() { + return saveButton; + } + + public Locator getGotItButton() { + return gotItButton; + } + + public Locator getDiscardedDialog() { + return discardedDialog; + } + + public Locator getSavedDialog() { + return savedDialog; + } +} diff --git a/src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogBasicPage.java b/src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogBasicPage.java new file mode 100644 index 000000000..f6699b713 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogBasicPage.java @@ -0,0 +1,53 @@ +package com.webforj.samples.pages.optiondialog.input; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class InputDialogBasicPage { + private static final String ROUTE = "inputdialogbasic"; + + private final Locator dialog; + private final Locator inputField; + private final Locator deleteButton; + private final Locator errorDialog; + private final Locator okButton; + private final Locator successDialog; + + public InputDialogBasicPage(Page page) { + this.dialog = page.getByRole(AriaRole.DIALOG); + this.inputField = page.getByRole(AriaRole.TEXTBOX); + this.deleteButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Delete Repository")); + this.errorDialog = page.getByText("Failed to delete the repository. Code entered is incorrect"); + this.okButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("OK")); + this.successDialog = page.getByText("Repository was deleted successfully"); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDialog() { + return dialog; + } + + public Locator getInputField() { + return inputField; + } + + public Locator getDeleteButton() { + return deleteButton; + } + + public Locator getErrorDialog() { + return errorDialog; + } + + public Locator getOKButton() { + return okButton; + } + + public Locator getSuccessDialog() { + return successDialog; + } +} diff --git a/src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogTypePage.java b/src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogTypePage.java new file mode 100644 index 000000000..45f6e4e91 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/optiondialog/input/InputDialogTypePage.java @@ -0,0 +1,47 @@ +package com.webforj.samples.pages.optiondialog.input; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class InputDialogTypePage { + private static final String ROUTE = "inputdialogtype"; + + private final Locator dialog; + private final Locator inputField; + private final Locator continueButton; + private final Locator accessGrantedDialog; + private final Locator gotItButton; + + public InputDialogTypePage(Page page) { + this.dialog = page.getByRole(AriaRole.DIALOG); + this.inputField = page.getByRole(AriaRole.TEXTBOX); + this.continueButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Continue")); + this.accessGrantedDialog = page.getByText("Access granted"); + this.gotItButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Got it")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getDialog() { + return dialog; + } + + public Locator getInputField() { + return inputField; + } + + public Locator getContinueButton() { + return continueButton; + } + + public Locator getAccessGrantedDialog() { + return accessGrantedDialog; + } + + public Locator getGotItButton() { + return gotItButton; + } +} diff --git a/src/test/java/com/webforj/samples/pages/textarea/TextAreaStatesPage.java b/src/test/java/com/webforj/samples/pages/textarea/TextAreaStatesPage.java new file mode 100644 index 000000000..9e3e15061 --- /dev/null +++ b/src/test/java/com/webforj/samples/pages/textarea/TextAreaStatesPage.java @@ -0,0 +1,30 @@ +package com.webforj.samples.pages.textarea; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.options.AriaRole; + +public class TextAreaStatesPage { + + private static final String ROUTE = "textareastates"; + + private final Locator readonlyArea; + private final Locator disabledArea; + + public TextAreaStatesPage(Page page) { + this.readonlyArea = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Read-Only")); + this.disabledArea = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Disabled")); + } + + public static String getRoute() { + return ROUTE; + } + + public Locator getReadonlyArea() { + return readonlyArea; + } + + public Locator getDisabledArea() { + return disabledArea; + } +} diff --git a/src/test/java/com/webforj/samples/views/busyindicator/BusyDemoViewIT.java b/src/test/java/com/webforj/samples/views/busyindicator/BusyDemoViewIT.java new file mode 100644 index 000000000..aea373d44 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/busyindicator/BusyDemoViewIT.java @@ -0,0 +1,32 @@ +package com.webforj.samples.views.busyindicator; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.TimeoutError; +import com.webforj.samples.pages.busyindicator.BusyDemoPage; +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class BusyDemoViewIT extends BaseTest { + + private BusyDemoPage busyDemoPage; + + @BeforeEach + public void setupBusyDemo() { + navigateToRoute(BusyDemoPage.getRoute()); + busyDemoPage = new BusyDemoPage(page); + } + + @Test + public void testNameInputIsNotInteractableWhenBusyIndicatorIsVisible() { + assertThat(busyDemoPage.getBusyIndicator()).isVisible(); + + try { + busyDemoPage.getNameInput().click(new Locator.ClickOptions().setTimeout(1000)); + throw new AssertionError("Expected field to not be clickable, but it was"); + } + catch (TimeoutError e) { + } + } +} diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxExpanseViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxExpanseViewIT.java new file mode 100644 index 000000000..aa0fb7117 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxExpanseViewIT.java @@ -0,0 +1,26 @@ +package com.webforj.samples.views.checkbox; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import com.webforj.samples.pages.checkbox.CheckboxExpansePage; +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class CheckboxExpanseViewIT extends BaseTest { + + private CheckboxExpansePage checkboxExpansePage; + + @BeforeEach + public void setupCheckboxExpanse() { + navigateToRoute(CheckboxExpansePage.getRoute()); + checkboxExpansePage = new CheckboxExpansePage(page); + } + + @Test + public void testCheckboxXSmallExpanseStillCheckable() { + checkboxExpansePage.getCheckboxXSmall().check(); + assertThat(checkboxExpansePage.getCheckboxXSmall()).isChecked(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/checkbox/CheckboxIndeterminateViewIT.java b/src/test/java/com/webforj/samples/views/checkbox/CheckboxIndeterminateViewIT.java new file mode 100644 index 000000000..51f287ae5 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/checkbox/CheckboxIndeterminateViewIT.java @@ -0,0 +1,38 @@ +package com.webforj.samples.views.checkbox; + +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; +import com.webforj.samples.pages.checkbox.CheckboxIndeterminatePage; +import org.junit.jupiter.api.Test; +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +public class CheckboxIndeterminateViewIT extends BaseTest { + + private CheckboxIndeterminatePage checkboxIndeterminatePage; + + @BeforeEach + public void setupCheckboxIndeterminate() { + navigateToRoute(CheckboxIndeterminatePage.getRoute()); + checkboxIndeterminatePage = new CheckboxIndeterminatePage(page); + } + + @Test + public void testParentCheckboxIsIndeterminateWhenChild1AndChild2AreCheckedAndUnchecked() { + checkboxIndeterminatePage.getChild1Checkbox().check(); + checkboxIndeterminatePage.getChild2Checkbox().check(); + assertThat(checkboxIndeterminatePage.getParentCheckbox()).isChecked(); + + checkboxIndeterminatePage.getChild1Checkbox().uncheck(); + checkboxIndeterminatePage.getChild2Checkbox().uncheck(); + assertThat(checkboxIndeterminatePage.getParentCheckbox()).not().isChecked(); + + } + + @Test + public void testIfParentCheckedChildrenAreChecked() { + checkboxIndeterminatePage.getParentCheckbox().check(); + assertThat(checkboxIndeterminatePage.getChild1Checkbox()).isChecked(); + assertThat(checkboxIndeterminatePage.getChild2Checkbox()).isChecked(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/columnslayout/ColumnsLayoutAlignmentViewIT.java b/src/test/java/com/webforj/samples/views/columnslayout/ColumnsLayoutAlignmentViewIT.java new file mode 100644 index 000000000..b438ad26e --- /dev/null +++ b/src/test/java/com/webforj/samples/views/columnslayout/ColumnsLayoutAlignmentViewIT.java @@ -0,0 +1,36 @@ +package com.webforj.samples.views.columnslayout; + +import com.webforj.samples.views.BaseTest; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; +import com.webforj.samples.pages.columnslayout.ColumnsLayoutAlignmentPage; + +public class ColumnsLayoutAlignmentViewIT extends BaseTest { + + private ColumnsLayoutAlignmentPage columnsLayoutAlignmentPage; + + @BeforeEach + public void setupColumnsLayoutAlignment() { + navigateToRoute(ColumnsLayoutAlignmentPage.getRoute()); + columnsLayoutAlignmentPage = new ColumnsLayoutAlignmentPage(page); + } + + @Test + public void testColumnsLayoutAlignment() { + var firstNameBox = columnsLayoutAlignmentPage.getFirstName().boundingBox(); + var lastNameBox = columnsLayoutAlignmentPage.getLastName().boundingBox(); + + assertNotNull(firstNameBox, "First name input element was not found"); + assertNotNull(lastNameBox, "Last name input element was not found"); + + double yDifference = Math.abs(firstNameBox.y - lastNameBox.y); + assertTrue(yDifference <= 1.0, + String.format("Fields are not vertically aligned. Y-coordinate difference: %.2f pixels", yDifference)); + } +} diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogBackdropBlurViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogBackdropBlurViewIT.java new file mode 100644 index 000000000..a44fb2dbd --- /dev/null +++ b/src/test/java/com/webforj/samples/views/dialog/DialogBackdropBlurViewIT.java @@ -0,0 +1,26 @@ +package com.webforj.samples.views.dialog; + +import com.webforj.samples.pages.dialog.DialogBackdropBlurPage; +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +public class DialogBackdropBlurViewIT extends BaseTest { + + private DialogBackdropBlurPage dialogBackdropBlurPage; + + @BeforeEach + public void setupDialogBackdropBlur() { + navigateToRoute(DialogBackdropBlurPage.getRoute()); + dialogBackdropBlurPage = new DialogBackdropBlurPage(page); + } + + @Test + public void testDialogBackdropBlur() { + dialogBackdropBlurPage.getBackgroundBlur().click(); + assertThat(dialogBackdropBlurPage.getDwcDialog()).hasAttribute("blurred", ""); + } + +} diff --git a/src/test/java/com/webforj/samples/views/dialog/DialogCloseViewIT.java b/src/test/java/com/webforj/samples/views/dialog/DialogCloseViewIT.java new file mode 100644 index 000000000..73120ef1a --- /dev/null +++ b/src/test/java/com/webforj/samples/views/dialog/DialogCloseViewIT.java @@ -0,0 +1,31 @@ +package com.webforj.samples.views.dialog; + +import com.webforj.samples.views.BaseTest; +import com.webforj.samples.pages.dialog.DialogClosePage; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +public class DialogCloseViewIT extends BaseTest { + + private DialogClosePage dialogClosePage; + + @BeforeEach + public void setupDialogClose() { + navigateToRoute(DialogClosePage.getRoute()); + dialogClosePage = new DialogClosePage(page); + } + + @Test + public void testDialogClose() { + assertThat(dialogClosePage.getDialog()).isVisible(); + + dialogClosePage.getCloseDialogButton().click(); + assertThat(dialogClosePage.getDialog()).not().isVisible(); + + dialogClosePage.getShowDialogButton().click(); + assertThat(dialogClosePage.getDialog()).isVisible(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java new file mode 100644 index 000000000..14ee990cd --- /dev/null +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerAutoFocusViewIT.java @@ -0,0 +1,24 @@ +package com.webforj.samples.views.drawer; + +import com.webforj.samples.pages.drawer.DrawerAutoFocusPage; +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import com.webforj.samples.views.BaseTest; + +public class DrawerAutoFocusViewIT extends BaseTest { + + private DrawerAutoFocusPage drawerAutoFocusPage; + + @BeforeEach + public void setupDrawerAutoFocus() { + navigateToRoute(DrawerAutoFocusPage.getRoute()); + drawerAutoFocusPage = new DrawerAutoFocusPage(page); + } + + @Test + public void testDrawerAutoFocus() { + assertThat(drawerAutoFocusPage.getEmailNotifications()).isFocused(); + } + +} diff --git a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java index 5d0dcd5dd..485d94759 100644 --- a/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java +++ b/src/test/java/com/webforj/samples/views/drawer/DrawerTaskViewIT.java @@ -5,40 +5,28 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.pages.drawer.DrawerTaskPage; import com.webforj.samples.views.BaseTest; public class DrawerTaskViewIT extends BaseTest { + private DrawerTaskPage drawerTaskPage; + @BeforeEach public void setupDrawerTask() { - navigateToRoute("drawertask"); } + navigateToRoute(DrawerTaskPage.getRoute()); + drawerTaskPage = new DrawerTaskPage(page); + } @Test public void testTaskAddedWhenAddTaskButtonIsClicked() { - Locator drawer = page.locator("dwc-drawer"); - assertThat(drawer).isVisible(); - - Locator meetingCheckbox = page.getByRole(AriaRole.CHECKBOX, - new Page.GetByRoleOptions().setName("Call John about the meeting")); - meetingCheckbox.check(); - - Locator clearButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Clear Completed")); - clearButton.click(); - - assertThat(meetingCheckbox).not().isVisible(); - - Locator newTaskInput = page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("New Task")); - newTaskInput.fill("New Task from IT"); - - Locator addTaskButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Add Task")); - addTaskButton.click(); - - Locator newTaskCheckbox = page.getByRole(AriaRole.CHECKBOX, - new Page.GetByRoleOptions().setName("New Task from IT")); - assertThat(newTaskCheckbox).isVisible(); + assertThat(drawerTaskPage.getDrawer()).isVisible(); + drawerTaskPage.getMeetingCheckbox().check(); + drawerTaskPage.getClearButton().click(); + assertThat(drawerTaskPage.getMeetingCheckbox()).not().isVisible(); + drawerTaskPage.getNewTaskInput().fill("New Task from IT"); + drawerTaskPage.getAddTaskButton().click(); + assertThat(drawerTaskPage.getNewTaskCheckbox()).isVisible(); } } diff --git a/src/test/java/com/webforj/samples/views/element/ElementInputTextViewIT.java b/src/test/java/com/webforj/samples/views/element/ElementInputTextViewIT.java new file mode 100644 index 000000000..23424a27a --- /dev/null +++ b/src/test/java/com/webforj/samples/views/element/ElementInputTextViewIT.java @@ -0,0 +1,22 @@ +package com.webforj.samples.views.element; +import com.webforj.samples.pages.element.ElementInputTextPage; +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +public class ElementInputTextViewIT extends BaseTest { + + private ElementInputTextPage elementInputTextViewPage; + + @BeforeEach + public void setupElementInputTextView() { + navigateToRoute(ElementInputTextPage.getRoute()); + elementInputTextViewPage = new ElementInputTextPage(page); + } + + @Test + public void testInputFieldHasTextSet() { + assertThat(elementInputTextViewPage.getInputField()).hasValue("Here is the set text"); + } +} diff --git a/src/test/java/com/webforj/samples/views/fields/timefield/TimeFieldViewIT.java b/src/test/java/com/webforj/samples/views/fields/timefield/TimeFieldViewIT.java new file mode 100644 index 000000000..3f08d0ed4 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/fields/timefield/TimeFieldViewIT.java @@ -0,0 +1,28 @@ +package com.webforj.samples.views.fields.timefield; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import com.webforj.samples.pages.fields.timefield.TimeFieldPage; +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +public class TimeFieldViewIT extends BaseTest { + + private TimeFieldPage timeFieldPage; + + @BeforeEach + public void setupTimeField() { + navigateToRoute(TimeFieldPage.getRoute()); + timeFieldPage = new TimeFieldPage(page); + } + + @Test + public void testValidTimeEntered() { + timeFieldPage.getReminder().fill("10:00"); + assertThat(timeFieldPage.getReminder()).hasValue("10:00"); + } + + +} diff --git a/src/test/java/com/webforj/samples/views/flexlayout/FlexBasisViewIT.java b/src/test/java/com/webforj/samples/views/flexlayout/FlexBasisViewIT.java new file mode 100644 index 000000000..f7dd28752 --- /dev/null +++ b/src/test/java/com/webforj/samples/views/flexlayout/FlexBasisViewIT.java @@ -0,0 +1,31 @@ +package com.webforj.samples.views.flexlayout; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import java.util.regex.Pattern; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.flexlayout.FlexBasisPage; +import com.webforj.samples.views.BaseTest; + +public class FlexBasisViewIT extends BaseTest { + + private FlexBasisPage flexBasisPage; + + @BeforeEach + public void setupFlexBasis() { + navigateToRoute(FlexBasisPage.getRoute()); + flexBasisPage = new FlexBasisPage(page); + } + + @Test + public void testSetMinimumBasisValue() { + flexBasisPage.getBox1().click(); + flexBasisPage.getNumberField().fill("75"); + flexBasisPage.getSetBasisButton().click(); + assertThat(flexBasisPage.getBox1()).hasAttribute("style", Pattern.compile(".*flex-basis:\\s*75px.*")); + } + +} diff --git a/src/test/java/com/webforj/samples/views/flexlayout/FlexLayoutViewIT.java b/src/test/java/com/webforj/samples/views/flexlayout/FlexLayoutViewIT.java new file mode 100644 index 000000000..e947546ac --- /dev/null +++ b/src/test/java/com/webforj/samples/views/flexlayout/FlexLayoutViewIT.java @@ -0,0 +1,29 @@ +package com.webforj.samples.views.flexlayout; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import java.util.regex.Pattern; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.webforj.samples.pages.flexlayout.FlexLayoutPage; +import com.webforj.samples.views.BaseTest; + +public class FlexLayoutViewIT extends BaseTest { + + private FlexLayoutPage flexLayoutPage; + + @BeforeEach + public void setupFlexLayout() { + navigateToRoute(FlexLayoutPage.getRoute()); + flexLayoutPage = new FlexLayoutPage(page); + } + + @Test + public void testItemBasisIsSet() { + assertThat(flexLayoutPage.getCityField()).hasCSS("flex-basis", "40%"); + assertThat(flexLayoutPage.getZipField()).hasCSS("flex-basis", "40%"); + } + +} diff --git a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java index f83c5b408..3941ed61f 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/confirm/ConfirmDialogOptionsViewIT.java @@ -5,40 +5,27 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import com.microsoft.playwright.options.AriaRole; import com.webforj.samples.views.BaseTest; +import com.webforj.samples.pages.optiondialog.confirm.ConfirmDialogOptionsPage; public class ConfirmDialogOptionsViewIT extends BaseTest { + private ConfirmDialogOptionsPage confirmDialogOptionsPage; + @BeforeEach public void setupConfirmDialogOptionsView() { - navigateToRoute("confirmdialogoptions"); + navigateToRoute(ConfirmDialogOptionsPage.getRoute()); + confirmDialogOptionsPage = new ConfirmDialogOptionsPage(page); } @Test public void testDialogConfirmationIsShownWhenDiscardButtonIsClicked() { - Locator dialog = page.getByRole(AriaRole.DIALOG); - assertThat(dialog).isVisible(); - - Locator confirmButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Discard")); - confirmButton.click(); - Locator discardedDialog = page.getByText("Changes discarded"); - assertThat(discardedDialog).isVisible(); - - Locator gotItButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Got it")); - gotItButton.click(); - - assertThat(dialog).isVisible(); - - Locator saveButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Save")); - saveButton.click(); + confirmDialogOptionsPage.getDiscardButton().click(); + assertThat(confirmDialogOptionsPage.getDiscardedDialog()).isVisible(); - Locator savedDialog = page.getByText("Changes saved"); - assertThat(savedDialog).isVisible(); - gotItButton.click(); + confirmDialogOptionsPage.getGotItButton().click(); - assertThat(dialog).isVisible(); + confirmDialogOptionsPage.getSaveButton().click(); + assertThat(confirmDialogOptionsPage.getSavedDialog()).isVisible(); } } \ No newline at end of file diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java index b96b56668..34011545e 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogBasicViewIT.java @@ -5,52 +5,32 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.pages.optiondialog.input.InputDialogBasicPage; import com.webforj.samples.views.BaseTest; public class InputDialogBasicViewIT extends BaseTest { + private InputDialogBasicPage inputDialogBasicPage; + @BeforeEach public void setupInputDialogBasicView() { - navigateToRoute("inputdialogbasic"); + navigateToRoute(InputDialogBasicPage.getRoute()); + inputDialogBasicPage = new InputDialogBasicPage(page); } @Test public void testInvalidInputDialogIsShownWhenDeleteButtonIsClicked() { - Locator dialog = page.getByRole(AriaRole.DIALOG); - assertThat(dialog).isVisible(); - - Locator inputField = page.getByRole(AriaRole.TEXTBOX); - inputField.fill("wrongCode"); - - Locator deleteButton = page.getByRole(AriaRole.BUTTON, - new Page.GetByRoleOptions().setName("Delete Repository")); - deleteButton.click(); - - Locator errorDialog = page.getByText("Failed to delete the repository. Code entered is incorrect"); - assertThat(errorDialog).isVisible(); - - Locator okButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("OK")); - okButton.click(); + inputDialogBasicPage.getInputField().fill("wrongCode"); + inputDialogBasicPage.getDeleteButton().click(); + assertThat(inputDialogBasicPage.getErrorDialog()).isVisible(); + inputDialogBasicPage.getOKButton().click(); } @Test public void testValidInputDialogIsShownWhenDeleteButtonIsClicked() { - Locator dialog = page.getByRole(AriaRole.DIALOG); - assertThat(dialog).isVisible(); - - Locator inputField = page.getByRole(AriaRole.TEXTBOX); - Locator deleteButton = page.getByRole(AriaRole.BUTTON, - new Page.GetByRoleOptions().setName("Delete Repository")); - - inputField.fill("7ANfB"); - deleteButton.click(); - - Locator okButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("OK")); - Locator successDialog = page.getByText("Repository was deleted successfully"); - assertThat(successDialog).isVisible(); - okButton.click(); + inputDialogBasicPage.getInputField().fill("7ANfB"); + inputDialogBasicPage.getDeleteButton().click(); + assertThat(inputDialogBasicPage.getSuccessDialog()).isVisible(); + inputDialogBasicPage.getOKButton().click(); } } diff --git a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java index b730488a1..c26543e4e 100644 --- a/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java +++ b/src/test/java/com/webforj/samples/views/optiondialog/input/InputDialogTypeViewIT.java @@ -5,31 +5,26 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import com.microsoft.playwright.options.AriaRole; +import com.webforj.samples.pages.optiondialog.input.InputDialogTypePage; import com.webforj.samples.views.BaseTest; public class InputDialogTypeViewIT extends BaseTest { + private InputDialogTypePage inputDialogTypePage; + @BeforeEach public void setupInputDialogTypeView() { - navigateToRoute("inputdialogtype"); + navigateToRoute(InputDialogTypePage.getRoute()); + inputDialogTypePage = new InputDialogTypePage(page); } @Test - public void testInputDialogTypeIsShownWhenContinueButtonIsClicked() { - Locator dialog = page.getByRole(AriaRole.DIALOG); - assertThat(dialog).isVisible(); - - Locator inputField = page.getByRole(AriaRole.TEXTBOX); - inputField.fill("mySecretPassword"); - Locator continueButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Continue")); - continueButton.click(); - Locator accessGrantedDialog = page.getByText("Access granted"); - assertThat(accessGrantedDialog).isVisible(); - Locator gotItButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Got it")); - gotItButton.click(); + public void testInputDialogTypeIsShownWhenContinueButtonIsClicked() { + + inputDialogTypePage.getInputField().fill("mySecretPassword"); + inputDialogTypePage.getContinueButton().click(); + assertThat(inputDialogTypePage.getAccessGrantedDialog()).isVisible(); + inputDialogTypePage.getGotItButton().click(); } } diff --git a/src/test/java/com/webforj/samples/views/textarea/TextAreaStatesViewIT.java b/src/test/java/com/webforj/samples/views/textarea/TextAreaStatesViewIT.java new file mode 100644 index 000000000..d7270c54b --- /dev/null +++ b/src/test/java/com/webforj/samples/views/textarea/TextAreaStatesViewIT.java @@ -0,0 +1,30 @@ +package com.webforj.samples.views.textarea; + +import com.webforj.samples.pages.textarea.TextAreaStatesPage; +import com.webforj.samples.views.BaseTest; +import org.junit.jupiter.api.BeforeEach; + +import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; + +import org.junit.jupiter.api.Test; + + public class TextAreaStatesViewIT extends BaseTest { + + private TextAreaStatesPage textAreaStatesPage; + + @BeforeEach + public void setupTextAreaStatesPage() { + navigateToRoute(TextAreaStatesPage.getRoute()); + textAreaStatesPage = new TextAreaStatesPage(page); + } + + @Test + public void testReadonlyAreaIsReadonly() { + assertThat(textAreaStatesPage.getReadonlyArea()).hasAttribute("readonly", ""); + } + + @Test + public void testDisabledAreaIsDisabled() { + assertThat(textAreaStatesPage.getDisabledArea()).isDisabled(); + } +} From bebe52ea4765f73ede184ecc551f5f58be625ef3 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 29 Oct 2025 14:57:47 -0600 Subject: [PATCH 14/16] Delete src/test/java/com/webforj/samples/config/RunConfig.java --- .../com/webforj/samples/config/RunConfig.java | 122 ------------------ 1 file changed, 122 deletions(-) delete mode 100644 src/test/java/com/webforj/samples/config/RunConfig.java diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java deleted file mode 100644 index 9092668fc..000000000 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.webforj.samples.config; - -public class RunConfig { - private static final String DEFAULT_BROWSER_LOCAL = "chromium"; - private static final String DEFAULT_BROWSER_CI = "chromium,firefox,webkit"; - private static final boolean DEFAULT_HEADLESS = true; - private static final int DEFAULT_TIMEOUT = 30000; - private static final int DEFAULT_SLOW_MO = 0; - private static final boolean IS_CI = "true".equalsIgnoreCase(System.getenv("CI")); - - static { - // Parse webforj.e2e if provided - String e2eProps = System.getProperty("webforj.e2e"); - if (e2eProps != null && !e2eProps.isEmpty()) { - parseE2EProps(e2eProps); - } - } - - private static void parseE2EProps(String propsString) { - try { - String[] pairs = propsString.split(","); - - for (String pair : pairs) { - pair = pair.trim(); - int eq = pair.indexOf('='); - if (eq > 0) { - String key = pair.substring(0, eq).trim(); - String value = pair.substring(eq + 1).trim(); - - // For browsers, replace : with , for comma-separated list - if ("browsers".equals(key)) { - value = value.replace(':', ','); - } - - System.setProperty(key, value); - } - } - } catch (Exception e) { - System.getLogger(RunConfig.class.getName()) - .log(System.Logger.Level.WARNING, "Failed to parse webforj.e2e: " + e.getMessage()); - } - } - - /** - * Get a configuration value checking in order: - * 1. System property (-Dkey=value) - * 2. Environment variable (KEY=value, with dots replaced by underscores and - * uppercase) - * 3. Default value - */ - private static String getConfig(String key, String defaultValue) { - // First check system property - String value = System.getProperty(key); - if (value != null) { - return value; - } - - // Then check environment variable (convert dots to underscores and uppercase) - String envKey = key.toUpperCase().replace(".", "_"); - value = System.getenv(envKey); - if (value != null) { - return value; - } - - return defaultValue; - } - - private static boolean getConfigBoolean(String key, boolean defaultValue) { - String value = getConfig(key, null); - if (value == null) { - return defaultValue; - } - return Boolean.parseBoolean(value); - } - - private static int getConfigInt(String key, int defaultValue) { - String value = getConfig(key, null); - if (value == null) { - return defaultValue; - } - try { - return Integer.parseInt(value); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - public static String getBrowser() { - String browser = System.getProperty("browser"); - if (browser == null) { - browser = System.getProperty("playwright.browser"); - } - if (browser == null) { - browser = System.getenv("BROWSER"); - } - if (browser == null) { - // Use all browsers in CI, just chromium locally - browser = IS_CI ? DEFAULT_BROWSER_CI : DEFAULT_BROWSER_LOCAL; - } - return browser.toLowerCase(); - } - - public static boolean isCI() { - return IS_CI; - } - - public static boolean isHeadless() { - if (IS_CI) { - return true; - } - return getConfigBoolean("headless", DEFAULT_HEADLESS); - } - - public static int getDefaultTimeout() { - return getConfigInt("default.timeout", DEFAULT_TIMEOUT); - } - - public static int getSlowMo() { - return getConfigInt("slowmo", DEFAULT_SLOW_MO); - } - -} From 98b616f77988d70217d13f615b6a13fcc345c40d Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 29 Oct 2025 15:01:46 -0600 Subject: [PATCH 15/16] tests: Playwright Integration Tests Added --- src/test/java/com/webforj/samples/config/RunConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index 9092668fc..4b0ba26d3 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -9,7 +9,7 @@ public class RunConfig { private static final boolean IS_CI = "true".equalsIgnoreCase(System.getenv("CI")); static { - // Parse webforj.e2e if provided + // Parse webforj.e2e if provided String e2eProps = System.getProperty("webforj.e2e"); if (e2eProps != null && !e2eProps.isEmpty()) { parseE2EProps(e2eProps); From e5a420c699d9d3547101f6b87fcd926082e4bfb2 Mon Sep 17 00:00:00 2001 From: jturfanbasis Date: Wed, 29 Oct 2025 15:06:13 -0600 Subject: [PATCH 16/16] fix: re-added runconfig --- src/test/java/com/webforj/samples/config/RunConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/webforj/samples/config/RunConfig.java b/src/test/java/com/webforj/samples/config/RunConfig.java index 4b0ba26d3..9092668fc 100644 --- a/src/test/java/com/webforj/samples/config/RunConfig.java +++ b/src/test/java/com/webforj/samples/config/RunConfig.java @@ -9,7 +9,7 @@ public class RunConfig { private static final boolean IS_CI = "true".equalsIgnoreCase(System.getenv("CI")); static { - // Parse webforj.e2e if provided + // Parse webforj.e2e if provided String e2eProps = System.getProperty("webforj.e2e"); if (e2eProps != null && !e2eProps.isEmpty()) { parseE2EProps(e2eProps);