diff --git a/tasks/check_plugins.js b/tasks/check_plugins.js new file mode 100644 index 0000000000000..b1960eab86f4b --- /dev/null +++ b/tasks/check_plugins.js @@ -0,0 +1,29 @@ +import fs from 'fs'; +import path from 'path'; + +export default function checkPlugins(grunt) { + grunt.registerTask('checkPlugins', 'Checks for plugins which may disrupt tests', function checkPlugins() { + const done = this.async(); + const pluginsDir = path.resolve('./plugins/'); + + fs.readdir(pluginsDir, (err, files) => { + if (!files) { + return done(); + } + + const plugins = files.filter(file => { + return fs.statSync(path.join(pluginsDir, file)).isDirectory(); + }); + + if (plugins.length) { + grunt.log.error('==================================================================================================='); + plugins.forEach(plugin => { + grunt.log.error(`The ${plugin} plugin may disrupt the test process. Consider removing it and re-running your tests.`); + }); + grunt.log.error('==================================================================================================='); + } + + done(); + }); + }); +} diff --git a/tasks/test.js b/tasks/test.js index 0489693d701dd..7e67e54f39126 100644 --- a/tasks/test.js +++ b/tasks/test.js @@ -1,4 +1,5 @@ import _, { keys } from 'lodash'; + const visualRegression = require('../utilities/visual_regression'); module.exports = function (grunt) { @@ -21,8 +22,19 @@ module.exports = function (grunt) { } ); - grunt.registerTask('test:server', [ 'esvm:test', 'simplemocha:all', 'esvm_shutdown:test' ]); - grunt.registerTask('test:browser', ['run:testServer', 'karma:unit']); + grunt.registerTask('test:server', [ + 'checkPlugins', + 'esvm:test', + 'simplemocha:all', + 'esvm_shutdown:test', + ]); + + grunt.registerTask('test:browser', [ + 'checkPlugins', + 'run:testServer', + 'karma:unit', + ]); + grunt.registerTask('test:browser-ci', () => { const ciShardTasks = keys(grunt.config.get('karma')) .filter(key => key.startsWith('ciShard-')) @@ -35,6 +47,7 @@ module.exports = function (grunt) { ...ciShardTasks ]); }); + grunt.registerTask('test:coverage', [ 'run:testCoverageServer', 'karma:coverage' ]); grunt.registerTask('test:quick', [ @@ -45,11 +58,13 @@ module.exports = function (grunt) { ]); grunt.registerTask('test:dev', [ + 'checkPlugins', 'run:devTestServer', 'karma:dev' ]); grunt.registerTask('test:ui', [ + 'checkPlugins', 'esvm:ui', 'run:testUIServer', 'run:chromeDriver', @@ -66,6 +81,7 @@ module.exports = function (grunt) { ]); grunt.registerTask('test:ui:runner', [ + 'checkPlugins', 'clean:screenshots', 'run:devChromeDriver', 'intern:dev'