Поскольку мне удалось придумать решение самостоятельно, я подумал, что было бы хорошей идеей поделиться им. Подход, возможно, не безупречен, но, похоже, он первый работает. Не стесняйтесь публиковать улучшения и предложения.
Что я сделал в двух словах:
- Запустить экземпляр 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
)
В ваше приложение будет встроено:
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
):
* * 1068
Создайте цель 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"
подойдет.