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