Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class QACourseAutomationTest {
- /*
- тут более уместно - описать - что мы тестируем
- TodoMVCTest - более точный вариант, описывающий что мы тестим
- */
- @Test
- public void createDeleteComplete() {
- /*
- мы тут еще тестируем CompleteAll & Clear completed
- длинновато получится, если все это перечислять
- в таких случаях - применяй вот такой прием
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
- tasksLifeCycle, tasksCommonFlow - вот такие варианты для нашей ситуации лучше
- указали - что работаем с тасками и покрываем несколько разных операций
- */
- open("http://todomvc.com/examples/troopjs_require/#/");
- //Start of creating tasks (1-4)
- $(".new-todo").setValue("task1").pressEnter();
- $(".new-todo").setValue("task2").pressEnter();
- $(".new-todo").setValue("task3").pressEnter();
- $(".new-todo").setValue("task4").pressEnter();
- //Checking that elements was created
- $$(".todo-list li").shouldHave(CollectionCondition.exactTexts("task1", "task2", "task3", "task4"));
- /*
- поскольку код - вполне ясен - в данном случае - я бы не стала комментировать код
- также - советую использовать import static для CollectionCondition.exactTexts
- should-методы коллекции - именно кондишен типа CollectionCondition принимают
- потому - мы без потери точности можем писать
- $$(".todo-list li").shouldHave(exactTexts("task1", "task2", "task3", "task4"));
- если мы можем написать код лаконичнее без потери точности - чтоит это сделать
- т к - так проще и нагляднее получится
- касается и других случаев использования кондшенов - как CollectionCondition так и Condition
- использование import static для таких случаев - вполне ок решение
- */
- //Deleting task 2 (5)
- $$(".todo-list li").findBy(Condition.exactText("task2")).hover().$(".destroy").click();
- //Check if task2 exist
- $$(".todo-list li").findBy(Condition.exactText("task2")).shouldNot(Condition.exist);
- /*
- а вот эта проверка - не очень хороша
- т к проверяет - лишь отсутствие таски 2
- а ведь могут быть и другие ошибки
- например - удаляли таску 2, но уалились несколько тасок
- так что - правильнее было проверить тексты всех тасок
- */
- //Marking task 4 as completed (6)
- $$(".todo-list li").findBy(Condition.exactText("task4")).$(".toggle").click();
- //Check if task for is comleted
- $$(".todo-list li completed").findBy(Condition.exactText("task4"));
- /*
- $$(".todo-list li completed") - обрати внимание что по такому селектору мы найдем - http://joxi.ru/n2YkKaGUoog3nr
- ничего не найдем )
- посмотри - что значит пробел в css селекторе
- и как искать элементы по их классу
- http://www.w3schools.com/cssref/css_selectors.asp
- но - в общем - направление верное
- получить коллекцию закомпличеных тасок и проверить их
- только вот $$(...).findBy(...); - ничего не проверяет
- мы просто - описали - как получить некий элемент коллекции
- не более
- мы с этим элементом - ничего не делали и не проверяли
- потому и ошибки не было никакой
- по хорошему - нужно получить коллекцию закомпличеных тасок и выполнить ее проверку
- как писала ранее - проверка текстов элементов коллекции - наиболее точный и полезный вариант
- про эту проверку еще будем и позже говорить
- но вот в данный момент - такой вариант - будет самым разумным
- */
- //Clearing completed (7)
- $(".clear-completed").click();
- //Check if task4 exist
- $$(".todo-list li").findBy(Condition.exactText("task4")).shouldNot(Condition.exist);
- /*
- тут - то же самое
- лучше - проверить состояние всей коллекции $$(".todo-list li")
- */
- //Mark all as completed (8)
- $(".toggle-all").click();
- //Check if task3 and task1 completed
- $$(".todo-list li completed").findBy(Condition.exactText("task3").exactText("task1"));
- /*
- очень странный код у проверки)
- $$(".todo-list li completed") - писала выше про недостатки у селектора
- findBy - согласно переданного ему кондишена ищет один элемент коллекции
- как думаешь, что бы мы нашли таким образом, даже если бы коллекцию верно получили?
- и тут тоже
- получи поллекцию закомпличеных тасок
- и проверь ее
- вариант $$(....).shouldHave(exactTexts(......)) - проверит тестовую ситуацию наиболее точно
- будет проверена вся коллекция, количество ее элементов, тексты и их порядок
- */
- //Clear remaining completed tasks (9)
- $(".clear-completed").click();
- // Checking if main class is visible, it has all code of todo-list and active only when there is some tasks
- $(".main").shouldNotBe(Condition.visible);
- /*
- нам ни к чему вводить еще один независимый селектор
- мы вполне можем проверить - что наша коллекция $$(".todo-list li") - пуста
- этого будет достаточно
- наша цель - проверить логику работы приложения
- вот мы удалили таски
- и проверяем - тасок в списке нету
- логику ме проверили
- в следующем видео - будет о том, почему стоит состредоточиться именно на функциональных проверках
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment