Ответ 1
Как мне удалось решить проблему самостоятельно, я подумал, что было бы неплохо поделиться ею. Этот подход может быть безупречным, но это первый, который, казалось, работал. Не стесняйтесь публиковать улучшения и предложения.
Что я сделал в двух словах:
- Запустите экземпляр Xvfb, виртуальный фреймбуфер
- Использование JsTestDriver:
- запустите экземпляр Firefox в виртуальный фреймбуфер (без головы)
- захватить экземпляр Firefox и запустить тестовый пакет
- сгенерировать JUnit-совместимые результаты теста .XML
- Используйте Bamboo для проверки файла результатов для передачи или сбоя сборки
Далее я расскажу о более подробных этапах. Это то, что моя структура каталогов выглядела так:
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 install firefox
)
В ваше приложение для создания:
- Установить JsTestDriver: http://code.google.com/p/js-test-driver/
- добавьте адаптеры QUnit
equiv.js
иQUnitAdapter.js
- настроить JsTestDriver (
jsTestDriver.conf
):
- добавьте адаптеры QUnit
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
Создайте файл script для запуска модульных тестов и создания результатов теста (пример в 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."
Создайте цель Ant, которая вызывает script:
<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 как для вызова цели test
, так и для поиска результатов теста JUnit. Здесь по умолчанию будет "**/test-reports/*.xml"
.