Разбираемся в запуске тестов в Jenkins (+Maven +TestNG +WebDriver на Java) или туториал новичка

Есть задача: запускать тесты, написанные на #selenium #webdriver ( #java + #testng ) после чего сделать сборку на #maven и все это исполнять автоматически в Continious Integration System #jenkins . При этом все делать максимально просто c помощью визуальных средств.

Я буду описывать тезисно предпринятые шаги, сложности с которыми столкнулся и пути их решения, надеюсь на вашу помощь и советы. Тестировал почту ukr.net, я только начинающий в этих технологиях, поэтому не судите строго, все что здесь написано это мои пробы, ошибки и выводы… часто тоже ошибочные :slight_smile:

Цель: самообучение и помощь тем, кто захочет освоить те же инструменты.

Необходимые знания: #webdriver и уметь писать на нем тесты, понимание test suite, #testng - буквально самые базовые аннотации, #eclipse .

Вдохновил меня вебинар А. Дзыни - Строим Web Testing #framework за 20 минут где он быстро пробежался по фреймворку #page-object + #page-factory и закинул это все в Jenkins, сборка через #maven. Я решил сделать нечто подобное, но у меня пока есть сложности с этим…

Что уже проделано:

I. #eclipse, #testng, #webdriver

1. Создаем проект на #eclipse.

