Подтвердить что ты не робот

Карма --авто-часы больше не работают

Установка My Karma, используемая для автоматического просмотра - когда я сохранил файл .js, он снова запустил тесты. Прошло несколько месяцев с тех пор, как я сделал какой-либо JavaScript, и теперь я снова использую его, функция автоматического просмотра не работает. Вот мой karma.conf:

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

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


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


        // list of files / patterns to load in the browser
        files: [
          'jQuery/jquery-1.10.2.js',
          'jasmine/jasmine.js',
          'jasmine-jquery/jasmine-jquery.js',
          'Angular/angular.js',
          'Angular/angular-route.js',
          'Angular/angular-mocks.js',
          'Angular/angular-animate.min.js',
          'Angular/angular-sanitize.min.js',
          'Angular/angular-cache.min.js',
          'emcommon.js',
          'Moment/moment.js',
          'ViewModels/Common/*.js',
          'ViewModels/Settings/*.js',
          'Tests/Common/*.js',
          'Tests/Settings/*.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: {
            '../ViewModels/**/*.js': 'coverage'
        },


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

        coverageReporter: {
            type: 'html',
        },

        // web server port
        port: 9876,


        // 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,
        usePolling: true,


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

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

Я читал и следил за советом здесь. Я пробовал установить для параметра usePolling значение true. Я использовал три различные программы для сохранения файла (VS, Sublime и Notepad), чтобы это исключить. Если я остановлю Karma и перезагрузите его, он подберет изменения, и они пройдут/сбой, как ожидалось, но он не увидит изменения файлов во время его работы.

Перемещение с Кармы 0.12.7 до 0.13.0 не имеет никакого отношения к проблеме.

4b9b3361

Ответ 1

Где выход?

Прежде всего, я думаю, что было бы полезно увидеть вывод прогона со следующими параметрами CLI:

# add --single-run, or kill the process manually when finished.
karma start karma.conf.js --auto-watch --log-level debug > log.txt

Затем вставьте содержимое log.txt в pastebin. Вероятно, это было бы слишком большим, чтобы внести изменения в ваш вопрос.


Возможно, другой браузер, возможно,

Я бы также попытался запустить другой браузер, чем Chrome, я бы не исключил, что это может быть причиной проблемы в качестве каждого примера в karma-runner # 895 показывает Chrome в качестве браузера по выбору (хотя это старая проблема и разрешена ее внешностью).

Попробуйте использовать PhantomJS и/или Chrome Canary, и посмотрите, делает ли это трюк.


Перейдите с помощником задачи?

У вас есть шанс, что у вас есть бегун задачи как часть вашей локальной настройки? Если это так, вы можете убить --auto-watch и использовать эквивалентное решение в списке задач по вашему выбору.

Как мы установили нашу задачу:

karma: {
  options: {
    configFile: 'karma.conf.js'
  },
  watch: {
    background: false,
    singleRun: false
  }
}

Со следующими настройками karma.conf:

module.exports = function(config) {
  config.set({
    frameworks: ['mocha'],
    basePath: '',
    files: [ /** redacted **/ ],
    urlRoot: '/base/app/',
    reporters: ['progress'],
    logLevel: config.LOG_INFO,
    browsers: ['PhantomJS'],
    singleRun: true
  });
};

Попробуйте запустить с помощью sudo?


Конфигурация пустого шифера

Запустите karma init newconf.js, затем дайте этому вихрь:

karma start newconf.js --auto-watch

Я думаю, что некоторые результаты ваших тестов будут очень полезны здесь. И предпочтительно некоторые номера версий:

  • Chrome
  • NodeJS
  • Karma
  • Схема тестирования (Mocha/Chai, Жасмин)

Edit # 1

Пожалуйста, пойдите с karma.conf, как показано ниже:

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      'some_jasmine_spec.js',
    ],
    reporters: ['progress'],
    port: 9000,
    colors: true,
    logLevel: config.LOG_DEBUG,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

Если файл some_jasmine_spec.js будет выглядеть так:

describe('dummy_test', function() {
  it('just runs', function() {
    expect(true).to.be.false;
  });
});

Поместите файл some_jasmine_spec.js в ту же папку, что и урезанный файл karma.conf, и посмотрите, дает ли он другой результат.


Edit # 2

Я только заметил, что последняя строка в вашем массиве files не читается. Если вы посмотрите на вывод своего первого файла журнала:

# The last DEBUG [watcher] entry
# 27 - [36m17 07 2015 14:35:37.160:DEBUG [watcher]: [39mWatching "c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings"

# The last DEBUG [web-server] entry
# 102 - [36m17 07 2015 14:35:38.321:DEBUG [web-server]: [39mserving (cached): c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings/viewschedulemodule.tests.js

Итак, ни один из файлов в шаблоне ./*/*.js не читается.

Я бы попытался изменить его на ./**/*.js или даже **/*.js.

Тем не менее, фиктивный тест на жасмин должен был сделать трюк, если бы он был связан с не включенными файлами.

Изменить # 3

Бегущий на идеях здесь;

Я бы попробовал изменить basePath на ../ и удалить ../ из всех других ссылок на файлы. Это, скорее, царапины моего (зудящего) любопытства, чем "действительная" проблема. Но эй, стараясь не повредить.


Изменить # 4

Последнее усилие канавы; Pop открыть терминал и запустить следующие (извините, я на UNIX основе системы - мой MS-DOS не до пар, так сказать...). Пусть все это очистит, убейте кеш, переустановите нужные вам пакеты и отдайте их другому.

Очистка/выход

  • $ rm -rf node_modules # clean out your local node modules
  • $ npm cache clean # clean out the npm cache
  • $ npm uninstall karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # uninstall assorted karma/jasmine libraries globally

Резервное копирование

  • $ mv karma.conf.js karma.conf.bak.js # backup your karma.conf

Переустановка

  • $ npm install karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # reinstall assorted karma/jasmine libraries globally
  • $ npm install # reinstall your local node modules

Повторная инициализация

  • $ karma init # initialise a new karma.conf.js file
    • сделать как можно меньше изменений для нового файла karma.conf.js
  • $ karma start karma.conf.js --auto-watch --log-level debug
    • опционально, вытащите вышеприведенный код в новый log.txt и загрузите его.
    • это так, что мы можем сравнить эти два и увидеть, если выделяется действительно.

Отладка

Убедитесь, что singleRun установлен в false в вашем новом файле karma.conf.js, затем всплывает подключенный браузер и перейдите к http://localhost:9876.

Нажмите кнопку отладки, откройте свои инструменты разработчика (веб-инспектор/консоль) и изучите, что происходит при перезагрузке страницы.

Если это не имеет никакого значения, я затрудняюсь.

Ответ 2

Для записи я в конечном итоге исправил ее:

  • используя новую папку для моего локального node_modules
  • с помощью оболочки git bash
  • убедитесь, что переменная среды PYTHON установлена ​​с помощью разделителей стилей git bash
  • установка версии Karma v0.12.0

Никто из них не работал сам по себе, для меня. Надеюсь, это поможет кому-то еще.