Web组件测试程序 - 用于为每个构建运行测试的gulp任务

时间:2016-10-06 07:14:31

标签: gulp polymer bower web-component-tester wct

我想把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或{等奇怪的错误{1}}不是一个功能。当我故意在测试中犯错误时,我也得到了正确的错误,所以看起来好像没什么,但根本没有。

我将测试添加到包含大量文件的现有项目中。当我尝试在空项目上做同样的事情时,我也遇到了同样的错误,直到我输入ajax.generateRequest

这有可能是凉亭依赖的问题吗? 或者你知道出了什么问题吗? gulpfile中的这部分代码是否正确执行所需的效果?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我没有直接回答你的问题,因为我已经这样做了一段时间。但是下面定义了一个子任务来定义一个名为'client'的任务,然后在帧缓冲区中运行测试(所以当测试运行时我没有在整个地方弹出令人不安的窗口 - 它们只是运行并在控制台窗口中输出。它有效地生成了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团队中复制了这个,用于加载一些支持角度的任务)

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

})();