diff --git a/commons-module/src/test/java/ru/qatools/school/mobiletests/MobileTest.java b/commons-module/src/test/java/ru/qatools/school/mobiletests/MobileTest.java
new file mode 100644
index 0000000..e608455
--- /dev/null
+++ b/commons-module/src/test/java/ru/qatools/school/mobiletests/MobileTest.java
@@ -0,0 +1,53 @@
+package ru.qatools.school.mobiletests;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import ru.qatools.school.rules.MobileDriverRule;
+import ru.qatools.school.screens.MainScreen;
+import ru.qatools.school.screens.SelectStationScreen;
+import ru.qatools.school.steps.mobilesteps.MobileSteps;
+import ru.yandex.qatools.allure.annotations.Title;
+
+/**
+ * @author arrumm 19.05.2016.
+ */
+public class MobileTest {
+
+ private static final String DEPARTURE_STATION = "Arbatskaya";
+ private static final String DESTINATION_STATION = "Borisovo";
+ private static final int MIN_TIME = 10;
+
+ private MobileSteps mobileSteps;
+
+ @Rule
+ public MobileDriverRule remoteWebDriverRule = new MobileDriverRule();
+
+ @Before
+ public void initSteps() {
+ mobileSteps = new MobileSteps(remoteWebDriverRule.getDriver());
+ }
+
+ @Test
+ @Title("Ожидаемое время поездки должно быть больше 10 минут")
+ public void shouldSeeGreaterTime() {
+ mobileSteps.tapOn(onMainScreen().fromStationField());
+ mobileSteps.sendKeysTo(onSelectStationScreen().stationNameField(), DEPARTURE_STATION);
+ mobileSteps.tapOn(onSelectStationScreen().getFirstStation());
+
+ mobileSteps.tapOn(onMainScreen().toStationField());
+ mobileSteps.sendKeysTo(onSelectStationScreen().stationNameField(), DESTINATION_STATION);
+ mobileSteps.tapOn(onSelectStationScreen().getFirstStation());
+
+ mobileSteps.shouldSeeGreaterThan(onMainScreen().timeField(), MIN_TIME);
+ }
+
+ private MainScreen onMainScreen() {
+ return new MainScreen(remoteWebDriverRule.getDriver());
+ }
+
+ private SelectStationScreen onSelectStationScreen() {
+ return new SelectStationScreen(remoteWebDriverRule.getDriver());
+ }
+
+}
diff --git a/steps-module/pom.xml b/steps-module/pom.xml
index 9bcfe79..ffcd8e7 100644
--- a/steps-module/pom.xml
+++ b/steps-module/pom.xml
@@ -45,7 +45,18 @@
com.jayway.restassured
rest-assured
-
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.21
+
+
+ net.java.dev.jna
+ jna
+ 4.1.0
+
+
diff --git a/steps-module/src/main/java/ru/qatools/school/rules/MobileDriverRule.java b/steps-module/src/main/java/ru/qatools/school/rules/MobileDriverRule.java
new file mode 100644
index 0000000..713bfe6
--- /dev/null
+++ b/steps-module/src/main/java/ru/qatools/school/rules/MobileDriverRule.java
@@ -0,0 +1,36 @@
+package ru.qatools.school.rules;
+
+import org.junit.rules.ExternalResource;
+import org.openqa.selenium.remote.DesiredCapabilities;
+import org.openqa.selenium.remote.RemoteWebDriver;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * @author arrumm 19.05.2016.
+ */
+public class MobileDriverRule extends ExternalResource {
+
+ private RemoteWebDriver driver;
+
+ protected void before() throws MalformedURLException {
+
+ DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
+ desiredCapabilities.setCapability("platformName", "Android");
+ desiredCapabilities.setCapability("deviceName", "Android");
+ desiredCapabilities.setCapability("app", "http://autoschool.github.io/files/ya-metro.apk");
+ desiredCapabilities.setCapability("appWaitActivity", "ru.yandex.metro.MainActivity");
+
+ this.driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
+ }
+
+ protected void after() {
+ driver.quit();
+ }
+
+ public RemoteWebDriver getDriver() {
+ return driver;
+ }
+
+}
diff --git a/steps-module/src/main/java/ru/qatools/school/screens/MainScreen.java b/steps-module/src/main/java/ru/qatools/school/screens/MainScreen.java
new file mode 100644
index 0000000..15ddd34
--- /dev/null
+++ b/steps-module/src/main/java/ru/qatools/school/screens/MainScreen.java
@@ -0,0 +1,44 @@
+package ru.qatools.school.screens;
+
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import ru.yandex.qatools.htmlelements.annotations.Name;
+import ru.yandex.qatools.htmlelements.element.HtmlElement;
+import ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementDecorator;
+import ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementLocatorFactory;
+
+/**
+ * @author arrumm 19.05.2016.
+ */
+public class MainScreen {
+
+ public MainScreen(RemoteWebDriver driver) {
+ PageFactory.initElements(new HtmlElementDecorator(new HtmlElementLocatorFactory(driver)), this);
+ }
+
+ @Name("Поле ввода начальной станции")
+ @FindBy(id = "tv_from_name")
+ private HtmlElement fromStationField;
+
+ @Name("Поле ввода конечной станции")
+ @FindBy(id = "tv_to_name")
+ private HtmlElement toStationField;
+
+ @Name("Поле ожидаемое время поездки")
+ @FindBy(id = "tv_time")
+ private HtmlElement timeField;
+
+ public HtmlElement fromStationField() {
+ return fromStationField;
+ }
+
+ public HtmlElement toStationField() {
+ return toStationField;
+ }
+
+ public HtmlElement timeField() {
+ return timeField;
+ }
+
+}
diff --git a/steps-module/src/main/java/ru/qatools/school/screens/SelectStationScreen.java b/steps-module/src/main/java/ru/qatools/school/screens/SelectStationScreen.java
new file mode 100644
index 0000000..65cd2d3
--- /dev/null
+++ b/steps-module/src/main/java/ru/qatools/school/screens/SelectStationScreen.java
@@ -0,0 +1,41 @@
+package ru.qatools.school.screens;
+
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import ru.yandex.qatools.htmlelements.annotations.Name;
+import ru.yandex.qatools.htmlelements.element.HtmlElement;
+import ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementDecorator;
+import ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementLocatorFactory;
+
+import java.util.List;
+
+/**
+ * @author arrumm 19.05.2016.
+ */
+public class SelectStationScreen {
+
+ public SelectStationScreen(RemoteWebDriver driver) {
+ PageFactory.initElements(new HtmlElementDecorator(new HtmlElementLocatorFactory(driver)), this);
+ }
+
+ @Name("Поле ввода названия станции")
+ @FindBy(id = "filterTextId")
+ private HtmlElement stationNameField;
+
+ @Name("Список результатов поиска станции для выбора")
+ @FindBy(id = "txtStationName")
+ private List stationSuggestResults;
+
+ public HtmlElement stationNameField(){
+ return stationNameField;
+ }
+
+ public List stationSuggestResults(){
+ return stationSuggestResults;
+ }
+
+ public HtmlElement getFirstStation() {
+ return stationSuggestResults.get(0);
+ }
+}
diff --git a/steps-module/src/main/java/ru/qatools/school/steps/mobilesteps/mobilesteps.java b/steps-module/src/main/java/ru/qatools/school/steps/mobilesteps/mobilesteps.java
new file mode 100644
index 0000000..a62abc9
--- /dev/null
+++ b/steps-module/src/main/java/ru/qatools/school/steps/mobilesteps/mobilesteps.java
@@ -0,0 +1,78 @@
+package ru.qatools.school.steps.mobilesteps;
+
+import org.openqa.selenium.remote.RemoteWebDriver;
+import ru.qatools.school.screens.MainScreen;
+import ru.qatools.school.screens.SelectStationScreen;
+import ru.yandex.qatools.allure.annotations.Step;
+import ru.yandex.qatools.htmlelements.element.HtmlElement;
+
+import java.util.regex.Pattern;
+
+import static org.hamcrest.Matchers.greaterThan;
+import static org.junit.Assert.assertThat;
+
+/**
+ * @author arrumm 19.05.2016.
+ */
+public class MobileSteps {
+
+ private RemoteWebDriver driver;
+
+ public MobileSteps(RemoteWebDriver driver) {
+ this.driver = driver;
+ }
+
+ @Step("Открываем главный экран")
+ public void openMainScreen() {
+ driver.getCurrentUrl();
+ }
+
+ @Step("Открываем экран с выбором станций")
+ public void openStationScreen() {
+ driver.getCurrentUrl();
+ }
+
+ private MainScreen onMainScreen() {
+ return new MainScreen(driver);
+ }
+
+ private SelectStationScreen onSelectStationScreen() {
+ return new SelectStationScreen(driver);
+ }
+
+ @Step("Тапаем элемент {0}")
+ public void tapOn(HtmlElement element) {
+ element.click();
+ }
+
+ @Step("Вводим текст {1} в элемент {0}")
+ public void sendKeysTo(HtmlElement element, String keys) {
+ element.sendKeys(keys);
+ }
+
+ @Step()
+ public void shouldSeeGreaterThan(HtmlElement element, int time){
+
+ int hours=0, minutes=0;
+ String strTime = element.getText();
+
+ String regex = "([\\s]+h+[\\s]|[\\s]+min)";
+
+ Pattern p = Pattern.compile(regex);
+
+ String[] mas = p.split(strTime);
+
+ if (mas.length == 1){
+ minutes = Integer.parseInt(mas[0].replaceAll("\\s", ""));
+ }
+ else{
+ hours = Integer.parseInt(mas[0].replaceAll("\\s", ""));
+ minutes = Integer.parseInt(mas[1].replaceAll("\\s", ""));
+ }
+
+ assertThat("Value should be greater",
+ hours*60+minutes,
+ greaterThan(time));
+ }
+
+}