Рабочие модульные тесты JavaScript невнимательно в Непрерывной сборке Интеграции

У меня есть план сборки веб-приложения, работающий на Непрерывной системе Интеграции (Бамбук Atlassian 2.5). Я должен включить находящиеся в QUnit модульные тесты JavaScript в план сборки так, чтобы на каждой сборке, тесты JavaScript были бы запущены, и Бамбук интерпретирует результаты испытаний.

Предпочтительно я хотел бы иметь возможность сделать процесс сборки "автономным" так, чтобы никакие соединения с внешними серверами не требовались. Хорошие идеи о том, как выполнить это? Система CI, выполняющая процесс сборки, находится на сервере Linux Ubuntu.

59
задан miek 15 January 2010 в 09:20
поделиться

3 ответа

Как мне удалось придумать решение самого решения, я думал, что это будет хорошая идея поделиться этим. Подход не может быть безупречным, но это первый, который, казалось, работал. Не стесняйтесь публиковать улучшения и предложения.

Что я сделал в двух словах:

  • запустить экземпляр XVFB , виртуальный кадровыйБуфтер
  • с использованием JStestdriver :
    • Запустите экземпляр Firefox в виртуальный кадр (без головы)
    • . Захватить экземпляр Firefox и запустить тестовый набор
    • , генерирующую результаты тестов, совместимых на JUNIT .xml
  • Используйте бамбук Осмотрите файл результатов, чтобы пройти или выйти из строя

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

lib/
    JsTestDriver.jar
test/
    qunit/
            equiv.js
            QUnitAdapter.js
    jsTestDriver.conf
    run_js_tests.sh
    tests.js
test-reports/
build.xml

на сервере сборки:

  • Установите XVFB ( APT-Get-install XVFB )
  • Установить Firefox ( APT-Get Установите Firefox )

В ваше приложение для построения:

server: http://localhost:4224

load:
# Load QUnit adapters (may be omitted if QUnit is not used)
  - qunit/equiv.js
  - qunit/QUnitAdapter.js   

# Tests themselves (you'll want to add more files)
  - tests.js

Создайте файл сценария для запуска узлов и генерации модулей Результаты испытаний (пример в bash, run_js_tests.sh ):

#!/bin/bash
# directory to write output XML (if this doesn't exist, the results will not be generated!)
OUTPUT_DIR="../test-reports"
mkdir $OUTPUT_DIR

XVFB=`which Xvfb`
if [ "$?" -eq 1 ];
then
    echo "Xvfb not found."
    exit 1
fi

FIREFOX=`which firefox`
if [ "$?" -eq 1 ];
then
    echo "Firefox not found."
    exit 1
fi

$XVFB :99 -ac &    # launch virtual framebuffer into the background
PID_XVFB="$!"      # take the process ID
export DISPLAY=:99 # set display to use that of the xvfb

# run the tests
java -jar ../lib/JsTestDriver.jar --config jsTestDriver.conf --port 4224 --browser $FIREFOX --tests all --testOutput $OUTPUT_DIR

kill $PID_XVFB     # shut down xvfb (firefox will shut down cleanly by JsTestDriver)
echo "Done."

Создайте целью, которая вызывает скрипт:

<target name="test">        
    <exec executable="cmd" osfamily="windows">
        <!-- This might contain something different in a Windows environment -->
    </exec>

    <exec executable="/bin/bash" dir="test" osfamily="unix">
        <arg value="run_js_tests.sh" />
    </exec>
</target>   

Наконец, сообщите плану сборки Bamboo для оба теста Цель и ищите результаты теста Junit. Вот по умолчанию «** / тестовые отчеты / *. XML» будет делать нормально.

55
ответ дан 24 November 2019 в 18:32
поделиться

Вы можете использовать Rhino, безголовый браузер, чтобы запустить тесты устройства на вашем компьютере CI. Конечно, недостаток вот в том, что он не найдет ошибки, специфичные для браузера x ... но он пробивает установку 2-3 oSes на вашу коробку CI, чтобы покрыть все основные платформы ...

, но да, Этот вид отстой ... Но это может работать достаточно хорошо в сценарии CI.

0
ответ дан 24 November 2019 в 18:32
поделиться

как альтернатива, вы также можете попробовать TestSwarm. Я получил его и бегал, используя qunit, чтобы запустить мои тесты JS.

3
ответ дан 24 November 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: