Skip to content

Add opposite checking steps part2 #68

Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ targetCompatibility = 1.8

project.ext {
cucumberVersion = '2.4.0'
selenideVersion = '4.11.2'
selenideVersion = '4.11.4'
}

dependencies {
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/ru/alfabank/steps/DefaultSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,17 @@ public void checkElemClassContainsExpectedValue(String elementName, String expec
, currentClassValue.toLowerCase(), containsString(expectedClassValue.toLowerCase()));
}

/**
* Проверка, что элемент не содержит указанный класс
*/
@Тогда("^элемент \"([^\"]*)\" не содержит класс со значением \"(.*)\"$")
public void checkElemClassNotContainsExpectedValue(String elementName, String expectedClassValue) {
SelenideElement currentElement = akitaScenario.getCurrentPage().getElement(elementName);
assertThat(String.format("Элемент [%s] содержит класс со значением [%s]", elementName, expectedClassValue),
currentElement.getAttribute("class").toLowerCase(),
Matchers.not(containsString(getPropertyOrStringVariableOrValue(expectedClassValue).toLowerCase())));
}

/**
* Выполняется переход в конец страницы
*/
Expand Down Expand Up @@ -651,6 +662,15 @@ public void fieldIsDisable(String elementName) {
assertTrue(String.format("Элемент [%s] доступен для редактирования", elementName), element.is(Condition.disabled));
}

/**
* Проверка, что поле редактируемо
*/
@Тогда("^(?:поле|элемент) \"([^\"]*)\" (?:доступно|доступен) для редактирования$")
public void fieldIsEnabled(String elementName) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

излишне. когда в поле вводится значение неявно происходит проверка того, что оно редактируемо. соответственно, поле можно и желательно проверять введя туда тест и проверив, что он отобразился как ожидалось.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удалил

SelenideElement element = akitaScenario.getCurrentPage().getElement(elementName);
assertFalse(String.format("Элемент [%s] недоступен для редактирования", elementName), element.is(Condition.disabled));
}

/**
* Проверка, что список со страницы совпадает со списком из переменной
* без учёта порядка элементов
Expand All @@ -663,6 +683,18 @@ public void compareListFromUIAndFromVariable(String listName, String listVariabl
assertThat(String.format("Список со страницы [%s] не совпадает с ожидаемым списком из переменной [%s]", listName, listVariable), actualList, equalTo(expectedList));
}

/**
* Проверка, что список со страницы не совпадает со списком из переменной
* без учёта порядка элементов
*/
@SuppressWarnings("unchecked")
@Тогда("^список \"([^\"]*)\" со страницы не совпадает со списком \"([^\"]*)\"$")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

кажется это не очень конкретный шаг. если хотя бы по одному элементу произойдет не совпадение - шаг пройдет и будет не понятно, это корректное поведение или нет. проверками того, что список соответствует ожидаемому или содержит/не содержит элемент можно покрыть все нужные кейсы

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

УДалил

public void compareListFromPageAndFromVariableNotEquals(String listName, String listVariable) {
HashSet<String> expectedList = new HashSet<>((List<String>) akitaScenario.getVar(listVariable));
HashSet<String> actualList = new HashSet<>(akitaScenario.getCurrentPage().getAnyElementsListTexts(listName));
assertThat(String.format("Список со страницы [%s] совпадает с ожидаемым списком из переменной [%s]", listName, listVariable), actualList, Matchers.not(equalTo(expectedList)));
}

