Как запустить модульные тесты Dojo DOH через Jenkins? - PullRequest
15 голосов
/ 10 марта 2011

Кто-нибудь пробовал интегрировать модульные тесты Dojo DOH с Jenkins?

Я бы хотел сделать следующее, но не хочу изобретать его, если это уже было сделано. Итак, я думаю:

  1. Запустите DOH-тесты с шага после сборки в Jenkins и дождитесь результатов
  2. Запустите сами тесты в браузере без головы (например, Crowbar)
  3. Анализировать количество успехов / ошибок из HTML-кода, возвращенного Crowbar
  4. Найдите (или напишите) плагин Jenkins, который (а) не выполнит сборку в случае неудачных тестов, (б) отобразит результаты теста, (в) возможно интегрирует результаты в игровой плагин CI

Вопросы:

  1. Было ли это сделано раньше?
  2. Видите ли вы какие-либо проблемы с планом выше?
  3. Знаете ли вы о плагине Jenkins, который поможет, или мне придется создавать свой собственный?

Ответы [ 3 ]

3 голосов
/ 13 января 2012

1. Автоматизированное тестирование Dojo - DOH & Selenium-RC (Rob Coup - 2008/01/03)

План:

  • Иметь файл конфигурации, определяющий, какие браузеры запускать, на каких машинах они работают и какие тесты запускать.
  • Запустить каждый браузер через Selenium-RC
  • Запустите тесты через обычный браузер DOH.
  • Используйте Selenium для извлечения результатов из DOH.
  • Соберите результаты из разных браузеров и создайте что-нибудь полезное.

Решение:

  • Drop seleniumRunner.js, seleniumRunner.config.js, seleniumRunner.sh (или .bat, если вы работаете в Windows) и selenium-java-client-driver.jar в util / doh / в вашей установке Dojo.
  • Установите selenium-server.jar на каждом тестовом компьютере, затем запустите java -jar selenium-server.jar -multiWindow, чтобы он прослушивал сообщения управления браузером.
  • Измените seleniumRunner.config.js и измените browsers и rootUrl в соответствии с вашими настройками. rootUrl должен быть доступен с каждой испытательной машины.
  • запустить ./seleniumRunner.sh seleniumRunner.config.js из util / doh / на вашей рабочей станции
  • Он загрузит конфигурацию, запустит браузеры на каждой машине, запустит модульные тесты из ядра Dojo и напечатает статистику прохождения / неудачи / ошибки для каждого.
  • Каждый браузер запускается и контролируется в отдельном потоке (не обязательно, но слишком круто, чтобы сопротивляться этому).

Вопросы:

  • если я не запускаю сервер селена в многооконном режиме, Safari и Firefox будут открывать диалоговые окна печати (!?!) Всякий раз, когда тестовая страница была загружен. Но Safari никогда не инициализировал тестовую страницу, если она была в многооконный режим. На OSX и Windows. г.
  • Opera в OSX неправильно настроила прокси-сервер Selenium (localhost:4444 для справки).
  • IE почему-то не понравилось делать dojo.connect() с помощью команд selenium javascript.

2. Мне кажется разумным.

3. Плагин Jenkins Selenium

Этот плагин превращает ваш кластер Jenkins в кластер Selenium2 Grid, так что вы можете использовать свои гетерогенные кластеры Jenkins для переноса вне селен тесты. Этот плагин является решением под ключ - никаких дополнительных установка или настройка необходимы, чтобы это работало. Плагин автоматически устанавливает Selenium Grid на всех подчиненных и устанавливает до сетки самостоятельно.

2 голосов
/ 14 сентября 2012

Для запуска тестов D.O.H я разработал инструмент, который интегрируется в ci и может запускать браузер.

http://codeblog.bigbrowser.net/dojo-testing-d-o-h-with-continuous-integration/

Может быть, вы тоже можете попробовать.

Я объяснил, где скачать и как его запустить.

1 голос
/ 05 июня 2012

Вот как я это сделал с HTMLUnit.Selenium не требуется.

Он запускается как обычный тест JUnit (который может легко запускаться вашим сервером CI) и распечатывает журнал DOH в случае сбоя теста.1005 * А ниже - содержимое файла runTests.html.Он в основном просто перенаправляет на тестер DOJO с параметрами, специфичными для тестов в каталоге, который мы хотим протестировать.

Это просто хороший способ структурировать вещи, вы могли бы указать этот URL в поле PATHNAME в тесте JUnit.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
    <title>Dojox Unit Test Runner</title>
      <!--The "testModule" param tells the runner which test module to run-->
      <!--The "paths" param adds our dojo module paths, otherwise it would just look in the default dojo modules for code to test.-->
    <meta http-equiv="REFRESH" content="0;url=../../../../dojo-release-1.7.2-src/util/doh/runner.html?testModule=util.tests.module&paths=util,../../mystuff/dojo/util;mystuff,../../mystuff/dojo"></HEAD>
    <BODY>
        Redirecting to D.O.H runner.
    </BODY>
</HTML> 
...