Как заставить Трэвиса выполнять тесты Angular в Chrome (пожалуйста, установите переменную env CHROME_BIN)

Я работаю над примером проекта Angular, сгенерированным yoman.
Я могу запускать тесты кармы локально (я установил системную переменную 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 - все должно работать "из коробки", а в реальности все по-другому...
Кто-нибудь успешно настроил его?


Версии программного обеспечения, которые я использовал:

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


person vucalur    schedule 08.10.2013    source источник


Ответы (4)


Я боюсь сказать, что вы можете запустить только Firefox (потому что он уже установлен на виртуальной машине) и PhantomJS (потому что он портативный и безголовый).

Добавьте следующее в файл .travis.yml для запуска Firefox:

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

Тогда вам просто нужно включить Firefox в качестве браузера Karma в ваших конфигах.

Документация

person gustavohenke    schedule 17.10.2013
comment
документация для программы запуска Firefox с Karma: github.com/karma-runner/karma-firefox- пусковая установка - person ndequeker; 06.02.2014

Используйте это решение, чтобы запустить его с помощью предустановленной версии Chromium на виртуальной машине Travis-CI: 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);
};
person Jan Paepke    schedule 04.09.2014
comment
В этом ответе должно быть решение и шаги по его реализации, а не ссылка на ответ. Связь может разорваться в будущем. - person Splaktar; 13.11.2014
comment
Похоже, что это решение больше не работает из-за замены виртуальных машин travis-ci на OpenVZ. - person Splaktar; 13.11.2014

Основано на проблеме проекта karma-runner (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'];
    }

};

person Wilson Mendes    schedule 10.01.2015

Вариант 1: надстройка APT

Вы можете заставить Трэвиса выполнять тесты 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

В качестве альтернативы, если вашей средой виртуализации является Linux Trusty или ОС 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' ]
   }
}
person Courtney Pattison    schedule 28.11.2017