Карма - Chrome не удался 2 раза (не запускается). Сдаваться

Я пытался запустить свои тесты, используя karma-chrome-launcher, но каждый раз, когда я запускаю свои тесты, это выдает эту ошибку:

ИНФОРМАЦИЯ [лаунчер]: запуск браузера Chrome ОШИБКА [лаунчер]: не удается запустить Chrome

INFO [launcher]: Trying to start Chrome again (1/2).
ERROR [launcher]: Cannot start Chrome

INFO [launcher]: Trying to start Chrome again (2/2).
ERROR [launcher]: Cannot start Chrome

ERROR [launcher]: Chrome failed 2 times (cannot start). Giving up.

Вот мой код karma.conf.js:

// Karma configuration
// Generated on Mon Mar 23 2015 14:04:19 GMT-0300 (BRT)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: 'www',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      'lib/ionic/js/angular/angular.js',
      'lib/ionic/js/angular/angular-animate.js',
      'lib/ionic/js/angular/angular-sanitize.js',

      '../node_modules/jasmine-core/lib/jasmine-core/jasmine.js',
      '../node_modules/mock-local-storage/lib/mock-localstorage.js',
      '../node_modules/angular-mocks/angular-mocks.js',
      //'../node_modules/requirejs/require.js',
      'lib/ionic/js/angular/angular-resource.js',
      'lib/ionic/js/angular-ui/angular-ui-router.js',
      'lib/ionic/js/ionic.js',
      'lib/ionic/js/ionic-angular.js',
      /*'../tests/libs/ngCordovaMocks.min.js',*/
      'js/lib/ng-cordova.min.js',
      'js/*.js',
      'js/controllers/*.js',
      'js/services/*.js',
      'js/factory/*.js',
      //'../tests/*.js',
      '../tests/**/*.js'
    ],


    // list of files to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress', 'html'],

    htmlReporter: {
      outputFile: '../tests/report/index.html'
    },


    // web server port
    port: 9876,

    plugins : [
      'karma-junit-reporter',
      'karma-jasmine',
      'karma-phantomjs-launcher',
      'karma-chrome-launcher'
      //'karma-htmlfile-reporter'
    ],

    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['PhantomJS'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

Я устанавливаю модуль здесь: https://www.npmjs.com/package/karma-chrome-launcher

Спасибо!

Ответ 1

У меня была такая же проблема и я попробовал много предлагаемых решений, которые я нашел, но окончательное решение для меня заключалось в том, чтобы удалить папку node_modules и получить все новое через npm install

Ответ 2

Имел ту же проблему с моей средой сборки.

Что я сделал, так это следовать совету Рафаэля Чихоки, чтобы включить отладку:

logLevel: config.LOG_DEBUG

Затем попытался запустить хром-браузер с точно такой же строкой, которая была видимой в его отладочном выходе.

Оказалось, что хром-браузер рушился из-за отсутствия шрифтов ttf. Итак:

apt-get install ttf-freefont

Решила, что для меня и кармы началась проблема запуска хром.

Ответ 3

Я заметил, что когда у меня была эта ошибка, когда я изменил спецификационный файл и сохранил его, он, похоже, снова работал. У меня было несколько ошибок в typescript, которые не нарушали тесты (передавая нулевые аргументы конструктору экземпляра виртуального компонента). Я не знаю, разрешали ли они ошибки, поскольку они существовали до того, когда они работали, или если сменить файл и сохранить его, обновил кеш.

Таким образом, это может означать, что очистка кеша в Chrome может также потенциально решить проблему. Теперь он снова работает для меня, поэтому я не могу проверить его.

Ответ 4

Решением для нас с angular cli было установить следующие свойства в karma.conf.js

 autoWatch: false,
 singleRun: true

Ответ 5

Я получил свое вдохновение отчасти: fooobar.com/questions/160918/...

Также используйте logLevel: config.LOG_DEBUG - он может помочь вам получить хорошую информацию о том, что вызывает вашу ошибку.

Проверьте следующие настройки в файле karma.conf:

captureTimeout: 60000,
browserNoActivityTimeout: 360000
browser: ["Firefox"]
  • captureTimeout - ваш браузер может занять некоторое время. LOG_DEBUG должен показать некоторую ошибку, связанную с захватом вашего браузера.
  • browserNoActivityTimeout - PhantomJS работает очень медленно (x10) на моей машине по сравнению с Firefox и Chrome. Карма может затянуться до завершения ваших тестов.
  • браузер - наш сервер jenkins работает на linux, где у нас не было двоичных файлов для chrome, поэтому нам пришлось переключиться на firefox

Если какая-либо из этих трех настроек не была установлена ​​правильно, мы получили бы ошибку, описанную выше.

Ответ 6

Я смог решить эту проблему, удалив абсолютный путь (src/examplePath) и изменив его на относительный путь (../../examplePath).

Пример изменения в спецификации:

import { myPackage } from 'src/myPath'; (похоже проблемы)

import { myPackage } from '../../../myPath'; (кажется, чтобы решить это)

Обратите внимание, что я пытался удалить модули узла и установить npm, но это не сработало. Я так не уверен, почему это важно.

Ответ 7

На всякий случай, если вы используете это за корпоративным прокси. Убедитесь, что вы включили свой 0.0.0.0 в переменную среды NO_PROXY.

В противном случае ваш тест сначала пройдет через брандмауэр, где он, скорее всего, не сможет достичь 0.0.0.0. Так что просто чтобы убедиться, что я включаю следующее в моем

NO_PROXY=127.0.0.1,localhost,0.0.0.0

Особенно, если вы выполняете свои тесты в среде контейнера (например, в конвейере сборки), ненастроенные переменные среды могут быть распространенной причиной нормальной работы ng test на локальном компьютере, но не удается подключиться к google-chrome в контейнере.