Особенности:

  1. структура проекта (как расположены, папки, а в нем пекеджи (что является тоже папками)) важна для сборки в #maven::tag:
    папки:
  • src/main/java - внутри пекедж net.ukr.pages - находятся классы страниц ( шаблон #page-object)
  • src/main/resources - на всякий случай для разных ресурсов, файлов, проперти и т.д.
  • src/test/java - здесь пекедж net.ukr.tests - в нем находятся классы тестов
  1. не забываем добавить в build path библиотеки selenium и #testng

2. Пишем код теста на #java используя команды #selenium #webdriver и аннотации #testng

Я использовал Паттерн #page-object без Page Factory т.к. есть ряд неудобств связанных с инициализацией сразу всех элементов на странице если она динамическая, более подробно если интересно на блоге автора Testing your patience ...., Closing the (Page)Factory но это не так важно для нас.

Про паттерн #page-object написано много, здесь я описывать его не буду, отличное видео вот: http://youtu.be/RlppaRSqvhs и http://youtu.be/MwVSvUIqOE0.

3. Запуск тестов +создание TestNG.xml

Для #eclipse есть специальный плагин #testng с ним проще запускать тесты, установить его можно прямо с #eclipse. Запускаем, смотрим чтобы все работало. (Run as…)

Когда все работает нам нужно создать файл в формате xml который будет нести информацию как именно запускать тесты (какие включать, какие - нет, группы, пекеджи, классы и т.д.).

Почитать как настраивать такой файл можно в этом оф. туториале TestNG

Вот мой простенький код, он говорит что нужно запускать только мой один пекедж где мои классы тестов и лежат.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="net.ukr.TestNG by packages">
 <test verbose="2" name="net.ukr.tests">
    <packages>
     <package name="net.ukr.tests"/>
    </packages>
 </test>
</suite>

Сохранить этот код нужно в корне папки проекта назвав его testng.xml.

Обновляем проект чтобы файл появился в дереве Package Explorer (правой кнопкой на проекте - Refresh)

Теперь нужно запустить тесты через этот testng.xml чтобы проверить правильно ли мы его создали. Для этого надо зайти в Run Configurations там создать новый запуск #testng, выбрать нужный проект и поле Run… выбрать Suite - выбираем наш testng.xml.

Запускаем, если все работает через этот файл мы можем переходить к созданию билда в #maven.

II. #maven

1. Подготовление к запуску #maven

Мавен делает сборки проектов. Делается это через командную строку. Чтобы мавен знал что и как собрать, а так же что туда добавить (например зависимости - dependencies) мы все это описываем в файле pom.xml который лежит в корне проекта.

Для облегчения процесса сборки и создания pom.xml файла для эклипса был создан плагин m2eclipse. Установить m2eclipse можно прямо с эклипса в окне Install New Software (Help).

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

Итак, установили m2e плагин, теперь делаем из проекта - мавен проект - правой кнопкой на проект Configure - Convert to #maven project.

Заполняем форму и получаем pom.xml файл в корне папки проекта.

//если выскочит еррор “Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment.” - заходим в Build Path проекта и там JRE System Library [JavaSE-1.Х] - жмет Edit… и выбираем нужную версию, ошибка должна пройти

Dependency

Так как в нашем проекте есть как минимум две зависимости (dependency) это testng-6.7.jar и selenium-server-standalone-2.21.0.jar необходимо их внести в пом файл.
Для этого заходим в него (двойной клик) и выбираем вкладку Dependencies - Add...
и там начинаем вводить в третей строчке для поиска - “testng”, находим нужный нам (org.testng) и добавляем. Так же находим и селениум написав “selenium java” и выбрали последний билд.

И org.apache.maven.plugins - maven-surefire-plugin -после его добавления внимательно проверить чтобы этот плагин в пом файле разместился внутри тега <plugins><plugin></plugins></plugin>, а не в депенденси тегах.

Подключение testng.xml

Обновляем пом файл чтобы оно видело testng.xml который покажет какие методы запускать.

вставить нужно такой код:

<plugins>
   [...]
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <version>2.12.2</version>
       <configuration>
         <suiteXmlFiles>
           <suiteXmlFile>testng.xml</suiteXmlFile>
         </suiteXmlFiles>
       </configuration>
     </plugin>
   [...]
</plugins>

Готовый pom.xml файл

Итак у нас есть готовый пом файл, проверим на всякий случай его исходник чтобы быть увереными что все в нем есть:

нам для запуска необходимо иметь минимум два плагина maven-compiler-plugin и maven-surefire-plugin (в тегах которого мы прописали наш testng.xml), а так же для нашего проекта подключенные две зависимости тестэнджи и селениум, +testng.xml.

Получился такой код pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.ukr</groupId>
  <artifactId>net.ukr</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>UkrNet_MavenName</name>
  <description>UkrNet_MavenDescription</description>
  <build>
    <plugins>
      <plugin>
      <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>           
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12</version>
          <inherited>true</inherited>
            <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
      <dependency>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.7</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>2.24.1</version>
      </dependency>
  </dependencies>
</project>

2. Запуск #maven

Запускаем: Run As… #maven Test

// если видим такой еррор:
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7..\lib\tools.jar
[ERROR] Please ensure you are using JDK 1.4 or above and
[ERROR] not a JRE (the com.sun.tools.javac.Main class is required).
[ERROR] In most cases you can change the location of your Java
[ERROR] installation by setting the JAVA_HOME environment variable.

Решение: в свойствах проекта если зайти в Java Build Path видно что проект запускается через JRE. Необходимо изменить на jdk (если его нет - скачать). Edit… - и выбрать jdk запускальщик.

В итоге мейвен создает сборку, запускает тест, унас открывается браузер и проходит тестирование как обычно. Теперь переходим к передачи запуска в Jenkins.

III Jenkins

1. Установка и подготовка к работе

http://jenkins-ci.org/ - оф. страница, справа сразу можно скачать под нужную ОС сам Jenkins.

Устанавливаем, заходим в браузере localhost:8080 и попадаем в ИнфоПанель.

Настроики: Скорее всего это не все, потому что на данный момент у меня не запускается правильно мой тест съют, но в любом случае вот вкладки которые я настраивал

заходим в Настроить #jenkins - Конфигурирование системы :

JDK:

JDK имя: jdk1.7.3

JAVA_HOME: C:\Program Files\Java\jdk1.7.0_03

Maven

Maven имя: MAVEN

MAVEN_HOME: C:\My Files\Distrib\apache-maven-3.0.4-bin\apache-maven-3.0.4 (скачать можно здесь Apache Download Mirrors )

больше ничего не менял.

2. Запуск

Необходимо создать новый job (Переходим в меню в “Новая задача”). Выбираем “Создать проект maven2/3”, пишем имя для нашей Новой Задачи например MyTEST1.

Дальше появляется окно настроек нового джоба. Я изменил только поля раздела Сборка

Корневой POM: C:\Users\HP\workspace\net.ukr - полный путь к папке проекта где лежит пом файл. net.ukr - у меня так проект называется.

Goals and options: clean test

Жмем Сохранить и получаем новую задачу. Запускаем ее - кликнув по “Запустить сейчас”.

Слева появится полоска прогресса процесса сборки. Кликнув на нее перейдем на конкретную сборку. В ней можно посмотреть текущее положение дел нажав “Вывод консоли”.

Как результат вывод консоли у меня следующий:

Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\workspace\UkrNetMavenJenkinsTest
Parsing POMs
[net.ukr] $ "C:\Program Files\Java\jdk1.7.0_03/bin/java" -cp "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-agent-1.2.jar;C:\Program Files (x86)\Jenkins\tools\Maven\MAVEN\boot\plexus-classworlds-2.4.jar" org.jvnet.hudson.maven3.agent.Maven3Main "C:\Program Files (x86)\Jenkins\tools\Maven\MAVEN" "C:\Program Files (x86)\Jenkins\war\WEB-INF\lib\remoting-2.16.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-1.2.jar" 56253
<===[JENKINS REMOTING CAPACITY]===>channel started
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
Executing Maven:  -B -f C:\Users\HP\workspace\net.ukr\pom.xml clean test
[INFO] Scanning for projects...
Projects to build: [MavenProject: net.ukr:net.ukr:1.0-SNAPSHOT @ C:\Users\HP\workspace\net.ukr\pom.xml]
projectStarted net.ukr:net.ukr:1.0-SNAPSHOT
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building UkrNet_MavenName 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.4.1(default-clean)
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ net.ukr ---
[INFO] Deleting C:\Users\HP\workspace\net.ukr\target
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.4.1(default-clean)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.5(default-resources)
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ net.ukr ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.5(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.3.2(default-compile)
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ net.ukr ---
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 7 source files to C:\Users\HP\workspace\net.ukr\target\classes
mojoSucceeded org.apache.maven.plugins:maven-compiler-plugin:2.3.2(default-compile)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.5(default-testResources)
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ net.ukr ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Users\HP\workspace\net.ukr\src\test\resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.5(default-testResources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.3.2(default-testCompile)
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ net.ukr ---
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 3 source files to C:\Users\HP\workspace\net.ukr\target\test-classes
mojoSucceeded org.apache.maven.plugins:maven-compiler-plugin:2.3.2(default-testCompile)
mojoStarted org.apache.maven.plugins:maven-surefire-plugin:2.12(default-test)
[INFO] 
[INFO] --- maven-surefire-plugin:2.12:test (default-test) @ net.ukr ---
[INFO] Surefire report directory: C:\Users\HP\workspace\net.ukr\target\surefire-reports
 
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Attempt of waitingForIsdisplayed with Locator - By.xpath: .//*[@id='msglist_rows'] is: 1
Comparing .getText (Операция выполнена) from element (locator: By.xpath: .//*[@id='info-block']) with CharSequence [Операция выполнена] - PASSED. Return true. 
Letter sent. Confirmation is displayed. Assert - pass
sentLetterCountOld 3
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2,230.54 sec <<< FAILURE!
 
Results :
 
Failed tests:   testSendMail(net.ukr.tests.MainFunctions): Element not found in the cache - perhaps the page has changed since it was looked up(..)
 
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0
 
mojoSucceeded org.apache.maven.plugins:maven-surefire-plugin:2.12(default-test)
[ERROR] There are test failures.
 
Please refer to C:\Users\HP\workspace\net.ukr\target\surefire-reports for the individual test results.
[JENKINS] Recording test results
projectSucceeded net.ukr:net.ukr:1.0-SNAPSHOT
sessionEnded
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37:20.883s
[INFO] Finished at: Mon Aug 20 20:32:12 EEST 2012
[INFO] Final Memory: 21M/178M
[INFO] ------------------------------------------------------------------------
Projects to build: [MavenProject: net.ukr:net.ukr:1.0-SNAPSHOT @ C:\Users\HP\workspace\net.ukr\pom.xml]
[JENKINS] Archiving C:\Users\HP\workspace\net.ukr\pom.xml to C:\Program Files (x86)\Jenkins\jobs\UkrNetMavenJenkinsTest\modules\net.ukr$net.ukr\builds\2012-08-20_19-54-48\archive\net.ukr\net.ukr\1.0-SNAPSHOT\net.ukr-1.0-SNAPSHOT.pom

Ожидаю пока #jenkins закончит сбор данных

ERROR: Illegal address
channel stopped
ERROR: Illegal address
javax.mail.internet.AddressException: Illegal address in string ``''
        at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:114)
        at hudson.tasks.Mailer.StringToAddress(Mailer.java:152)
        at hudson.tasks.MailSender.createEmptyMail(MailSender.java:317)
        at hudson.tasks.MailSender.createUnstableMail(MailSender.java:187)
        at hudson.tasks.MailSender.getMail(MailSender.java:158)
        at hudson.tasks.MailSender.execute(MailSender.java:99)
        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.cleanUp(MavenModuleSetBuild.java:1012)
        at hudson.model.Run.execute(Run.java:1546)
        at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
        at hudson.model.ResourceController.execute(ResourceController.java:88)
        at hudson.model.Executor.run(Executor.java:236)
Finished: SUCCESS

Важно: Если у вас тест запускается но очень долго, то возможно это проблемы сервера сайта который вы тестируете!

[...]
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite

и значек загрузки… и так пол часа…

В моем примере один простенький тест на поиск слова в поиске главной страницы проходил больше 3 минут в Дженкинсе, когда напрямую в Эклипсе он занимал не больше нескольких секунд. Тест из трех тест кейсов которые тестировали отправку писем, удаление и сохранение в черновик тестировалось 37 (!) минут в Дженкинсе, что заставило искать ошибку у себя. Только потом проверив на простеньких тестах понял что это не моя ошибка.

UPD: Проблема была у самого #jenkins версии 1.477 в совместимости с #maven при работе с некоторыми серверами.

Итак тест исполнился, задача выполнена. Всем спасибо)

Так же для полной картины необходимо использовать CVS (Concurrent Versions System, «Система Одновременных Версий»)

Если что-то непонятно или не получается, а также по вопросам поддержки или личных консультаций пишите сюда

11 лайков

У меня была такая же ситуация что тесты не запускались через maven. Попытайся добавить в pom.xml вот такие строчки в блок dependencies:

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.24.1</version>
</dependency>
 
Мне помогло,. тесты начали выполнятся нормально.

mfedechko, спасибо за совет, проверил pom.xml у меня прописана зависимость селениум, правда называется по-другому

          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>2.24.1</version>

я добавил зависимость которую ты посоветовал selenium-server, но ситуация не поменялась. Тесты по прежнему очень долго запускаются. 37 минут на 3 теста, по 13 минут на каждый.

Если бы я добавил неправильную зависмость или не добавил ее вовсе тесты не запускались бы, но так как они работают только очень медленно ошибка наверно в чем-то другом...

В попытке понять почему тесты в Дженкинсе проходят настолько долго я поменял в конфигурациях Дженкинс: вместо автоматической загрузки мавена - поставил путь MAVEN_HOME на установленную вручную мавен директорию. Не помогло.

upd: По прежнему ищу ошибку в пом файле, в зависмости tesng добавил scope тег. Не помогло.

<groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.7</version>
          <scope>test</scope>

upd: добавил в пом файл maven compiler plugin теги <source> <target> со значениями 1.7 (версия джавы),

добавил в maven-surefire-plugin тег <inherited>true</inherited>

 

не знаю что еще...

Так... похоже я разобрался.

Для выявления причины такой долгой прогонки тестов я создал совсем простой тест с главной страницей google.com он запустился за пару секунд. После чего я добавил еще один простой тест на страницу почты ukr.net и после этого время прогонки теста существенно замедлилось. Время прохождения простого "найти-поисковое-поле-и-ввести-значение" прошло за 3 минуты! Аналогичный тест с mail.ru поиском прошел за 16 секунд.

 

Вывод: я потерял день пытаясь найти ошибку у себя но как выяснилось это не моя ошибка.

Сайт ukr.net очень долго тестируется через дженкинс. И мне посчастливилось первый свой проект в Дженкинсе запустить именно с этим глючным сайтом :)

 

Если есть вопросы задавайте) Советы как лучше запускать тесты на дженкинсе приветствуются!

