Skip to content

Commit

Permalink
added new steps checkPageTitle, switchToTheNextTab, executeJsScript, …
Browse files Browse the repository at this point in the history
…checkFieldSymbolsCount (#34)
  • Loading branch information
GannaChernyshova authored Feb 27, 2018
1 parent 2331173 commit 5de9adf
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 31 deletions.
31 changes: 31 additions & 0 deletions src/main/java/ru/alfabank/steps/DefaultManageBrowserSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,16 @@
package ru.alfabank.steps;

import cucumber.api.java.ru.Когда;
import cucumber.api.java.ru.Тогда;
import lombok.extern.slf4j.Slf4j;
import org.openqa.selenium.Cookie;
import ru.alfabank.alfatest.cucumber.api.AkitaScenario;

import java.util.Set;

import static com.codeborne.selenide.WebDriverRunner.getWebDriver;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase;
import static ru.alfabank.steps.DefaultApiSteps.resolveVars;

/**
Expand Down Expand Up @@ -69,4 +72,32 @@ public void replaceCookie(String cookieName, String cookieValue){
String valueCookie = resolveVars(cookieValue);
getWebDriver().manage().addCookie(new Cookie(nameCookie, valueCookie));
}

/**
* Переключение на следующую вкладку браузера
*/
@Когда("выполнено переключение на следующую вкладку")
public void switchToTheNextTab() {
String nextWindowHandle = nextWindowHandle();
getWebDriver().switchTo().window(nextWindowHandle);
}

/**
* Производится сравнение заголовка страницы со значением, указанным в шаге
*/
@Тогда("^заголовок страницы равен \"([^\"]*)\"$")
public void checkPageTitle(String pageTitleName) {
String currentTitle = getWebDriver().getTitle().trim();
assertThat(String.format("Заголовок страницы не совпадает с ожидаемым значением. Ожидаемый результат: %s, текущий результат: %s", pageTitleName, currentTitle),
pageTitleName, equalToIgnoringCase(currentTitle));
}

private String nextWindowHandle() {
String currentWindowHandle = getWebDriver().getWindowHandle();
Set<String> windowHandles = getWebDriver().getWindowHandles();
windowHandles.remove(currentWindowHandle);

return windowHandles.iterator().next();
}

}
21 changes: 21 additions & 0 deletions src/main/java/ru/alfabank/steps/DefaultSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package ru.alfabank.steps;

import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.SelenideElement;
import com.codeborne.selenide.WebDriverRunner;
import cucumber.api.java.ru.*;
Expand Down Expand Up @@ -48,6 +49,7 @@
import static org.junit.Assert.*;
import static ru.alfabank.steps.DefaultApiSteps.resolveVars;
import static ru.alfabank.tests.core.helpers.PropertyLoader.*;
import static ru.alfabank.tests.core.helpers.PropertyLoader.loadFilePropertyOrDefault;

/**
* В akitaScenario используется хранилище переменных. Для сохранения/изъятия переменных используются методы setVar/getVar
Expand Down Expand Up @@ -749,6 +751,25 @@ public void setRandomCharSequence(String elementName, int seqLength, String lang
valueInput.setValue(charSeq);
}

/**
* Выполняется запуск js-скрипта с указанием в js.executeScript его логики
* Скрипт можно передать как аргумент метода или значение из application.properties
*/
@Когда("^выполнен js-скрипт \"([^\"]*)\"")
public void executeJsScript(String scriptName) {
String content = loadFilePropertyOrDefault(scriptName);
Selenide.executeJavaScript(content);
}

/**
* Производится проверка количества символов в поле со значением, указанным в шаге
*/
@Тогда("^в поле \"([^\"]*)\" содержится (\\d+) символов$")
public void checkFieldSymbolsCount(String element, int num) {
int length = akitaScenario.getCurrentPage().getAnyElementText(element).length();
assertEquals(String.format("Неверное количество символов. Ожидаемый результат: %s, текущий результат: %s", num, length), num, length);
}

