Выяснил, что данный тест валится, только если выполняется первым.
Т.е. первый раз .pressEnter не выполняется, а во всех последующих тестах будет отрабатывать, как и должен. Подстановка дополнительных условий в виде .shouldBe(visible).shouldBe(exist) даёт абсолютно аналогичный вариант. Результат такой:
@Test
public void testAddTodo() {
open("http://todomvc.com/examples/troopjs_require/");
$(".new-todo").setValue("first").pressEnter();
$(".new-todo").setValue("second").pressEnter();
$$(".todo-list li").shouldHave(size(2)); //тест завершился ошибкой
}
@Test
public void testAddTodoCopy() {
open("http://todomvc.com/examples/troopjs_require/");
$(".new-todo").setValue("first").pressEnter();
$(".new-todo").setValue("second").pressEnter();
$$(".todo-list li").shouldHave(size(2)); //тест прошёл
}
Да тут основная функциональность завязана на добавлении записей сперва, а после уже действия над этими записями, так что не подходит такой вариант. Тут всегда первое действие - добавление записи, а из-за этого первый в списке тест всегда будет завершен ошибкой.
я не про фэйлы имею ввиду
Например вы можете создать класс с тестом который просто открывает какуюто страничку и ваши тесты с pressEnter запускать после этого класса
Ага, понял, в принципе да, можно попробовать и так, если открытия страницы будет достаточно в данном случае. Вечером попробую такой вариант, потом отпишусь сюда.
Не хочет. Такое ощущение, что без ошибки никак - обязательно должна быть ошибка в первом тесте в методе shouldHave(size(2)), какая связь, ну, вообще не ясно. Бред какой-то, серьёзно.
Пока что единственный рабочий вариант остаётся тот, о котором я писал в топике, т.е. если выставлять ожидание, то выполняется, но добавляет дополнительное время к выполнению теста: