Запуск тестов с помощью Jenkins

jenkins

Настройка Jenkins.

Запуск jenkins в docker описан в этой статье

В настройках дженкинса переходим в Global Tool Configuration.

  • Добавляем Maven.

Настройка Jоb’a.

  1. Создаем новый item.
  2. Разрешить параллельный запуск задачи.
  3. Выбираем “параметризованная сборка” и добавляем два String параметра: BROWSER, DEVICE, HUB, THREAD. (Значение по дефолту chrome, pc, http://192.168.1.155:4444/wd/hub, 3).
Click to read more ...

Запускаем Selenium Grid

grid

Что такое Seleium Grid?

Selenium Grid – это кластер, включающий в себя несколько Selenium-серверов. Решает следующие задачи:

  • Распараллеливание запуска тестов на различных операционных системах, в различных браузерах на разных машинах.
  • Общее время прогона тестов.

Selenium Grid работает следующим образом: имеется центральный сервер (hub), к которому подключены узлы (node). Работа с кластером осуществляется через hub, при этом он просто транслирует запросы узлам. Узлы могут быть запущены на той же машине, что и hub или на других.

Начало работы с grid’ом.

  1. Скачать Selenium Server Standalone c оф. сайта selenium.
Click to read more ...

Jenkins в контейнере

Jenkins

Запускаем Jenkins.

Jenkins мощный инструмент, с его помощью выстраивают процесс Continuous Integration (CI). Docker позволяет “упаковать” приложение со всем его окружением и зависимостями в контейнер. В таком контейнере и будет “жить” Jenkins. Большим плюсом такой связки (Jenkins + Docker) будет, что Jenkins поднимится автоматически (вместе с докером), если машина на которой он был перезагрузилась (или другие проблемы). Начнем:

Click to read more ...

Запуск тестов в несколько потоков с помощью TestNG

TestNG.xml

Запуск тестов в несколько потоков значительно сокращает время прогона. Связано это с тем, что на каждый поток/thread создается свой WebDriver и поднимается браузер. TestNG позволяет создать test suite, указать тесты и количество потоков.

Click to read more ...

Достаем Properties из Maven profiles в Java код.

Создаем Maven profile

Profile используется для сборки проекта с разными настройками. Напишем профайлы, которые помогу нам запускать тесты в разных браузерах. Добавим этот код в pom.xml.

<profiles>
     <profile>
         <id>Chrome</id>
         <properties>
             <browser>chrome</browser>
         </properties>
     </profile>
 </profiles>
Click to read more ...

Page object pattern и BaseTest

Зачем нужны Page и BaseTest классы?

Рассмотрим простой тест:

public class OurFirstTest {

  @BeforeTest
  private void settings() {
      Configuration.browser = "chrome";
  }

  @Test
  public void checkSecondPageAboutText() {
      open("https://ereoo.github.io/main-page");
      $(By.id("go_second")).click();
      $(By.id("about")).shouldHave(text("This is second test page \"SecondPage\". First test page is \"MainPage\". This is a test page filled with common HTML elements. Feel free to practice create your auto-tests."));
  }

  @AfterTest
  private void close() {
      getWebDriver().close();
  }
}
Click to read more ...

Автоматизированный тест с Selenide и TestNG

Подключение TestNG и Selenide.

Создаем обычный Maven проект. В pom.xml добавляем dependencies.

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.14.2</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.codeborne</groupId>
        <artifactId>selenide</artifactId>
        <version>4.9.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
Click to read more ...