/**
* Возвращает значение из property файла, если отсутствует, то из пользовательских переменных,
* если и оно отсутствует, то возвращает значение переданной на вход переменной
Expand Down
23 changes: 23 additions & 0 deletions src/main/java/ru/alfabank/tests/core/helpers/PropertyLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@
import com.google.common.base.Strings;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Properties;

Expand Down Expand Up @@ -196,5 +199,25 @@ private static Properties getProfilePropertiesInstance() {
}
return instance;
}

/**
* Вспомогательный метод, возвращает содержимое файла по указанному пути
* или из переменной с указанным названием
* pathToScripts - переменная, через которую можно задать путь к файлу из которого нужно прочитать данные
*/
@SneakyThrows
public static String loadFilePropertyOrDefault(String valueToFind) {
String propertyValue = tryLoadProperty(valueToFind);
if (StringUtils.isNotBlank(propertyValue)) {
return propertyValue;
} else {
try {
Path path = Paths.get(loadProperty("pathToScripts", "/src/main/java/"), valueToFind);
return new String(Files.readAllBytes(path), "UTF-8");
} catch (Exception e) {
return valueToFind;
}
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@

import com.codeborne.selenide.WebDriverRunner;
import cucumber.api.Scenario;
import org.junit.*;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriver.Options;
import ru.alfabank.StubScenario;
import ru.alfabank.alfatest.cucumber.api.AkitaEnvironment;
import ru.alfabank.alfatest.cucumber.api.AkitaScenario;
import org.openqa.selenium.WebDriver.Options;

import java.util.HashSet;
import java.util.Set;
Expand Down Expand Up @@ -70,7 +72,7 @@ public void saveCookieToVarTest() {
}

@Test
public void saveAllCookiesTest(){
public void saveAllCookiesTest() {
Set set = new HashSet();
when(webDriver.manage().getCookies()).thenReturn(set);
dmbs.saveAllCookies("var2");
Expand All @@ -82,4 +84,5 @@ public void replaceCookieTest() {
dmbs.replaceCookie("testName", "12qwe");
verify(webDriver.manage(), times(1)).addCookie(new Cookie("testName", "12qwe"));
}

}
96 changes: 68 additions & 28 deletions src/test/java/ru/alfabank/steps/DefaultStepsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.codeborne.selenide.WebDriverRunner;
import com.codeborne.selenide.ex.ElementShouldNot;
import cucumber.api.Scenario;
import org.hamcrest.core.IsEqual;
import org.junit.*;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
Expand All @@ -31,20 +32,25 @@
import java.util.ArrayList;
import java.util.List;

import static com.codeborne.selenide.Selenide.executeJavaScript;
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.equalTo;
import static ru.alfabank.tests.core.helpers.PropertyLoader.loadFilePropertyOrDefault;

public class DefaultStepsTest {
private static DefaultSteps ds;
private static AkitaScenario akitaScenario;
private static DefaultManageBrowserSteps dmbs;

@BeforeClass
public static void setup() {
akitaScenario = AkitaScenario.getInstance();
Scenario scenario = new StubScenario();
akitaScenario.setEnvironment(new AkitaEnvironment(scenario));
ds = new DefaultSteps();
dmbs = new DefaultManageBrowserSteps();
String inputFilePath = "src/test/resources/AkitaPageMock.html";
String url = new File(inputFilePath).getAbsolutePath();
akitaScenario.setVar("Page", "file://" + url);
Expand Down Expand Up @@ -126,7 +132,7 @@ public void saveValueToVarPositive() {
public void clickOnElementPositive() {
ds.clickOnElement("GoodButton");
assertThat(akitaScenario.getPage("AkitaPageMock").getElement("GoodButton").isEnabled(),
equalTo(false));
equalTo(false));
}

@Test
Expand Down Expand Up @@ -172,27 +178,27 @@ public void pushButtonOnKeyboardSimple() {
public void setFieldValuePositive() {
ds.setFieldValue("NormalField", "testSetFieldValue");
assertThat(akitaScenario.getEnvironment()
.getPage("AkitaPageMock")
.getAnyElementText("NormalField"),
equalTo("testSetFieldValue"));
.getPage("AkitaPageMock")
.getAnyElementText("NormalField"),
equalTo("testSetFieldValue"));
}

@Test
public void setFieldValuePositiveWithProps() {
ds.setFieldValue("NormalField", "testValueInProps");
assertThat(akitaScenario.getEnvironment()
.getPage("AkitaPageMock")
.getAnyElementText("NormalField"),
equalTo("test"));
.getPage("AkitaPageMock")
.getAnyElementText("NormalField"),
equalTo("test"));
}

@Test
public void cleanFieldPositive() {
ds.cleanField("TextField");
assertThat(akitaScenario.getEnvironment()
.getPage("AkitaPageMock")
.getAnyElementText("TextField"),
equalTo(""));
.getPage("AkitaPageMock")
.getAnyElementText("TextField"),
equalTo(""));
}

@Test
Expand Down Expand Up @@ -297,44 +303,44 @@ public void compareListFromUIAndFromVariableTest() {
@Test
public void openReadOnlyFormPositive() {
ds.goToSelectedPageByLinkFromPropertyFile("RedirectionPage",
akitaScenario.getVar("RedirectionPage").toString());
akitaScenario.getVar("RedirectionPage").toString());
ds.openReadOnlyForm();
}

@Test
public void addValuePositive() {
ds.addValue("TextField", "Super");
assertThat(akitaScenario.getEnvironment()
.getPage("AkitaPageMock")
.getAnyElementText("TextField"),
equalTo("textSuper"));
.getPage("AkitaPageMock")
.getAnyElementText("TextField"),
equalTo("textSuper"));
}

@Test
public void addValuePositiveWithProps() {
ds.addValue("TextField", "itemValueInProps");
assertThat(akitaScenario.getEnvironment()
.getPage("AkitaPageMock")
.getAnyElementText("TextField"),
equalTo("textitem"));
.getPage("AkitaPageMock")
.getAnyElementText("TextField"),
equalTo("textitem"));
}

@Test
public void findElementPositive() {
ds.findElement("LINK");
sleep(500);
assertThat(WebDriverRunner.getWebDriver().getCurrentUrl(),
equalTo(akitaScenario.getVar("RedirectionPage")));
equalTo(akitaScenario.getVar("RedirectionPage")));
}

