Skip to content

Commit

Permalink
Merge branch 'master' into feature/screenshots
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/main/java/ru/alfabank/steps/DefaultSteps.java
  • Loading branch information
GannaChernyshova committed Apr 25, 2018
2 parents bb544bd + 03a1057 commit 88021b5
Show file tree
Hide file tree
Showing 7 changed files with 114 additions and 21 deletions.
15 changes: 14 additions & 1 deletion src/main/java/ru/alfabank/alfatest/cucumber/api/AkitaPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import java.lang.reflect.Field;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Stream;

import static java.lang.String.format;
Expand Down Expand Up @@ -154,6 +155,18 @@ protected void isAppeared() {
String timeout = loadProperty("waitingAppearTimeout", WAITING_APPEAR_TIMEOUT_IN_MILLISECONDS);
getPrimaryElements().parallelStream().forEach(elem ->
elem.waitUntil(Condition.appear, Integer.valueOf(timeout)));
eachForm(AkitaPage::isAppeared);
}

private void eachForm(Consumer<AkitaPage> func) {
Arrays.stream(getClass().getDeclaredFields())
.filter(f -> f.getDeclaredAnnotation(Optional.class) == null)
.forEach(f -> {
if (AkitaPage.class.isAssignableFrom(f.getType())){
AkitaPage akitaPage = AkitaScenario.getInstance().getPage((Class<? extends AkitaPage>)f.getType());
func.accept(akitaPage);
}
});
}

/**
Expand Down Expand Up @@ -250,7 +263,7 @@ private Map<String, Object> readNamedElements() {
checkNamedAnnotations();
return Arrays.stream(getClass().getDeclaredFields())
.filter(f -> f.getDeclaredAnnotation(Name.class) != null)
.peek(f -> {
.peek((Field f) -> {
if (!SelenideElement.class.isAssignableFrom(f.getType())
&& !List.class.isAssignableFrom(f.getType())
&& !AkitaPage.class.isAssignableFrom(f.getType()))
Expand Down
37 changes: 36 additions & 1 deletion src/main/java/ru/alfabank/steps/DefaultSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public class DefaultSteps {
public void saveValueToVar(String propertyVariableName, String variableName) {
propertyVariableName = loadProperty(propertyVariableName);
akitaScenario.setVar(variableName, propertyVariableName);
akitaScenario.write("Знечение сохраненной переменной " + propertyVariableName);
akitaScenario.write("Значение сохраненной переменной " + propertyVariableName);
}

/**
Expand Down Expand Up @@ -740,6 +740,19 @@ public void selectRandomElementFromList(String listName) {
akitaScenario.write("Выбран случайный элемент: " + listOfElementsFromPage);
}

/**
* Выбор из списка со страницы любого случайного элемента и сохранение его значения в переменную
*/
@Когда("^выбран любой элемент из списка \"([^\"]*)\" и его значение сохранено в переменную \"([^\"]*)\"$")
public void selectRandomElementFromListAndSaveVar(String listName, String varName) {
List<SelenideElement> listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName);
SelenideElement element = listOfElementsFromPage.get(getRandom(listOfElementsFromPage.size()));
element.shouldBe(Condition.visible).click();
akitaScenario.setVar(varName, akitaScenario.getCurrentPage().getAnyElementText(element).trim());
akitaScenario.write(String.format("Переменной [%s] присвоено значение [%s] из списка [%s]", varName,
akitaScenario.getVar(varName), listName));
}

