Поскольку мне самому удалось придумать решение, я подумал, что было бы неплохо поделиться им. Подход, возможно, не безупречный, но он первый, который, похоже, сработал. Не стесняйтесь публиковать улучшения и предложения.
Вкратце, что я сделал:
- Запустите экземпляр Xvfb, виртуального буфера кадра.
- Using JsTestDriver:
- launch an instance of Firefox into the virtual framebuffer (headlessly)
- захватите экземпляр 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
)
В ваше приложение, которое будет построено:
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."
Создайте цель Ant, которая вызывает сценарий:
<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"
по умолчанию.
person
miek
schedule
15.01.2010