@Test
public void currentDatePositive() {
ds.currentDate("NormalField", "dd.MM.yyyy");
assertThat(akitaScenario.getEnvironment()
.getPage("AkitaPageMock")
.getAnyElementText("NormalField")
.matches("[0-3][0-9].[0-1][0-9].[0-2][0-9]{3}"),
equalTo(true));
.getPage("AkitaPageMock")
.getAnyElementText("NormalField")
.matches("[0-3][0-9].[0-1][0-9].[0-2][0-9]{3}"),
equalTo(true));
}

@Test
Expand Down Expand Up @@ -366,14 +372,14 @@ public void loginByUserDataPositive() {
public void pasteValuePositive() {
ds.pasteValueToTextField("testVal", "NormalField");
assertThat(WebDriverRunner.getWebDriver().findElement(By.name("normalField")).getAttribute("value"),
equalTo("testVal"));
equalTo("testVal"));
}

@Test
public void pasteValuePositiveWithProps() {
ds.pasteValueToTextField("textValueInProps", "NormalField");
assertThat(WebDriverRunner.getWebDriver().findElement(By.name("normalField")).getAttribute("value"),
equalTo("text"));
equalTo("text"));
}

@Test
Expand Down Expand Up @@ -410,7 +416,7 @@ public void getVarsTest() {
akitaScenario.setVar("2", "2");
ScopedVariables scopedVariables = akitaScenario.getVars();
assertThat((String) scopedVariables.get("1") + (String) scopedVariables.get("2"),
equalTo("12"));
equalTo("12"));
}

@Test
Expand Down Expand Up @@ -487,20 +493,20 @@ public void testListInnerTextCorrespondsToListFromVariableNegativeSize() {
public void testGetPropertyOrStringVariableOrValueFromProperty() {
akitaScenario.setVar("testVar", "shouldNotLoadMe");
assertThat(ds.getPropertyOrStringVariableOrValue("testVar"),
equalTo(PropertyLoader.loadProperty("testVar")));
equalTo(PropertyLoader.loadProperty("testVar")));
}

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

@Test
public void testGetPropertyOrStringVariableOrValueFromValue() {
assertThat(ds.getPropertyOrStringVariableOrValue("getPropertyOrVariableOrValueTestValue"),
equalTo("getPropertyOrVariableOrValueTestValue"));
equalTo("getPropertyOrVariableOrValueTestValue"));
}

@Test
Expand All @@ -521,4 +527,38 @@ public void testSetRandomCharSequenceLathin() {
equalTo(7));
}

@Test
public void testSwitchToTheNextTab() {
executeJavaScript("window.open(\"RedirectionPage.html\")");
dmbs.switchToTheNextTab();
Assert.assertThat(getWebDriver().getTitle(), IsEqual.equalTo("RedirectionPage"));
dmbs.switchToTheNextTab();
Assert.assertThat(getWebDriver().getTitle(), IsEqual.equalTo("Title"));
}

@Test
public void testCheckPageTitleSuccess() {
dmbs.checkPageTitle("Title");
}

@Test(expected = AssertionError.class)
public void testCheckPageTitleFailure() {
dmbs.checkPageTitle("NoTitle");
}

@Test
public void testStringOrLoadFilePropertyOrDefault2() {
assertThat(loadFilePropertyOrDefault("testScript"), equalTo("alert('privet');"));
}
@Test
public void testTestScript() {
ds.executeJsScript("HIDEnSHOW()");
ds.elementIsNotVisible("ul");
}

@Test
public void testCheckFieldSize() {
ds.checkFieldSymbolsCount("ul", 20);
}

}
1 change: 1 addition & 0 deletions src/test/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@ testValueInProps=test
oneValueInProps=One
textValueInProps=text
testingPageTextProps=Serious testing page
testScript=alert('privet');

0 comments on commit 5de9adf

Please sign in to comment.