Skip to content

Commit

Permalink
Feature/system property loader (#48)
Browse files Browse the repository at this point in the history
* updated tryLoadProperty to look for key in System properties first (add system property reading in login steps #47)
* updated navigation steps to use Selenide open; 
* Deprecated goToSelectedPageByLinkFromPropertyFile(can use goToSelectedPageByLink instead) * renamed step "установить разрешение экрана "([^"]*)" ширина и "([^"]*)" to "установлено разрешение экрана (\d+) х (\d+))"; 
* updated deleteCookies to use Selenide method clearBrowserCookies
  • Loading branch information
GannaChernyshova authored Apr 12, 2018
1 parent 8df64cd commit 9d7c9fb
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

import java.util.Set;

import static com.codeborne.selenide.Selenide.clearBrowserCookies;
import static com.codeborne.selenide.WebDriverRunner.getWebDriver;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase;
Expand All @@ -41,7 +42,7 @@ public class DefaultManageBrowserSteps {
*/
@Когда("^cookies приложения очищены$")
public void deleteCookies(){
getWebDriver().manage().deleteAllCookies();
clearBrowserCookies();
}

/**
Expand Down
44 changes: 35 additions & 9 deletions src/main/java/ru/alfabank/steps/DefaultSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public void refreshPage() {
@Когда("^совершен переход по ссылке \"([^\"]*)\"$")
public void goToUrl(String address) {
String url = resolveVars(getPropertyOrStringVariableOrValue(address));
getWebDriver().get(url);
open(url);
akitaScenario.write("Url = " + url);
}

Expand Down Expand Up @@ -228,12 +228,27 @@ public void checkIfListContainsValueFromField(String variableListName, String el
* Выполняется переход по заданной ссылке.
* Шаг содержит проверку, что после перехода загружена заданная страница.
* Ссылка может передаваться как строка, так и как ключ из application.properties
* Deprecated
*/
@И("^совершен переход на страницу \"([^\"]*)\" по (?:ссылке|ссылке из property файла) \"([^\"]*)\"$")
@Deprecated
@И("^совершен переход на страницу \"([^\"]*)\" по ссылке из property файла \"([^\"]*)\"$")
public void goToSelectedPageByLinkFromPropertyFile(String pageName, String urlOrName) {
String address = loadProperty(urlOrName, resolveVars(urlOrName));
akitaScenario.write(" url = " + address);
WebDriverRunner.getWebDriver().get(address);
open(address);
loadPage(pageName);
}

/**
* Выполняется переход по заданной ссылке.
* Шаг содержит проверку, что после перехода загружена заданная страница.
* Ссылка может передаваться как строка, так и как ключ из application.properties
*/
@И("^совершен переход на страницу \"([^\"]*)\" по ссылке \"([^\"]*)\"$")
public void goToSelectedPageByLink(String pageName, String urlOrName) {
String address = loadProperty(urlOrName, resolveVars(urlOrName));
akitaScenario.write(" url = " + address);
open(address);
loadPage(pageName);
}

Expand All @@ -259,7 +274,7 @@ public void blockDisappeared(String nameOfPage) {
@И("^выполнено нажатие на клавиатуре \"([^\"]*)\"$")
public void pushButtonOnKeyboard(String buttonName) {
Keys key = Keys.valueOf(buttonName.toUpperCase());
WebDriverRunner.getWebDriver().switchTo().activeElement().sendKeys(key);
switchTo().activeElement().sendKeys(key);
}

/**
Expand All @@ -276,7 +291,7 @@ public void pressKeyCombination(List<String> keyNames) {
.map(this::getKeyOrCharacter)
.collect(Collectors.toList());
String combination = Keys.chord(listKeys);
WebDriverRunner.getWebDriver().switchTo().activeElement().sendKeys(combination);
switchTo().activeElement().sendKeys(combination);
}

private CharSequence getKeyOrCharacter(String key) {
Expand Down Expand Up @@ -320,7 +335,9 @@ public void fieldInputIsEmpty(String fieldName) {

/**
* Устанавливает размеры окна браузера
* Deprecated
*/
@Deprecated
@И("^установить разрешение экрана \"([^\"]*)\" ширина и \"([^\"]*)\" высота$")
public void setWindowSize(String widthRaw, String heightRaw) {
int width = Integer.valueOf(widthRaw);
Expand All @@ -329,12 +346,21 @@ public void setWindowSize(String widthRaw, String heightRaw) {
akitaScenario.write("Установлены размеры окна браузера: ширина " + widthRaw + " высота" + heightRaw);
}

/**
* Устанавливает размеры окна браузера
*/
@И("^установлено разрешение экрана (\\d+) х (\\d+)$")
public void setBrowserWindowSize(int width, int height) {
getWebDriver().manage().window().setSize(new Dimension(width, height));
akitaScenario.write("Установлены размеры окна браузера: ширина " + width + " высота" + height);
}

/**
* Разворачивает окно с браузером на весь экран
*/
@Если("^окно развернуто на весь экран$")
public void expandWindowToFullScreen() {
WebDriverRunner.getWebDriver().manage().window().maximize();
getWebDriver().manage().window().maximize();
}

/**
Expand Down Expand Up @@ -804,11 +830,11 @@ public String getPropertyOrStringVariableOrValue(String propertyNameOrVariableNa
String propertyValue = tryLoadProperty(propertyNameOrVariableNameOrValue);
String variableValue = (String) akitaScenario.tryGetVar(propertyNameOrVariableNameOrValue);

boolean propertyCheck = checkResult(propertyValue, "Переменная из property файла");
boolean variableCheck = checkResult(variableValue, "Переменная сценария");
boolean propertyCheck = checkResult(propertyValue, "Переменная из property файла");
boolean variableCheck = checkResult(variableValue, "Переменная сценария");
checkResult(propertyNameOrVariableNameOrValue, "Переменная переданная на вход");

return propertyCheck ? propertyValue : (variableCheck ? variableValue : propertyNameOrVariableNameOrValue);
return propertyCheck ? propertyValue : (variableCheck ? variableValue : propertyNameOrVariableNameOrValue);
}

private boolean checkResult(String result, String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ public static Integer loadPropertyInt(String propertyName, Integer defaultValue)

/**
* Вспомогательный метод, возвращает значение свойства по имени.
* Сначала поиск в property-файле, если указано системное свойство "profile"
* Сначала поиск в System переменным,
* затем в property-файле, если указано системное свойство "profile"
* Если ничего не найдено, поиск в /application.properties
*
* @param propertyName название свойства
Expand All @@ -142,8 +143,10 @@ public static Integer loadPropertyInt(String propertyName, Integer defaultValue)
public static String tryLoadProperty(String propertyName) {
String value = null;
if (!Strings.isNullOrEmpty(propertyName)) {
value = PROFILE_PROPERTIES.getProperty(propertyName);
String systemProperty = loadSystemPropertyOrDefault(propertyName, propertyName);
if(!propertyName.equals(systemProperty)) return systemProperty;

value = PROFILE_PROPERTIES.getProperty(propertyName);
if (null == value) {
value = PROPERTIES.getProperty(propertyName);
}
Expand Down
18 changes: 14 additions & 4 deletions src/test/java/ru/alfabank/steps/DefaultStepsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public static void setup() {

@Before
public void prepare() {
ds.goToSelectedPageByLinkFromPropertyFile("AkitaPageMock", akitaScenario.getVar("Page").toString());
ds.goToSelectedPageByLink("AkitaPageMock", akitaScenario.getVar("Page").toString());
}

@AfterClass
Expand All @@ -88,7 +88,7 @@ public void checkCurrentURLNegative() {
@Test
public void setWindowSizeSimple() {
Dimension expectedDimension = new Dimension(800, 600);
ds.setWindowSize("800", "600");
ds.setBrowserWindowSize(800, 600);
Dimension actualDimension = WebDriverRunner.getWebDriver().manage().window().getSize();
assertThat(expectedDimension, equalTo(actualDimension));
}
Expand Down Expand Up @@ -498,8 +498,8 @@ public void testGetPropertyOrStringVariableOrValueFromProperty() {

@Test
public void testGetPropertyOrStringVariableOrValueFromScopedVariable() {
akitaScenario.setVar("123", "shouldLoadMe");
assertThat(ds.getPropertyOrStringVariableOrValue("123"),
akitaScenario.setVar("akita.url", "shouldLoadMe");
assertThat(ds.getPropertyOrStringVariableOrValue("akita.url"),
equalTo("shouldLoadMe"));
}

Expand All @@ -509,6 +509,16 @@ public void testGetPropertyOrStringVariableOrValueFromValue() {
equalTo("getPropertyOrVariableOrValueTestValue"));
}

@Test
public void testGetPropertyOrStringVariableOrValueFromSystemVariable() {
String propertyName = "akita.url";
String expectedValue = "http://url";
System.setProperty(propertyName, expectedValue);
String actualValue = ds.getPropertyOrStringVariableOrValue(propertyName);
System.clearProperty(propertyName);
assertThat(actualValue, equalTo(expectedValue));
}

@Test
public void testSetRandomCharSequenceCyrillic() {
ds.setRandomCharSequence("NormalField", 4, "кириллице");
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/ru/alfabank/steps/PageElementTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public static void setup() {

@Before
public void prepare() {
ds.goToSelectedPageByLinkFromPropertyFile("AkitaPageMock", akitaScenario.getVar("Page").toString());
ds.goToSelectedPageByLink("AkitaPageMock", akitaScenario.getVar("Page").toString());
}

@AfterClass
Expand Down

0 comments on commit 9d7c9fb

Please sign in to comment.