julia_v_iluhina

Untitled

Oct 19th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.65 KB | None | 0 0
  1.         <dependency>
  2.             <groupId>com.codeborne</groupId>
  3.             <artifactId>selenide</artifactId>
  4.             <version>2.17</version>
  5.         </dependency>
  6. /*
  7.     ну тут версия 2.17 - точно ни к чему)
  8.     можно и посвежее взять)
  9.  
  10.     в easy setup я обновила информацию о рабочих версиях
  11.     https://docs.google.com/document/d/1fodHkTunrtit-EiMBrb91Mc6rbnQ5LwtBL9rISQveKA/edit?usp=sharing
  12.  
  13.     на самом деле, это придирки, конечно
  14.     но doubleClick & hover -  будет проще вызывать
  15. */
  16. ***********************************
  17. https://docs.google.com/document/d/1jXzf_AOIdSE8vAUhRwXXuI2ccMc3au4XvWl6TH1GMx8/edit?usp=sharing
  18. /*
  19.     вот тут - можно полезного почитать
  20.     опорный конспект
  21. */
  22. ****************************************
  23. import cucumber.api.java.After;
  24. /*
  25.     эту аннотацию - используем для cucumber
  26.     это ок
  27. */
  28. import org.junit.Before;
  29. /*
  30.     а это - от junit аннотация
  31. */
  32.  
  33. ...
  34.  
  35. public class TodosStepHooks {
  36.  
  37.     ...
  38.  
  39.     @Before
  40.     public void setup() {
  41.         Configuration.timeout = 10000;
  42.     }
  43.     /*
  44.         это - метод, аннотированный jUnit аннотацией
  45.         и мы его расположили не в тест-классе
  46.         и не в предке тест-класса
  47.  
  48.         далеко не факт, что будет ок работать
  49.         никто не гарантирует
  50.  
  51.         отличный материал про hooks
  52.         http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/
  53.         и вот это тоже можно применить
  54.         https://github.com/cucumber/cucumber/wiki/Background
  55.         (это ты уже используешь)
  56.     */
  57. }
  58. *********************************
  59.     @When("^edit task '(.*)' to '(.*)' and press Escape$")
  60.     public void editTaskAndPressEscape(String oldTask, String newTask) {
  61.         doubleClick(tasks.find(exactText(oldTask)).find("label"));
  62.         tasks.find(cssClass("editing")).find(".edit").setValue(newTask).sendKeys(ESCAPE);
  63.     }
  64.  
  65.     @When("^edit task '(.*)' to '(.*)' and press Enter$")
  66.     public void editTaskAndPressEnter(String oldTask, String newTask) {
  67.         doubleClick(tasks.find(exactText(oldTask)).find("label"));
  68.         tasks.find(cssClass("editing")).find(".edit").setValue(newTask).sendKeys(ENTER);
  69.     }
  70.  
  71.     @When("^edit task '(.*)' to '(.*)' and press Tab$")
  72.     public void editTaskAndPressTab(String oldTask, String newTask) {
  73.         doubleClick(tasks.find(exactText(oldTask)).find("label"));
  74.         tasks.find(cssClass("editing")).find(".edit").setValue(newTask).sendKeys(TAB);
  75.     }
  76. /*
  77.     и тут тебе никто не мешает быть dry
  78.  
  79.     как и ранее - вот эту общую часть
  80.     doubleClick(tasks.find(exactText(oldTask)).find("label"));
  81.     tasks.find(cssClass("editing")).find(".edit").setValue(newTask)
  82.  
  83.     можно реализовать как отдельный метод
  84.  
  85.     oldTask и newTask
  86.     или
  87.     oldTaskText и newTaskText
  88.     ?
  89.     вспомни  = для одного понятия (текст таски) - один термин)
  90. */
  91. *******************************
  92.     @But("^(\\d+) item\\(s\\) left$")
  93.     public void itemsLeft(int count) {
  94.         $("#todo-count>strong").shouldHave(exactText(Integer.toString(count)));
  95.     }
  96. /*
  97.     насчет @But - неожиданно)
  98.  
  99.     http://www.seleniumframework.com/cucumber-2/cucumber-keywords/
  100.     посмотри на пример с but
  101.     мне кажется - что это не наш случай)
  102. */
  103. ********************************************
  104.     @Given("^added (.*) tasks (.*)$")
  105.     public void givenTasks(TaskType taskType, List<String> taskTexts) {
  106.         givenAtAll(aTasks(taskType, taskTexts.toArray(new String[0])));
  107.     }
  108. /*
  109.     Неожиданно)
  110.     что можно преобразовать в вот такой параметр на лету  - TaskType taskType
  111.  
  112.     это ты просто попробовала
  113.     или где-то вычитала?
  114.     если вычитала, дай линку плиз)
  115.  
  116.     ниже приведу варианты
  117. */
  118. *********************************************
  119. Scenario: complete task
  120.   Given added COMPLETED tasks a, b
  121.   When toggle task a
  122.   Then tasks are: a, b
  123.   But 1 item(s) left
  124. /*
  125.     вот тут я не очень понимаю - почему But)
  126.  
  127.     жила-была девочка
  128.     была она умная, но красивая )
  129.  
  130.     я там выше линку привела - там есть пример про but
  131.  
  132.     тут больше and подойдет
  133. */
  134. ********************************
  135. Scenario: complete all tasks
  136.   Given added ACTIVE tasks a, b, c
  137.   And toggle task c
  138.   When toggle all tasks
  139.   Then tasks are: a, b, c
  140.   But 0 item(s) left
  141.  
  142. /*
  143.     tasks are: a, b, c - применяешь двоеточие
  144.     Given added ACTIVE tasks a, b, c - нет
  145.  
  146.     тут тоже есть правила
  147.  
  148.         Когда ты используешь список - разумно использовать двоеточие
  149.         (в обычных языках - что в русском, что в английском - мы так и поступаем)
  150.  
  151.         А когда просто в рамках предложения нужно указать один элемент тестовых данных
  152.         Чтоб выделить их - используй кавычки
  153.  
  154.         Т е именно кавычки и двоеточие нам покажут, что это тестовые данные
  155.         Будем экономны - или то, или то
  156.         Одного средства достаточно, чтоб показать, что это тестовые данные
  157.  
  158.         В конспекте и видео - это есть
  159.         Так и в примере на официальном сайте
  160.         http://joxi.ru/L210nzMu6n4d4m
  161.         Обрати внимание
  162.  
  163.         Что касается одиночных тестовых данных - цифр.
  164.         Будет ОК как использовать кавычки, так и не использовать их.
  165.         http://joxi.ru/bmoWZzahMkB9Ym
  166.         Думаю, это же можно и к данным типа enum отнести)
  167. */
  168. *************************************
  169. /*
  170.     это про то, как сложные гивены можно было бы реализовать
  171.     делать не обязательно
  172.     просто к сведению
  173.  
  174.        пример
  175.         Given tasks:
  176.           | a | COMPLETED |
  177.           | b | ACTIVE    |
  178.  
  179.         @Given("^tasks:$")
  180.         public void givenTasks(DataTable data) {
  181.             Map<String, String> givenTasks = data.asMap(String.class, String.class);
  182.             ArrayList<String> names = new ArrayList<String>(givenTasks.keySet());
  183.             ArrayList<String> statuses = new ArrayList<String>(givenTasks.values());
  184.  
  185.             ...
  186.         }
  187.  
  188.     гугли
  189.     cucumber data table example
  190.  
  191.     полезные линки
  192.     http://toolsqa.com/cucumber/data-tables-in-cucumber/
  193.     https://sukesh15.gitbooks.io/cucumber-jvm-test-framework-/content/cucumber_-_more_details/cucumber_-_datatables.html
  194.     http://michielrop.blogspot.com/2013/09/cucumber-datatable-and-java.html
  195.  
  196.     http://cucumber.github.io/api/cucumber/jvm/javadoc/cucumber/api/DataTable.html
  197.  
  198.  
  199. */
Advertisement
Add Comment
Please, Sign In to add comment