package integration; import com.codeborne.selenide.ex.DialogTextMismatch; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import static com.codeborne.selenide.Condition.empty; import static com.codeborne.selenide.Condition.text; import static com.codeborne.selenide.Selectors.byText; import static com.codeborne.selenide.Selenide.*; import static com.codeborne.selenide.WebDriverRunner.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; import static org.junit.Assume.assumeTrue; public class ConfirmTest extends IntegrationTest { private String userName = "John Mc'Clane"; @Before public void openTestPage() { assumeFalse(isFirefox()); openFile("page_with_alerts.html"); $("h1").shouldHave(text("Page with alerts")); $(By.name("username")).val(userName); } @Test public void canSubmitConfirmDialogWithoutCheckingText() { onConfirmReturn(true); $(byText("Confirm button")).click(); confirm(); $("h1").shouldHave(text("Page with JQuery")); } @Test public void canSubmitConfirmDialogAndCheckText() { onConfirmReturn(true); $(byText("Confirm button")).click(); confirm("Get out of this page, " + userName + '?'); $("h1").shouldHave(text("Page with JQuery")); } @Test public void canCancelConfirmDialog() { onConfirmReturn(false); $(byText("Confirm button")).click(); dismiss("Get out of this page, " + userName + '?'); $("#message").shouldHave(text("Stay here, " + userName)); $("#container").shouldNotBe(empty); } @Test public void selenideChecksDialogText() { $(byText("Confirm button")).click(); try { confirm("Get out of this page, Maria?"); } catch (DialogTextMismatch expected) { return; } if (supportsModalDialogs()) { fail("Should throw DialogTextMismatch for mismatching text"); } } @Test public void confirmReturnsActualDialogText() { assumeTrue(supportsModalDialogs()); $(byText("Confirm button")).click(); assertEquals("Get out of this page, " + userName + '?', confirm()); } @Test public void dismissReturnsActualDialogText() { assumeTrue(supportsModalDialogs()); $(byText("Confirm button")).click(); assertEquals("Get out of this page, " + userName + '?', dismiss()); } @Test public void waitsUntilConfirmDialogAppears() { onConfirmReturn(true); $(byText("Slow confirm")).click(); String confirmDialogText = confirm(); if (!isHeadless()) { assertEquals("Get out of this page, " + userName + '?', confirmDialogText); } } @AfterClass public static void tearDown() { close(); } }