/**
* Проверка, что на странице не отображаются редактируемые элементы, такие как:
* -input
Expand Down
6 changes: 5 additions & 1 deletion src/test/java/ru/alfabank/AkitaPageMock.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
@Getter
@Name("AkitaPageMock")
public class AkitaPageMock extends AkitaPage {

@FindBy(id = "mockId")
@Name("mockId")
public SelenideElement mockId;
Expand Down Expand Up @@ -122,4 +123,7 @@ public class AkitaPageMock extends AkitaPage {
@Name("SearchBlock")
public SearchFieldMock searchField;

}
@FindBy(xpath = "//*[text()='Подписать и отправить']/parent::button")
@Name("Кнопка Подписать и отправить")
public SelenideElement signAndSendToBankButton;
}
137 changes: 134 additions & 3 deletions src/test/java/ru/alfabank/steps/DefaultStepsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -360,25 +360,117 @@ public void testActualValueContainsSubstringPositiveWithProps() {
}

@Test
public void buttonIsNotActivePositive() {
public void testButtonIsNotActivePositive() {
ds.buttonIsNotActive("DisabledButton");
}

@Test
public void fieldIsDisablePositive() {
public void testButtonIsNotActiveAnotherPositive() {
ds.buttonIsNotActive("Кнопка Подписать и отправить");
}

@Test(expected = AssertionError.class)
public void testButtonIsNotActiveNegative() {
ds.buttonIsNotActive("Войти");
}

@Test(expected = AssertionError.class)
public void testButtonIsNotActiveOneMoreNegative() {
ds.buttonIsNotActive("Link");
}

@Test
public void testFieldIsDisablePositive() {
ds.fieldIsDisable("DisabledField");
}

@Test(expected = AssertionError.class)
public void testFieldIsDisableNegative() {
ds.fieldIsDisable("NormalField");
}

@Test
public void compareListFromUIAndFromVariableTest() {
public void testFieldIsEnabledPositive() {
ds.fieldIsEnabled("NormalField");
}

@Test(expected = AssertionError.class)
public void testFieldIsEnabledNegative() {
ds.fieldIsEnabled("DisabledField");
}

@Test
public void testCompareListFromUIAndFromVariablePositive() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("One");
arrayList.add("Two");
arrayList.add("Three");
akitaScenario.setVar("qwerty", arrayList);
ds.compareListFromUIAndFromVariable("List", "qwerty");
}

@Test(expected = AssertionError.class)
public void testCompareListFromUIAndFromVariableNegative() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("Ten");
arrayList.add("One");
arrayList.add("Two");
arrayList.add("Three");
akitaScenario.setVar("qwerty", arrayList);
ds.compareListFromUIAndFromVariable("List", "qwerty");
}

@Test(expected = IllegalArgumentException.class)
public void testCompareListFromUIAndFromVariableAnotherNegative() {
ds.compareListFromUIAndFromVariable("List", null);
}

@Test(expected = IllegalArgumentException.class)
public void testCompareListFromUIAndFromVariableOneMoreNegative() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("One");
arrayList.add("Two");
arrayList.add("Three");
akitaScenario.setVar("qwerty", arrayList);
ds.compareListFromUIAndFromVariable(null, "qwerty");
}

@Test
public void testCompareListFromPageAndFromVariableNotEqualsPositive() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("Ten");
arrayList.add("One");
arrayList.add("Two");
arrayList.add("Three");
akitaScenario.setVar("qwerty", arrayList);
ds.compareListFromPageAndFromVariableNotEquals("List", "qwerty");
}

@Test(expected = AssertionError.class)
public void testCompareListFromPageAndFromVariableNotEqualsNegative() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("One");
arrayList.add("Two");
arrayList.add("Three");
akitaScenario.setVar("qwerty", arrayList);
ds.compareListFromPageAndFromVariableNotEquals("List", "qwerty");
}

@Test(expected = IllegalArgumentException.class)
public void testCompareListFromPageAndFromVariableNotEqualsAnotherNegative() {
ds.compareListFromPageAndFromVariableNotEquals("List", null);
}

@Test(expected = IllegalArgumentException.class)
public void testCompareListFromPageAndFromVariableNotEqualsOneMoreNegative() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("One");
arrayList.add("Two");
arrayList.add("Three");
akitaScenario.setVar("qwerty", arrayList);
ds.compareListFromPageAndFromVariableNotEquals(null, "qwerty");
}

@Test
public void openReadOnlyFormPositive() {
ds.goToSelectedPageByLinkFromPropertyFile("RedirectionPage",
Expand Down Expand Up @@ -437,6 +529,16 @@ public void clickableFieldTest() {
ds.clickableField("SUPERBUTTON");
}

@Test
public void testButtonIsActiveAnotherPositive() {
ds.clickableField("Link");
}

@Test(expected = AssertionError.class)
public void testButtonIsActiveNegative() {
ds.clickableField("Кнопка Подписать и отправить");
}

@Test
public void scrollDownSimple() {
ds.scrollDown();
Expand Down Expand Up @@ -741,4 +843,33 @@ public void testListContainsMoreOrLessElementsMoreNegative(){
ds.listContainsMoreOrLessElements("List", "более", 3);
}

@Test
public void testCheckElemClassContainsExpectedValuePositive() {
ds.checkElemClassContainsExpectedValue("Кнопка Подписать и отправить", "disabled");
}

@Test(expected = AssertionError.class)
public void testCheckElemClassContainsExpectedValueNegative() {
ds.checkElemClassContainsExpectedValue("Кнопка Подписать и отправить", "enabled");
}

@Test(expected = AssertionError.class)
public void testCheckElemClassContainsExpectedValueAnotherNegative() {
ds.checkElemClassContainsExpectedValue("Войти", "enabled");
}

@Test
public void testCheckElemClassNotContainsExpectedValuePositive() {
ds.checkElemClassNotContainsExpectedValue("Кнопка Подписать и отправить", "enabled");
}

@Test
public void testCheckElemClassNotContainsExpectedValueAnotherPositive() {
ds.checkElemClassNotContainsExpectedValue("Войти", "enabled");
}

@Test(expected = AssertionError.class)
public void testCheckElemClassNotContainsExpectedValueNegative() {
ds.checkElemClassNotContainsExpectedValue("Кнопка Подписать и отправить", "disabled");
}
}
1 change: 1 addition & 0 deletions src/test/resources/AkitaPageMock.html
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,6 @@
<input type="submit" id="submit">
</form>
<div id="innerText1">inner<p> text </p></div>
<div class="action-buttons__send-to-bank"><button role="button" type="button" class="button button_disabled button_view_extra button_size_l button_width_available button_theme_alfa-on-white" tabindex="-1" disabled=""><span class="button__text">Подписать и отправить</span></button></div>
</body>
</html>