Как заставить travis выполнить Angular тесты в Chrome ( "Пожалуйста, установите переменную env CHROME_BIN" )
Я работаю над образцом проекта Angular, созданным yeoman.
Я могу запускать тесты кармы локально (я установил системную переменную CHROME_BIN
, чтобы указать на хром-бинарник, но это могло быть сделано более элегантным способом. Просто быстро обходиться.)
Однако, когда вы пытаетесь создать успешную сборку с помощью travis, я получаю следующую ошибку:
ERROR [launcher]: Cannot start Chrome
Can not find the binary google-chrome
Please set env variable CHROME_BIN
Я выполнил описанные ниже шаги (в основном используя generator-travis-ci
)
Затем попытался исправить его с помощью этого - получил еще одну ошибку:
/home/travis/build.sh: line 142: ./.travis/scripts/install_chrome.sh: Permission denied
Это стандартное приложение Angular, созданное с Йоменом - все должно работать "из коробки", тогда как реальность различна...
Кто-нибудь успешно настроил его?
Программные версии, которые я использовал:
[email protected]:~/somewhere $ yo -v; grunt --version; bower -v
1.0.4
grunt-cli v0.1.9
grunt v0.4.1
1.2.6
моя работа Трэвиса: https://travis-ci.org/vucalur/editor-yeoman-test
Ответы
Ответ 1
Я боюсь сказать, что вы можете запускать только Firefox (потому что он уже установлен в виртуальной машине) и PhantomJS (потому что он переносимый и безголовый).
Добавьте в свой файл .travis.yml
следующее: Firefox:
before_install:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
Затем вам просто нужно включить Firefox в качестве браузера Karma в своих конфигурациях.
Документация
Ответ 2
Используйте это решение, чтобы запустить его с помощью предустановленной версии Chromium в Travis-CI VM:
https://github.com/karma-runner/karma/issues/1144#issuecomment-53633076
.travis.yml
node_js:
- "0.10"
script: node_modules/karma/bin/karma start test/karma.conf.js --single-run
before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
karma.conf.js
module.exports = function(config) {
var configuration = {
/* ... */
// start these browsers
browsers: ['Chrome', 'ChromeCanary'],
customLaunchers: {
Chrome_travis_ci: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},
/* ... */
};
if(process.env.TRAVIS){
configuration.browsers = ['Chrome_travis_ci'];
}
config.set(configuration);
};
Ответ 3
Основываясь на проблеме проекта карма-бегуна (https://github.com/karma-runner/karma/issues/1144#issuecomment-53633076) Вы должны установить переменную среды CHROME_BIN
в .travis.yml
и настроить customLauncher в вашей конфигурации файла кармы.
Например, ваше содержимое файла .travis.yml будет:
language: node_js
node_js:
- '0.10'
before_script:
- 'export CHROME_BIN=chromium-browser'
- 'export DISPLAY=:99.0'
- 'sh -e /etc/init.d/xvfb start'
- 'npm install -g bower karma grunt-cli jshint'
- 'npm install'
- 'bower install'
И ваш контент karma.conf.js
:
module.exports = function(config) {
config.set({
// ... your default content
// This is the new content for your travis-ci configuration test
// Custom launcher for Travis-CI
customLaunchers: {
Chrome_travis_ci: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: true
});
if(process.env.TRAVIS){
config.browsers = ['Chrome_travis_ci'];
}
};
Ответ 4
Вариант 1: APT Addon
Вы можете сделать тесты Travis Angular в Chrome, используя APT Addon, чтобы установить пакет google-chrome-stable
и запустить его без использования используя Xvfb.
# Set language
language: node_js
# Set version of node
node_js:
- node
# Set DISPLAY for Xvfb
env:
- DISPLAY=:99.0
# Use APT Addon to install Chrome
addons:
apt:
sources:
- google-chrome
packages:
- google-chrome-stable
# Start Xvfb so you can run headless Chrome
before_install:
- sh -e /etc/init.d/xvfb start
# Install packages
install:
- npm install
# Run tests in continuous integration mode
script:
- ng test --single-run
Вариант 2: Chrome Addon
В качестве альтернативы, если ваша среда виртуализации - это Linux Trusty или OS X, вы можете использовать аддон Chrome в режиме безглавых.
# Use a trusty version of linux
dist: trusty
# Set language
language: node_js
# Set version of node
node_js:
- node
# Install Chrome addon
addons:
- chrome: stable
# Install packages
install:
- npm install
# Run tests in continuous integration mode with headless chrome
script:
- karma start --single-run --browsers ChromeHeadless
Чтобы запустить тесты e2e, обновите protractor.conf.js
, чтобы указать безглавый хром.
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [ '--headless', '--disable-gpu' ]
}
}