package integration;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.Configuration.timeout;
import static com.codeborne.selenide.Selectors.byText;
import static com.codeborne.selenide.Selenide.$;
import static org.junit.Assert.assertTrue;
public class LongRunningAjaxRequestTest extends IntegrationTest {
@Before
public void openTestPage() {
openFile("long_ajax_request.html");
timeout = averageSeleniumCommandDuration * 30;
$("#loading").shouldNot(exist);
$(byText("Run long request")).click();
}
@Test
public void dollarWaitsForElement() {
$(byText("Result 1")).shouldBe(visible);
}
@Test
public void dollarWaitsForElementWithIndex() {
$("#results li", 1).shouldHave(text("Result 2"));
}
@Test
public void dollarWaitsUntilElementDisappears() {
$(byText("Loading...")).should(exist);
$(byText("Loading...")).should(disappear);
$(byText("Loading...")).shouldNot(exist);
}
@Test
public void userCanWaitUntilConditionIsMet() {
timeout = 10;
$(byText("Result 2")).waitUntil(visible, 3000);
assertTrue($(byText("Result 2")).isDisplayed());
}
@Test
public void dollarWithParentWaitsUntilElementDisappears() {
$("#results").$("span#loading").should(exist);
$("#results").$("span#loading").shouldNot(exist);
}
@Test
public void dollarWithParentAndIndexWaitsUntilElementDisappears() {
$("#results").$("span#loading", 0).should(exist);
$("#results").$("span#loading", 0).shouldNot(exist);
$("#results").$("span#loading", 666).shouldNot(exist);
}
@Test(expected = AssertionError.class)
public void waitingTimeout() {
$("#non-existing-element").should(exist);
}
@Test
public void shouldWaitsForCondition() {
$("#results").shouldHave(text("Result 1"));
}
@Test
public void shouldWaitsForAllConditions() {
$("#results").shouldHave(text("Result 1"), text("Result 2"));
}
@Test
public void shouldNotExist() {
$("#non-existing-element").shouldNot(exist);
$("#non-existing-element", 7).shouldNot(exist);
$(By.linkText("non-existing-link")).shouldNot(exist);
$(By.linkText("non-existing-link"), 8).shouldNot(exist);
}
@Test
public void findWaitsForConditions() {
$("#results").find(byText("non-existing element")).shouldNot(exist);
$("#results").find(byText("non-existing element"), 3).shouldNot(exist);
$("#results").find(byText("Loading...")).shouldNot(exist);
$("#results").find(byText("Loading..."), 0).shouldNot(exist);
}
@Test
public void shouldNotExistWithinParentElement() {
$("body").$("#non-existing-element").shouldNot(exist);
$("body").$("#non-existing-element", 4).shouldNot(exist);
}
@Test
public void shouldNotBeVisible() {
$("#non-existing-element").shouldNotBe(visible);
$("#non-existing-element", 7).shouldNotBe(visible);
$(By.linkText("non-existing-link")).shouldNotBe(visible);
$(By.linkText("non-existing-link"), 8).shouldNotBe(visible);
}
@Test
public void shouldNotBeVisibleWithinParentElement() {
$("body").$("#non-existing-element").shouldNotBe(visible);
$("body").$("#non-existing-element", 4).shouldNotBe(visible);
}
}