37

我正在研究由 yeoman 生成的示例 Angular 项目。
我能够在本地运行业力测试(我将系统变量设置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


这是一个使用 Yeoman 创建的标准 Angular 应用程序 - 事情应该开箱即用,而实际情况则不同......
有人成功配置了吗?


我一直在使用的软件版本:

user@machine:~/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

4

4 回答 4

30

使用此解决方案在 Travis-CI VM 中使用预安装的 Chromium 版本运行它: 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

业力.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);
};
于 2014-09-04T09:15:30.363 回答
18

恐怕只能运行 Firefox(因为它已经安装在 VM 中)和 PhantomJS(因为它是可移植且无头的)。

将以下内容添加到您的.travis.yml文件中以启动 Firefox:

before_install:
  - "export DISPLAY=:99.0"
  - "sh -e /etc/init.d/xvfb start"

然后你只需要在你的配置中启用 Firefox 作为 Karma 浏览器。

文档

于 2013-10-17T00:11:55.757 回答
7

基于 karma-runner 项目问题 ( https://github.com/karma-runner/karma/issues/1144#issuecomment-53633076 ) 您应该在您的 karma 文件配置中设置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'];
    }

};

于 2015-01-10T05:12:16.223 回答
4

选项 1:APT 插件

您可以让 Travis 在 Chrome 中执行 Angular 测试,方法是使用APT 插件安装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 插件

或者,如果您的虚拟化环境是 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以指定 headless chrome。

capabilities: {
  browserName: 'chrome',

  chromeOptions: {
     args: [ '--headless', '--disable-gpu' ]
   }
}
于 2017-11-28T19:42:56.930 回答