Comment faire travis exécuter des tests angulaires sur Chrome ("s'il Vous Plaît définir env variable Chrome BIN")
je travaille sur un exemple de projet angulaire généré par yeoman.
Je suis capable d'exécuter des tests Karma localement (j'ai mis la variable système CHROME_BIN
pour pointer vers le chrome binaire, mais cela aurait pu être fait de manière plus élégante. Juste un petit travail autour de.)
Cependant, en essayant de produire une construction réussie avec travis, j'obtiens l'erreur suivante:
ERROR [launcher]: Cannot start Chrome
Can not find the binary google-chrome
Please set env variable CHROME_BIN
j'ai suivi les étapes décrites ici (utilisant essentiellement generator-travis-ci
)
Puis a essayé de le corriger avec ce - a obtenu une autre erreur:
/home/travis/build.sh: line 142: ./.travis/scripts/install_chrome.sh: Permission denied
C'est une application angulaire standard créée avec Yeoman - les choses devraient fonctionner hors de la boîte, alors que la réalité est différente ...
Quelqu'un at-il correctement configuré?
Les versions de logiciels que j'utilise:
user@machine:~/somewhere $ yo -v; grunt --version; bower -v
1.0.4
grunt-cli v0.1.9
grunt v0.4.1
1.2.6
mon travail Travis: https://travis-ci.org/vucalur/editor-yeoman-test
4 réponses
j'ai peur de dire qu'on ne peut faire tourner que Firefox (parce qu'il est déjà installé dans la VM) et PhantomJS (parce qu'il est portable et sans tête).
ajouter ce qui suit dans votre fichier .travis.yml
pour démarrer Firefox:
before_install:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
alors vous aurez juste à activer Firefox comme navigateur Karma dans vos configs.
utilisez cette solution pour la faire fonctionner en utilisant la Version Chrome préinstallée dans 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);
};
basé dans Karma-runner Project issue ( https://github.com/karma-runner/karma/issues/1144#issuecomment-53633076 ) vous devez définir CHROME_BIN
variable d'environnement dans votre .travis.yml
et configurer un customLauncher dans votre configuration de fichier karma.
Par exemple, votre .Travis.le contenu du fichier yml sera:
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'
et votre karma.conf.js
contenu:
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'];
}
};
Option 1: APT Addon
vous pouvez faire effectuer à Travis des tests angulaires dans Chrome en utilisant le APT Addon pour installer le paquet google-chrome-stable
et l'exécuter sans tête en utilisant 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
Option 2: Chrome Addon
alternativement, si votre environnement de virtualisation est Linux Trusty ou OS X, vous pouvez utiliser le Chrome addon en mode sans tête.
# 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
pour exécuter les tests e2e, mettre à jour protractor.conf.js
pour spécifier le chrome sans tête.
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [ '--headless', '--disable-gpu' ]
}
}