Skip to content
This repository was archived by the owner on Oct 18, 2018. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all 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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.idea
target
*.iml
.DS_Store
.DS_Store
*.md~
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Practice of automation school 2016

See all info in repo [autoschool/autoschool.github.io](https://github.com/autoschool/autoschool.github.io)

Link to my repo with Dockerfile: https://github.com/kormyshov/DockerWithUbuntu
58 changes: 58 additions & 0 deletions api-tests-module/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<artifactId>school-2016</artifactId>
<groupId>ru.qatools.school</groupId>
<version>1.0-SNAPSHOT</version>
</parent>

<artifactId>api-tests-module</artifactId>
<packaging>jar</packaging>

<name>API tests Module</name>

<dependencies>
<dependency>
<groupId>com.tngtech.java</groupId>
<artifactId>junit-dataprovider</artifactId>
<version>1.10.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.qatools.school</groupId>
<artifactId>school-2016</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>

<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>2.0</version>
</plugin>
</plugins>
</reporting>

</project>
18 changes: 18 additions & 0 deletions commons-module/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,24 @@
<version>1.10.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.qatools.school</groupId>
<artifactId>commons-module</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.qatools.school</groupId>
<artifactId>school-2016</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.qatools.school</groupId>
<artifactId>steps-module</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
53 changes: 0 additions & 53 deletions commons-module/src/test/java/ru/qatools/school/MyFirstTest.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,48 @@
import ru.qatools.school.pages.MainPage;
import ru.qatools.school.rules.WebDriverRule;
import ru.qatools.school.steps.websteps.DefaultSteps;
import ru.qatools.school.tp.TPInformerRule;
import ru.yandex.qatools.allure.annotations.Title;
import ru.yandex.qatools.allure.annotations.TestCaseId;

public class WeatherWebTest {

public static final String MOSCOW = "Moscow";
public static final String CITY = "Krasnoyarsk";

private DefaultSteps defaultSteps;

@Rule
public WebDriverRule webDriverRule = new WebDriverRule();

@Rule
public TPInformerRule tms = new TPInformerRule("kormyshov");

@Before
public void initSteps() {
defaultSteps = new DefaultSteps(webDriverRule.getDriver());
}

@Test
@Title("Должны видеть виджет на главной странице")
@Title("Должен быть виден виджет на главной странице")
public void shouldSeeWidgetOnMainPage() {
defaultSteps.openMainPageWithCity(MOSCOW);
defaultSteps.shouldSee(onMainPage().getWeatherWidget().get(0));
defaultSteps.openMainPageWithCity(CITY);
defaultSteps.shouldSee(onMainPage().getFirstWidget());
}

@Test
@Title("Должен быть виден виджет для переданного города")
public void shouldSeeCityFromGETQuery() {
defaultSteps.openMainPageWithCity(CITY);
defaultSteps.shouldSeeText(onMainPage().getFirstWidget().getWidgetTitle().getCityName(), CITY);
}

@Test
@Title("Должны быть видны два виджета на странице")
public void shouldSeeTwoWidgetsAfterAddOne() {
defaultSteps.openMainPageWithCity(CITY);
defaultSteps.clickOn(onMainPage().getNewWidgetButton());
defaultSteps.shouldHaveSize(onMainPage().getWeatherWidgets(), 2);
defaultSteps.shouldSee(onMainPage().getWeatherWidgets());
}

private MainPage onMainPage() {
Expand Down
23 changes: 20 additions & 3 deletions steps-module/src/main/java/ru/qatools/school/pages/MainPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.openqa.selenium.support.PageFactory;
import ru.qatools.school.pages.blocks.WeatherWidget;
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;

Expand All @@ -21,10 +22,26 @@ public MainPage(WebDriver driver) {

@Name("Список виджетов")
@FindBy(css = ".card.card_md")
private List<WeatherWidget> weatherWidget;
private List<WeatherWidget> weatherWidgets;

public List<WeatherWidget> getWeatherWidget() {
return weatherWidget;
@Name("Первый виджет в списке")
@FindBy(css = ".card.card_md")
private WeatherWidget firstWidget;

@Name("Кнопка добавления виджета")
@FindBy(css = ".new-card")
private HtmlElement newWidgetButton;

public List<WeatherWidget> getWeatherWidgets() {
return weatherWidgets;
}

public WeatherWidget getFirstWidget() {
return firstWidget;
}

public HtmlElement getNewWidgetButton() {
return newWidgetButton;
}

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
package ru.qatools.school.pages.blocks.widgetblocks;

import org.openqa.selenium.Rectangle;
import org.openqa.selenium.support.FindBy;
import ru.yandex.qatools.htmlelements.annotations.Name;
import ru.yandex.qatools.htmlelements.element.HtmlElement;

/**
* Created by kurau.
* @author kormyshov
*/
public class WidgetTitle extends HtmlElement {

@Name("Поле с названием города")
@FindBy(css = ".card-title__primary")
private HtmlElement cityName;

public HtmlElement getCityName() {
return cityName;
}

public Rectangle getRect() {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
package ru.qatools.school.steps.websteps;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import ru.qatools.school.pages.MainPage;
import ru.yandex.qatools.allure.annotations.Step;
import ru.yandex.qatools.htmlelements.element.HtmlElement;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import static java.lang.String.format;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import static ru.yandex.qatools.htmlelements.matchers.WebElementMatchers.exists;
import static ru.yandex.qatools.htmlelements.matchers.WebElementMatchers.hasText;
import static ru.yandex.qatools.htmlelements.matchers.WebElementMatchers.isDisplayed;

/**
* Created by kurau.
* @author kormyshov
*/
public class DefaultSteps {

Expand All @@ -27,9 +36,29 @@ public void openMainPageWithCity(String city) {
driver.get(format(MAIN_PAGE, city));
}

@Step("Должны видеть на странице «{0}»")
@Step("Должны видеть элемент «{0}»")
public void shouldSee(WebElement element) {
assertThat("Должны видеть элемент", element, isDisplayed());
assertThat("Должны видеть элемент", element, both(exists()).and(isDisplayed()));
}

@Step("Должно быть «{1}» элементов в «{0}»")
public void shouldHaveSize(Collection<? extends WebElement> elements, int size){
assertThat("Неверное количество элементов", elements, hasSize(size));
}

@Step("Должны видеть каждый из «{0}»")
public void shouldSee(List<? extends WebElement> elements) {
assertThat("Должны видеть элементы", new ArrayList<>(elements), everyItem(both(exists()).and(isDisplayed())));
}

@Step("Должен быть текст «{1}» у элемента «{0}»")
public void shouldSeeText(WebElement element, String text) {
assertThat("Неверный текст элемента", element.getText(), is(text));
}

@Step("Кликаем по «{0}»")
public void clickOn(HtmlElement element){
element.click();
}

private MainPage onMainPage() {
Expand Down