1 лайк

Видимо, я какой-то тёмный. Как связан дженкинс и ukr.net? 

1 лайк

Никак, просто почту укр.нет я взял в качестве объекта тестирования. Заодно потренировался тестировать АЯКС страницы.

Просто я не улавливаю взаимосвязи между увеличением времени прогона тест сьюта с помощью Дженкинса и ukr.net
Для чистоты эксперимента... Попробуйте уже готовый тест сьют и настройки перепилить для ukr.net (в смысле переделать сами тесты)

У меня такая же проблема: в eclipse тест сьют с 3 тестовыми классами (всего около средних по размеру 30 тест кейсов) запускается и прогоняется за 8 мин. , а через Jenkins это дело занимает до 3 часов.... жесть просто.Не знаю как с этим бороться :(

Провел маленькое сравнение:

простенький скрипт на вебдрайвере который открывает страницу, забивает в поиск слово "apple", кликает искать и смотрит есть ли оно в тайтле новой страницы.

Сравнивал два сайта mail.ru и ukr.net:

Eclipse: mail.ru 10 секунд, ukr.net 15 sec

Jenkins: mail.ru - 17 sec total time, ukr.net - 3min 17 sec total time!

Разница 13 раз! Один и тот же код, один и тот же проект, одни и те же настройки.

Вывод: Jenkins на некоторых сайтах жутко тормозит тестирование.

 

+ Совет: пока тестировал нашел интересный баг - Если в конце теста не вызвать driver.quit(); - билд Jenkins вообще не завершит (или завершит но за сколько неизвестно)

Вообще, в дженкинсе должна быть статистика подробная, сколько каждый тест длился. Посмотрите туда. И мне кажется вся запара в процессе сборки прожекта. Ну не вижу я объективных причин влияния дженкинса на быстродействие вэб-приложения

Если смотреть в реальном времени то вся сборка и запуск мавен пробегает за пару секунд, зависание начинается когда в консоли появляется:

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
 
 
Если посмотреть в отчеты TestNG reports то ситуация немного проясняется:
Methods in chronological order:
setUp                              0 ms
          UkrNetTest          6892 ms
tearDown                      190076 ms
 
тоесть практически все зависание происходит на методе tearDown который имеет единственный метод у себя это driver.quit();
почему так -?

У меня сборка в Jenkins проиcxодит за пару секунд, но метод setUp с драйвером браузера занимает около 5 минyт в Jenkins, но это не самое страшное - метод tearDown занимает почти 30 мин для одного драйвера браузера.

------------------------------------------------------

 

 T E S T S
-------------------------------------------------------
Running TestSuite
Aug 22, 2012 10:29:22 AM com.xxx.Tests.TestBase setUp
INFO: setUp start
Aug 22, 2012 10:34:49 AM com.xxx.Tests.TestBase setUp
INFO: setUp complete FirefoxDriver: firefox on XP (c64c399a-ae21-4063-8b0e-7dd447bba6a3)
Aug 22, 2012 11:01:39 AM com.xxx.Tests.TestBase tearDown
INFO: tearDown start FirefoxDriver: firefox on XP (c64c399a-ae21-4063-8b0e-7dd447bba6a3)
Aug 22, 2012 11:03:11 AM com.xxx.Tests.TestBase tearDown
INFO: tearDown end

попробуйте еще подключить http://opensource.webmetrics.com/browsermob-proxy/ и посмотреть, что грузиться и насколько долго

вы какие-то такие страшные вещи рассказываете, ужас.

надо разбираться что не так у вас. 

или у меня все постоянно было хорошо, или мне просто везло каждый раз :)