/**
* Выбор n-го элемента из списка со страницы
* Нумерация элементов начинается с 1
Expand Down Expand Up @@ -820,6 +833,28 @@ public void checkFieldSymbolsCount(String element, int num) {
assertEquals(String.format("Неверное количество символов. Ожидаемый результат: %s, текущий результат: %s", num, length), num, length);
}

/**
* Производится проверка соответствия числа элементов списка значению, указанному в шаге
*/
@Тогда("^в списке \"([^\"]*)\" содержится (\\d+) (?:элемент|элементов|элемента)")
public void listContainsNumberOfElements(String listName, int quantity) {
List<SelenideElement> listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName);
assertTrue(String.format("Число элементов в списке отличается от ожидаемого: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() == quantity);

}

/**
* Производится сопоставление числа элементов списка и значения, указанного в шаге
*/
@Тогда("^в списке \"([^\"]*)\" содержится (более|менее) (\\d+) (?:элементов|элемента)")
public void listContainsMoreOrLessElements(String listName, String moreOrLess, int quantity) {
List<SelenideElement> listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName);
if ("более".equals(moreOrLess)) {
assertTrue(String.format("Число элементов списка меньше ожидаемого: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() > quantity);
} else assertTrue(String.format("Число элементов списка превышает ожидаемое: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() < quantity);

}

/**
* Возвращает значение из property файла, если отсутствует, то из пользовательских переменных,
* если и оно отсутствует, то возвращает значение переданной на вход переменной
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import net.lightbody.bmp.proxy.BlacklistEntry;

import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down Expand Up @@ -53,12 +54,12 @@ public void fillBlackList(List<BlacklistEntry> blacklistEntries) {
}
}

@SneakyThrows(IOException.class)
@SneakyThrows({IOException.class, URISyntaxException.class})
private String getResource() {
ClassLoader classLoader = getClass().getClassLoader();
byte[] file = new byte[0];
try {
Path path = Paths.get(classLoader.getResource("").getPath() + "../resources/" + fileName);
Path path = Paths.get(classLoader.getResource("").toURI().getPath() + "../resources/" + fileName);
if(Files.exists(path)) {
file = Files.readAllBytes(path);
return new String(file, "UTF-8");
Expand Down
1 change: 1 addition & 0 deletions src/test/java/ru/alfabank/AkitaPageMock.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,5 @@ public class AkitaPageMock extends AkitaPage {
@FindBy(className = "searchBlock")
@Name("SearchBlock")
public SearchFieldMock searchField;

}
22 changes: 11 additions & 11 deletions src/test/java/ru/alfabank/other/AkitaPageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@
import static ru.alfabank.alfatest.cucumber.api.AkitaPage.getButtonFromListByName;

public class AkitaPageTest {
private static AkitaPageMock alfaPageMock;
private static AkitaPageMock akitaPageMock;
private static AkitaPage page;

@BeforeClass
public static void setup() {
alfaPageMock = new AkitaPageMock();
akitaPageMock = new AkitaPageMock();
AkitaScenario akitaScenario = AkitaScenario.getInstance();
DefaultSteps ds = new DefaultSteps();
Scenario scenario = new StubScenario();
Expand Down Expand Up @@ -73,42 +73,42 @@ public void getBlockNegative() {

@Test(expected = NullPointerException.class)
public void getElementNegative() {
alfaPageMock.getElement("test");
akitaPageMock.getElement("test");
}

@Test(expected = NullPointerException.class)
public void getElementsListNegative() {
alfaPageMock.getElementsList("test");
akitaPageMock.getElementsList("test");
}

@Test(expected = NullPointerException.class)
public void getAnyElementTextNegative() {
alfaPageMock.getAnyElementText("test");
akitaPageMock.getAnyElementText("test");
}

@Test(expected = NullPointerException.class)
public void getAnyElementsListTextsNegative() {
alfaPageMock.getAnyElementsListTexts("test");
akitaPageMock.getAnyElementsListTexts("test");
}

@Test
public void appearedPositive() {
assertThat(alfaPageMock.appeared(), equalTo(alfaPageMock));
assertThat(akitaPageMock.appeared(), equalTo(akitaPageMock));
}

@Test
public void disappearedNegative() {
assertThat(alfaPageMock.disappeared(), equalTo(alfaPageMock));
assertThat(akitaPageMock.disappeared(), equalTo(akitaPageMock));
}

@Test(expected = NullPointerException.class)
public void waitElementsUntilNegative() {
alfaPageMock.waitElementsUntil(Condition.appear, 1, "test");
akitaPageMock.waitElementsUntil(Condition.appear, 1, "test");
}

@Test(expected = NullPointerException.class)
public void getButtonFromListByNameNegative() {
SelenideElement selenideElementMock = alfaPageMock.getMockCss();
SelenideElement selenideElementMock = akitaPageMock.getMockCss();
List<SelenideElement> list = new LinkedList<>();
list.add(selenideElementMock);
getButtonFromListByName(list, "test");
Expand Down Expand Up @@ -143,7 +143,7 @@ public void waitElementsUntilPositive() {
@Ignore
@Test
public void getButtonFromListByNamePositive() {
SelenideElement selenideElement = alfaPageMock.getGoodButton();
SelenideElement selenideElement = akitaPageMock.getGoodButton();
List<SelenideElement> list = new LinkedList<>();
list.add(selenideElement);
assertThat(getButtonFromListByName(list, "GoodButton"), is(notNullValue()));
Expand Down
12 changes: 6 additions & 6 deletions src/test/java/ru/alfabank/other/PagesTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,18 @@

public class PagesTest {
private static Pages pages;
private static AkitaPageMock alfaPageMock;
private static AkitaPageMock akitaPageMock;

@BeforeClass
public static void init() {
pages = new Pages();
alfaPageMock = new AkitaPageMock();
akitaPageMock = new AkitaPageMock();
}

@Test
public void getSetCurrentPagePositive() {
pages.setCurrentPage(alfaPageMock);
assertThat(pages.getCurrentPage(), equalTo(alfaPageMock));
pages.setCurrentPage(akitaPageMock);
assertThat(pages.getCurrentPage(), equalTo(akitaPageMock));
}

@Test(expected = IllegalStateException.class)
Expand All @@ -48,8 +48,8 @@ public void setCurrentPageNegative() {

@Test
public void getPutPositive() {
pages.put("Test", alfaPageMock);
assertThat(pages.get("Test"), equalTo(alfaPageMock));
pages.put("Test", akitaPageMock);
assertThat(pages.get("Test"), equalTo(akitaPageMock));
}

@Test(expected = IllegalArgumentException.class)
Expand Down
43 changes: 43 additions & 0 deletions src/test/java/ru/alfabank/steps/DefaultStepsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import static com.codeborne.selenide.Selenide.sleep;
import static com.codeborne.selenide.WebDriverRunner.getWebDriver;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.equalTo;
import static ru.alfabank.tests.core.helpers.PropertyLoader.loadValueFromFileOrPropertyOrDefault;

Expand Down Expand Up @@ -444,6 +445,18 @@ public void selectRandomElementFromListPositive() {
ds.selectRandomElementFromList("List");
}

@Test
public void selectRandomElementFromListAndSaveVarPositive() {
ds.selectRandomElementFromListAndSaveVar("List", "test");
assertThat(akitaScenario.tryGetVar("test"), anyOf(equalTo("One"),
equalTo("Two"), equalTo("Three")));
};

@Test(expected = IllegalArgumentException.class)
public void selectRandomElementFromListAndSaveVarNegative() {
ds.selectRandomElementFromListAndSaveVar("NormalField", "test");
}

@Test
public void checkListElementsContainsTextPositive() {
ds.checkListElementsContainsText("List2", "item");
Expand Down Expand Up @@ -560,6 +573,7 @@ public void testCheckPageTitleFailure() {
public void testStringOrLoadFilePropertyOrDefault2() {
assertThat(loadValueFromFileOrPropertyOrDefault("testScript"), equalTo("alert('privet');"));
}

@Test
public void testTestScript() {
ds.executeJsScript("HIDEnSHOW()");
Expand All @@ -581,5 +595,34 @@ public void testCheckListTextsByRegExpNegative() {
ds.checkListTextsByRegExp("List", "[0-9]*");
}

@Test
public void testListContainsNumberOfElementsPositive() {
ds.listContainsNumberOfElements("List", 3);
}

@Test(expected = AssertionError.class)
public void testListContainsNumberOfElementsNegative() {
ds.listContainsNumberOfElements("List", 4);
}

@Test
public void testListContainsMoreOrLessElementsLessPositive(){
ds.listContainsMoreOrLessElements("List", "менее", 4);
}

@Test
public void testListContainsMoreOrLessElementsMorePositive(){
ds.listContainsMoreOrLessElements("List", "более", 2);
}

@Test(expected = AssertionError.class)
public void testListContainsMoreOrLessElementsLessNegative(){
ds.listContainsMoreOrLessElements("List", "менее", 3);
}

@Test(expected = AssertionError.class)
public void testListContainsMoreOrLessElementsMoreNegative(){
ds.listContainsMoreOrLessElements("List", "более", 3);
}

}

0 comments on commit 88021b5

Please sign in to comment.