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 выполнять желаемый эффект?

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

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']);

})();
Другие вопросы по тегам