Вы и топик стартер, а дайте ваши тест кейсы поглазеть

этот класс у меня занимает более 30 мин прогнать с Jenkins, когда в Eclipse на это уходит меньше минуты.

public class LoginTests extends TestBase {
 
@Test(dataProvider = "invalidLoginFromExcel", dataProviderClass = LoginFromExcel.class)
public void loginInvalidTest(LoginObject invalidLogins) throws Exception {
...
    }
 
@Test
public void loginValidTest() throws Exception {
....
    }
 
 
 
@Test(dataProvider = "forgotPasswordFromExcel", dataProviderClass = ForgotPasswordFromExcel.class)
public void loginForgotPasswordInvalidUsersTest(String user) throws Exception {
....
    }
 
@Test
public void loginForgotPasswordValidUserTest() throws Exception {
.....
    }
}

добавьте логику dataProviderClass и класса где у вас прописан setUp

Спасибо за проявленый интерес к вопросу! Выкладываю код теста:

Весь джава проект состоит из одного класса TestClass, вод его код:

package com.google.com;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestClass {
    public WebDriver driver;
    
    @BeforeMethod
    public void setUp() {
        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }
    
    @AfterMethod
    public void tearDown() {
        driver.quit();
    }

    @Test (enabled = false)
    public void mailRuTest(){
        driver.get("http://www.mail.ru");
        driver.findElement(By.name("q")).sendKeys("apple");
        driver.findElement(By.id("search__button__wrapper__field")).submit();
        System.out.println("Current URL is: " + driver.getCurrentUrl() + "The title of this page is: " + driver.getTitle());
        System.out.println("Apple is in title: " +    driver.getTitle().contains("apple"));
    }
    
    @Test(enabled = true)
    public void UkrNetTest(){
        driver.get("http://www.ukr.net");
        driver.findElement(By.id("q")).sendKeys("apple");
        driver.findElement(By.xpath("//input[@class='s-submit']")).click();
        System.out.println("Current URL is: " + driver.getCurrentUrl() + " The title of this page is: " + driver.getTitle());
        System.out.println("Apple is in title: " +    driver.getTitle().contains("apple"));
    }
}

Запускаю через Eclipse - Run as… - Maven Test:

... [INFO] Total time: 23.874s ...

Запускаю через Jenkins (настройки проекта: Goals and options: clean test) :

...[INFO] Total time: 3:17.336s ...
TestNG report:

Methods in chronological order
 
setUp                   0 ms
UkrNetTest         6575 ms
tearDown           190753 ms
1 лайк

Пробовал подключить /browsermob-proxy/ но когда подтягиваю dependency из мейвен репозитария и прописываю это в пом файл - не хочет билдиться проект, только после чистки пом файла от этой зависимости все работает.

Но если очень критично подключить эту утилиту тогда буду серьезней вникать

Режим виндузятника активирован.
Я так думаю, вы ставили дженкинс 1.478
Вот у меня на проекте вертится 1.473 и никаких проблем (правда мэйвен мы не пользуем). Попробуйте ка откатиться. В чейнджлогах к версиям были проблемы некие с мэйвен и тиарДаун, правда давно. Может просто баг? Если да  -  помогите комьюнити ;)

Режим виндузятника деактивирован