Решение состоит в совместном использовании инструментов BrowserStackLocal и browserstack-cli. 64-битная версия BrowserStackLocal для Linux создает туннель от сервера CircleCI к серверу Browserstack. После этого мы можем использовать browserstack-cli для запуска браузеров и запуска тестов из testem.
Скачать BrowserStackLocal
и вставьте в папку .browserstack
вашего проекта.
Создайте сценарий,
который запустится и создаст настройки для browserstack-cli. Вы должны настроить глобальные переменные в CircleCI, и вы можете тайно хранить там свои данные доступа. Назовем этот файл runthis.sh
и сохраним в папке .browserstack
. Этот скрипт также запустит ваш двоичный файл BrowserStackLocal, поэтому туннель будет существовать.
#!/bin/bash
echo "{\"username\":\"`echo $BS_USER`\", \"password\":\"`echo $BS_PASSWORD`\", \"privateKey\": \"`echo $BS_KEY`\", \"apiKey\":\"`echo $BS_KEY`\"}" >> ~/.browserstack/browserstack.json
./.browserstack/BrowserStackLocal $BS_KEY &
Конфигурация CircleCI
(circle.yml
) в основном зависит от вашего проекта. Нам нужно скопировать папку .browserstack
в домашнюю папку, установить Bower, browserstack-cli и testem.
Пример:
machine:
timezone:
Pacific/Auckland
node:
version: v0.10.28
dependencies:
pre:
- mv ./.browserstack ~/
- sh ~/.browserstack/runthis.sh
post:
- bower install
- npm install browserstack-cli -g
- npm install testem -g
test:
override:
- PATH=$PATH:bin grunt integration_tests_cli; testem ci
- PATH=$PATH:bin grunt tests_cli; testem ci
Конфигурация тестема:
testem.yml
- Большая часть зависит от вашего проекта. Важным в нашем случае является раздел launchers
.
framework: "qunit"
test_page: "tmp/index.html"
src_files:
- "tmp/assets/application.js"
- "tmp/tests.js"
- "tmp/integration_tests.js"
launchers:
bs_chrome:
command: browserstack launch chrome --attach
protocol: browser
timeout: 300
launch_in_ci:
- "PhantomJS"
- "bs_chrome"
launch_in_dev:
- "Chrome"
- "Firefox"
- "PhantomJS"
parallel: 2
Итак, если вы обновите свой проект на github, Circleci запустит ваш тест, подключится к стеку браузеров и будет использовать там браузеры...
person
Zoltan
schedule
13.08.2014