Skip to content

Commit

Permalink
#5470 fix for Dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
pnatashap committed May 1, 2024
1 parent b093619 commit 557cc8a
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 55 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package io.github.com.custom.elements.dialog;

import com.epam.jdi.light.material.elements.feedback.Dialog;
import com.epam.jdi.light.material.elements.inputs.TextField;

public class DialogWithEmail extends Dialog {

public TextField email() {
return new TextField().setCore(TextField.class, core().find(".MuiTextField-root"));
}


}
Original file line number Diff line number Diff line change
@@ -1,27 +1,33 @@
package io.github.com.pages.feedback;

import com.epam.jdi.light.elements.composite.WebPage;
import com.epam.jdi.light.elements.pageobjects.annotations.locators.UI;
import com.epam.jdi.light.material.elements.displaydata.Typography;
import com.epam.jdi.light.material.elements.inputs.MUIButton;
import io.github.com.custom.annotations.JButtonWithDialog;
import io.github.com.custom.annotations.JListItemWithDialog;
import io.github.com.custom.elements.ButtonWithDialog;
import io.github.com.custom.elements.MUIListItemWithDialog;
import io.github.com.custom.elements.dialog.DialogWithEmail;

public class DialogPage extends WebPage {

@JButtonWithDialog(root = "//span[text()='Open simple dialog']/parent::button",
@JButtonWithDialog(root = "//button[./*[text()='Open simple dialog']]",
dialog = "//div[@aria-labelledby = 'simple-dialog-title']/parent::div[contains(@class, 'MuiDialog-container')]",
actionText = "#simpleDialogSelection")
public static ButtonWithDialog simpleDialogButton;

@JButtonWithDialog(root = "//span[text()='Open alert dialog']/parent::button",
@JButtonWithDialog(root = "//button[./*[text()='Open alert dialog']]",
dialog = "//h2[text() ='Alert dialog question?']/ancestor::div[contains(@class, 'MuiDialog-container')]",
actionText = "#alertDialogSelection")
public static ButtonWithDialog alertDialogButton;

@JButtonWithDialog(root = "//span[text()='Open form dialog']/parent::button",
dialog = "//h2[text() ='Form Dialog']/ancestor::div[contains(@class, 'MuiDialog-container')]",
actionText = "#mailDialogSelection")
public static ButtonWithDialog formDialogButton;
@UI("//*[contains(@class, 'MuiDialog-container')][.//h2[text()='Form Dialog']]")
public static DialogWithEmail formDialog;
@UI("//button[./*[text()='Open form dialog']]")
public static MUIButton formDialogButton;
@UI("#mailDialogSelection")
public static Typography formDialogAction;

@JListItemWithDialog(root = "//div[contains(@class, 'MuiListItem-root') and @aria-label = 'phone ringtone']",
dialog = "//h2[text() ='Phone Ringtone']/ancestor::div[contains(@class, 'MuiDialog-container')]")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import static io.github.com.StaticSite.dialogPage;
import static io.github.com.pages.feedback.DialogPage.alertDialogButton;
import static io.github.com.pages.feedback.DialogPage.confirmationDialogListItem;
import static io.github.com.pages.feedback.DialogPage.formDialog;
import static io.github.com.pages.feedback.DialogPage.formDialogButton;
import static io.github.com.pages.feedback.DialogPage.formDialogAction;
import static io.github.com.pages.feedback.DialogPage.scrollBodyDialogButton;
import static io.github.com.pages.feedback.DialogPage.scrollPaperDialogButton;
import static io.github.com.pages.feedback.DialogPage.simpleDialogButton;
Expand Down Expand Up @@ -54,41 +56,40 @@ public void alertDialogTest() {
alertDialogButton.actionText().has().text("Selected: ok");
}

// @todo #5341 Closing dialog should not change anything on the page, explicit click on buttons should be used
@Test(enabled = false)
@Test
public void formDialogsTest() {
final String email = "email@example.com";
formDialogButton.click();
formDialogButton.dialog().is().displayed();
formDialogButton.dialog().title().has().text("Form Dialog");
formDialogButton.dialog().textContent().has().text(containsString("Lorem ipsum dolor sit amet"));
formDialogButton.dialog().textField().sendKeys(email);
formDialogButton.dialog().confirm();
formDialogButton.dialog().is().hidden();
formDialogButton.actionText().has().text("Entered email: " + email);
formDialog.is().displayed();
formDialog.title().has().text("Form Dialog");
formDialog.textContent().has().text(containsString("Lorem ipsum dolor sit amet"));
formDialog.email().sendKeys(email);
formDialog.confirm();
formDialog.is().hidden();
formDialogAction.has().text("Entered email: " + email);
formDialogButton.click();
formDialogButton.dialog().is().displayed();
formDialogButton.dialog().textField().has().text(email);
formDialogButton.dialog().close();
formDialogButton.dialog().is().hidden();
formDialogButton.actionText().has().text("Entered email:");
formDialog.is().displayed();
formDialog.email().has().text(email);
formDialog.close();
formDialog.is().hidden();
formDialogAction.has().text("Entered email:");
}

@Test
@Test(enabled = false)
public void confirmationDialogTest() {
confirmationDialogListItem.click();
confirmationDialogListItem.dialog().is().displayed();
confirmationDialogListItem.dialog().title().has().text("Phone Ringtone");
confirmationDialogListItem.dialog().radioButtons().has().size(14);
confirmationDialogListItem.dialog().radioButtons().select("Callisto");
//confirmationDialogListItem.dialog().radioButtons().has().size(14);
//confirmationDialogListItem.dialog().radioButtons().select("Callisto");
confirmationDialogListItem.dialog().confirm();
confirmationDialogListItem.has().secondaryText("Callisto");
confirmationDialogListItem.click();
confirmationDialogListItem.dialog().radioButtons().select("None");
//confirmationDialogListItem.dialog().radioButtons().select("None");
confirmationDialogListItem.dialog().confirm();
confirmationDialogListItem.has().secondaryText("None");
confirmationDialogListItem.click();
confirmationDialogListItem.dialog().radioButtons().select("Triton");
//confirmationDialogListItem.dialog().radioButtons().select("Triton");
confirmationDialogListItem.dialog().cancel();
confirmationDialogListItem.has().secondaryText("None");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
import com.epam.jdi.light.common.JDIAction;
import com.epam.jdi.light.elements.base.UIBaseElement;
import com.epam.jdi.light.elements.common.UIElement;
import com.epam.jdi.light.elements.complex.WebList;
import com.epam.jdi.light.material.asserts.feedback.DialogAssert;
import com.epam.jdi.light.material.elements.displaydata.list.SimpleList;
import com.epam.jdi.light.material.elements.inputs.ButtonGroup;
import com.epam.jdi.light.material.elements.inputs.RadioButtons;
import com.epam.jdi.light.material.elements.inputs.TextField;
import com.epam.jdi.light.ui.html.elements.common.Text;
import org.openqa.selenium.Keys;

Expand All @@ -27,6 +25,7 @@ public class Dialog extends UIBaseElement<DialogAssert> {
* Script to find scrollable content.
*/
private static final String EXECUTE_SCRIPT = "return arguments[0].scrollHeight > arguments[0].offsetHeight;";
private final String contentLocator = ".MuiDialogContent-root";;

/**
* Gets the title of this dialog.
Expand All @@ -50,10 +49,10 @@ public SimpleList list() {
}

public UIElement content() {
return core().find(".MuiDialogContent-root");
return core().find(contentLocator);
}
/**
* Gets the text content of this dialog.
* Gets the text content of this dialog (part of the content).
*
* @return text of this dialog as {@link Text}
*/
Expand All @@ -63,35 +62,23 @@ public Text textContent() {
}

/**
* Gets the buttons within the dialog for specific actions (e.g. "Cancel", "Confirm", "Subscribe").
* Gets the action section.
*
* @return buttons of this dialog as {@link ButtonGroup}
* @return buttons of this dialog as {@link UIElement}
*/
// @todo #5341 this is not a ButtonGroup, Dialog is only a container
@JDIAction("Get '{name}' action buttons")
public ButtonGroup actionButtons() {
return new ButtonGroup().setCore(ButtonGroup.class, core().find(".MuiDialogActions-root"));
@JDIAction("Get '{name}' actions")
public UIElement actions() {
return core().find(".MuiDialogActions-root");
}

/**
* Gets the radioButtons within the dialog.
* Gets the buttons within the dialog for specific actions.
*
* @return radioButtons of this dialog as {@link RadioButtons}
* @return buttons of this dialog as {@link com.epam.jdi.light.material.elements.inputs.MUIButton}
*/
// @todo #5431 radiobuttons is not a part of standard dialog, should be removed
@JDIAction("Get '{name}' radio buttons")
public RadioButtons radioButtons() {
return new RadioButtons().setCore(RadioButtons.class, core().find(".MuiRadio-root"));
}

/**
* Gets the text field within the dialog.
*
* @return text field of this dialog as {@link TextField}
*/
@JDIAction("Get '{name}' text field")
public TextField textField() {
return new TextField().setCore(TextField.class, core().find(".MuiTextField-root"));
@JDIAction("Get '{name}' actions")
public WebList actionButtons() {
return this.actions().finds(".MuiButton-root");
}

/**
Expand All @@ -101,7 +88,7 @@ public TextField textField() {
*/
@JDIAction("Check that '{name}' has scrollable content")
public boolean hasScrollableContent() {
return jsExecute(EXECUTE_SCRIPT, core().find(".MuiDialogContent-root").getFast());
return jsExecute(EXECUTE_SCRIPT, core().find(contentLocator).getFast());
}

/**
Expand All @@ -111,7 +98,7 @@ public boolean hasScrollableContent() {
*/
@JDIAction("Scroll '{name}' to height '{0}'")
public void scrollContentTo(int scrollHeight) {
jsExecute(String.format("arguments[0].scroll(0, %s)", scrollHeight), core().find(".MuiDialogContent-root").getFast());
jsExecute(String.format("arguments[0].scroll(0, %s)", scrollHeight), core().find(contentLocator).getFast());
}

/**
Expand Down Expand Up @@ -153,7 +140,7 @@ public void close() {
*/
@JDIAction("Click '{0}' button on '{name}'")
public void clickButton(String buttonName) {
actionButtons().buttons().stream()
actionButtons().stream()
.filter(button -> button.getValue().equalsIgnoreCase(buttonName))
.findFirst()
.orElseThrow(() -> runtimeException(String.format("Close button %s not found", buttonName)))
Expand All @@ -168,6 +155,7 @@ public void clickButton(String buttonName) {
@JDIAction("Confirm and close '{name}' with 'ok' button")
public void confirm() {
clickButton("ok");
waitCondition(this::isHidden);
}

/**
Expand Down

0 comments on commit 557cc8a

Please sign in to comment.