From 80d83770a3dedb00d15c6a34189e4f4aa6978ce0 Mon Sep 17 00:00:00 2001 From: Stanislav Frolov Date: Fri, 25 May 2018 16:27:19 +0300 Subject: [PATCH 1/2] Add new steps (#63) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add new steps @Тогда("^в списке \"([^\"]*)\" содержится количество элементов, равное значению из переменной \"([^\"]*)\"") @Тогда("^значения из переменной \"([^\"]*)\" и из property файла \"([^\"]*)\" совпадают$") --- .../java/ru/alfabank/steps/DefaultSteps.java | 17 ++++++++++ .../ru/alfabank/steps/DefaultStepsTest.java | 32 +++++++++++++++++++ src/test/resources/application.properties | 3 +- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/alfabank/steps/DefaultSteps.java b/src/main/java/ru/alfabank/steps/DefaultSteps.java index ad32aab1..bfab722b 100644 --- a/src/main/java/ru/alfabank/steps/DefaultSteps.java +++ b/src/main/java/ru/alfabank/steps/DefaultSteps.java @@ -901,7 +901,15 @@ public void checkFieldSymbolsCount(String element, int num) { public void listContainsNumberOfElements(String listName, int quantity) { List listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName); assertTrue(String.format("Число элементов в списке отличается от ожидаемого: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() == quantity); + } + /** + * Производится проверка соответствия числа элементов списка значению из property файла, из переменной сценария или указанному в шаге + */ + @Тогда("^в списке \"([^\"]*)\" содержится количество элементов, равное значению из переменной \"([^\"]*)\"") + public void listContainsNumberFromVariable(String listName, String quantity) { + int numberOfElements = Integer.parseInt(getPropertyOrStringVariableOrValue(quantity)); + listContainsNumberOfElements(listName, numberOfElements); } /** @@ -916,6 +924,15 @@ public void listContainsMoreOrLessElements(String listName, String moreOrLess, i } + /** + * Проверка совпадения значения из переменной и значения и property + */ + @Тогда("^значения из переменной \"([^\"]*)\" и из property файла \"([^\"]*)\" совпадают$") + public void checkIfValueFromVariableEqualPropertyVariable(String envVarible, String propertyVariable) { + assertThat("Переменные " + envVarible + " и " + propertyVariable + " не совпадают", + (String) akitaScenario.getVar(envVarible), equalToIgnoringCase(loadProperty(propertyVariable))); + } + /** * Возвращает значение из property файла, если отсутствует, то из пользовательских переменных, * если и оно отсутствует, то возвращает значение переданной на вход переменной diff --git a/src/test/java/ru/alfabank/steps/DefaultStepsTest.java b/src/test/java/ru/alfabank/steps/DefaultStepsTest.java index a3fb8ab5..0efa7408 100644 --- a/src/test/java/ru/alfabank/steps/DefaultStepsTest.java +++ b/src/test/java/ru/alfabank/steps/DefaultStepsTest.java @@ -721,6 +721,27 @@ public void testListContainsNumberOfElementsNegative() { ds.listContainsNumberOfElements("List", 4); } + @Test + public void testListContainsNumberOfElementsOrContainsFromVariablePositive() { + ds.listContainsNumberFromVariable("List", "3"); + } + + @Test + public void testListContainsNumberOfElementsOrContainsFromVariableAnotherPositive() { + akitaScenario.setVar("variable", "3"); + ds.listContainsNumberFromVariable("List", "variable"); + } + + @Test + public void testListContainsNumberOfElementsOrContainsFromVariableOneMorePositive() { + ds.listContainsNumberFromVariable("List", "var3"); + } + + @Test(expected = AssertionError.class) + public void testListContainsNumberOfElementsOrContainsFromVariableNegative() { + ds.listContainsNumberFromVariable("List", "4"); + } + @Test public void testListContainsMoreOrLessElementsLessPositive(){ ds.listContainsMoreOrLessElements("List", "менее", 4); @@ -741,4 +762,15 @@ public void testListContainsMoreOrLessElementsMoreNegative(){ ds.listContainsMoreOrLessElements("List", "более", 3); } + @Test + public void testCheckIfValueFromVariableEqualPropertyVariablePositive(){ + akitaScenario.setVar("timeout","60000"); + ds.checkIfValueFromVariableEqualPropertyVariable("timeout","waitingAppearTimeout"); + } + + @Test(expected = AssertionError.class) + public void testCheckIfValueFromVariableEqualPropertyVariableNegative(){ + akitaScenario.setVar("timeout","500"); + ds.checkIfValueFromVariableEqualPropertyVariable("timeout","waitingAppearTimeout"); + } } \ No newline at end of file diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index d7a122a5..48244c90 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -31,4 +31,5 @@ textValueInProps=text testingPageTextProps=Serious testing page testScript=alert('privet'); bodyValue={"property":"body"} -var2="2" \ No newline at end of file +var2="2" +var3=3 \ No newline at end of file From 4afa9ff75e372dc419980fb5328fee8c22a51666 Mon Sep 17 00:00:00 2001 From: Stanislav Frolov Date: Fri, 25 May 2018 16:31:01 +0300 Subject: [PATCH 2/2] Add opposite checking steps part3 (#69) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added new step, update selenide to 4.11.4, updated unit tests @Тогда("^элементы списка \"([^\"]*)\" не содержат текст \"([^\"]*)\"$") --- build.gradle | 2 +- .../java/ru/alfabank/steps/DefaultSteps.java | 19 ++++++++++++++--- .../ru/alfabank/steps/DefaultStepsTest.java | 21 ++++++++++++++++--- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index ba5c2824..d659ae29 100644 --- a/build.gradle +++ b/build.gradle @@ -53,7 +53,7 @@ targetCompatibility = 1.8 project.ext { cucumberVersion = '2.4.0' - selenideVersion = '4.11.2' + selenideVersion = '4.11.4' } dependencies { diff --git a/src/main/java/ru/alfabank/steps/DefaultSteps.java b/src/main/java/ru/alfabank/steps/DefaultSteps.java index bfab722b..6b4844c3 100644 --- a/src/main/java/ru/alfabank/steps/DefaultSteps.java +++ b/src/main/java/ru/alfabank/steps/DefaultSteps.java @@ -821,6 +821,20 @@ public void checkListElementsContainsText(String listName, String expectedValue) elementsListText.stream().allMatch(item -> item.contains(value.toLowerCase()))); } + /** + * Проверка, что каждый элемент списка не содержит ожидаемый текст + */ + @Тогда("^элементы списка \"([^\"]*)\" не содержат текст \"([^\"]*)\"$") + public void checkListElementsNotContainsText(String listName, String expectedValue) { + final String value = getPropertyOrValue(expectedValue); + List listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName); + List elementsListText = listOfElementsFromPage.stream() + .map(element -> element.getText().trim().toLowerCase()) + .collect(toList()); + assertFalse(String.format("Элемены списка %s: [%s] содержат текст [%s] ", listName, elementsListText, value), + elementsListText.stream().allMatch(item -> item.contains(value.toLowerCase()))); + } + /** * Ввод в поле случайной последовательности латинских или кириллических букв задаваемой длины */ @@ -869,12 +883,11 @@ public void inputAndSetRandomNumSequence(String elementName, int seqLength, Stri public void checkListTextsByRegExp(String listName, String pattern) { akitaScenario.getCurrentPage().getElementsList(listName).forEach(element -> { String str = akitaScenario.getCurrentPage().getAnyElementText(element); - Assert.assertTrue( - format("Текст '%s' из списка '%s' не соответствует формату регулярного выражения", str, listName), isTextMatches(str, pattern)); + assertTrue(format("Текст '%s' из списка '%s' не соответствует формату регулярного выражения", str, listName), + isTextMatches(str, pattern)); }); } - /** * Выполняется запуск js-скрипта с указанием в js.executeScript его логики * Скрипт можно передать как аргумент метода или значение из application.properties diff --git a/src/test/java/ru/alfabank/steps/DefaultStepsTest.java b/src/test/java/ru/alfabank/steps/DefaultStepsTest.java index 0efa7408..1adb5395 100644 --- a/src/test/java/ru/alfabank/steps/DefaultStepsTest.java +++ b/src/test/java/ru/alfabank/steps/DefaultStepsTest.java @@ -536,20 +536,35 @@ public void selectRandomElementFromListAndSaveVarNegative() { } @Test - public void checkListElementsContainsTextPositive() { + public void testCheckListElementsContainsTextPositive() { ds.checkListElementsContainsText("List2", "item"); } @Test - public void checkListElementsContainsTextPositiveWithProps() { + public void testCheckListElementsContainsTextPositiveWithProps() { ds.checkListElementsContainsText("List2", "itemValueInProps"); } @Test(expected = AssertionError.class) - public void checkListElementsContainsTextNegative() { + public void testCheckListElementsContainsTextNegative() { ds.checkListElementsContainsText("List2", "item1"); } + @Test + public void testCheckListElementsNotContainsTextPositive() { + ds.checkListElementsNotContainsText("List2", "item1"); + } + + @Test(expected = AssertionError.class) + public void testCheckListElementsNotContainsTextNegative() { + ds.checkListElementsNotContainsText("List2", "item"); + } + + @Test(expected = AssertionError.class) + public void testCheckListElementsNotContainsTextNegativeWithProps() { + ds.checkListElementsNotContainsText("List2", "itemValueInProps"); + } + @Test public void checkIfListInnerTextConsistsOfTableElements() { ArrayList types = new ArrayList<>();