Web Component Tester — задача gulp для запуска теста с каждой сборкой

Я хочу поместить внутрь gulpfile что-то вроде:

require('web-component-tester').gulp.init(gulp);
gulp.task('default', function() {
  gulp.watch(['elements/**', 'test/**'], ['test:local']);
});

Целью является просмотр папок тестов или папок элементов (с компонентами Polymer). Если какие-то из них будут меняться, запускайте тест с каждой сборкой.

мой wct.conf.js:

module.exports = {
  root: '.tmp/elements/',
  suites:      ['**/test/'],
  plugins: {
    local: {browsers: ['chrome']},
  }
};

Я нашел код выше на какой-то странице, но после того, как я добавил несколько тестов, а затем набрал gulp в своем терминале, я обнаружил ошибку, потому что папка .tmp не обновляется, а странные ошибки, такие как Polymer is not definedили ajax.generateRequest, не являются функцией. У меня также были правильные ошибки, когда я намеренно допустил ошибку в тесте, чтобы провалить его, поэтому похоже, что что-то в порядке, но не совсем.

Я добавляю тесты в существующий проект с большим количеством файлов. Когда я попытался сделать то же самое в пустом проекте, я также получил ту же ошибку, пока не набрал bower install.

Есть ли шанс, что это проблема с зависимостями беседки? Или вы хоть представляете, что не так? Подходит ли эта часть кода в gulpfile для достижения желаемого эффекта?

Большое спасибо.


person bodley    schedule 06.10.2016    source источник


Ответы (1)


Я не отвечаю на ваш вопрос прямо, потому что это было давно, так как я сделал это таким образом. Но следующее определяет подзадачу из числа других, чтобы определить задачу под названием «клиент», которая затем запускает тесты в буфере кадров (поэтому у меня нет тревожных окон, появляющихся повсюду при запуске тестов — они просто запускаются и вывод в окне консоли.Это эффективно порождает версию wct для командной строки, и у меня вообще нет файла wct.conf.

(function() {
  'use strict';

  const spawn = require('child_process').spawn;

  module.exports = function(gulp) {
    gulp.task('test:client',['lint:client'], () => {
      var child = spawn('xvfb-run', ['-a', 'wct', '--color'], {cwd: process.cwd()});

      child.stdout.setEncoding('utf8');

      child.stdout.on('data', function(data) {
        process.stdout.write(data);
      });

      child.stderr.setEncoding('utf8');
      child.stderr.on('data', function(data) {
        process.stderr.write(data);
      });
    });

    gulp.task('client',function() {
      gulp.watch([
        'app/index.html',
        'app/src/*.html',
        'app/test/*.html',
        'aoo/mocks/*.html',
        'gulpfile.js',
        'tasks/*.js'
      ],['test:client']);
    });

  };
})();

Этот файл представляет собой один файл в каталоге задач (который, как вы видите, я смотрю)

Мой gulpfile загружает это и другие подобные задачи (я скопировал это из команды angular.js, которая использовала его для загрузки некоторых задач, поддерживающих angular)

(function() {
  'use strict';

  require('dotenv').config(); //load our environment

  var gulp = require('gulp');

  var includeAll = require('include-all');

  /**
   * Loads task modules from a relative path.
   */
  function loadTasks(relPath) {
    return includeAll({
      dirname: require('path').resolve(__dirname, relPath),
      filter: /(.+)\.js$/
    }) || {};
  }
  // *
  //  * Invokes the function from a Gulp configuration module with
  //  * a single argument - the `gulp` object.

  function addTasks(tasks) {
    for (var taskName in tasks) {
      if (tasks.hasOwnProperty(taskName)) {
        tasks[taskName](gulp);
      }
    }
  }
  /**
   * Add all Gulp tasks to the gulpfile.
   * Tasks are in `tasks/`
   */
  addTasks(loadTasks('tasks/'));

  // require('gulp-load-tasks')(__dirname + '/tasks');
  gulp.task('default', ['lint:gulp','client','server']);

})();
person akc42    schedule 06.10.2016