From 49b7413af2d94c510ae43a6e314e3cd2770f90f0 Mon Sep 17 00:00:00 2001 From: Mykhailo Miroshnikov <mmiroshnikov@ebay.com> Date: Sat, 21 Mar 2015 19:28:35 +0200 Subject: [PATCH] MAGETWO-35118: JavaScript Unit Test Framework supports theme feature - Improved JavaScript tests' file structure and execution mechanism --- .../js/jasmine/assets/text/external.html | 6 - dev/tests/js/jasmine/assets/text/local.html | 6 - .../Magento/Ui/adminhtml/datepicker.js | 51 ----- .../old/integration/config/adminhtml.js | 10 - .../old/integration/config/frontend.js | 10 - .../jasmine/old/integration/config/global.js | 27 --- dev/tests/js/jasmine/old/require.config.js | 16 -- dev/tests/js/jasmine/old/shim.js | 46 ---- dev/tests/js/jasmine/old/spec_runner.js | 200 ------------------ dev/tests/js/jasmine/old/tools.js | 74 ------- dev/tests/js/jasmine/require.conf.js | 30 +++ .../Magento/Msrp/frontend/js/msrp.test.js} | 0 .../PageCache/frontend/js/page-cache.test.js} | 0 .../Magento/Ui/base/js}/lib/events.test.js | 0 .../base/js}/lib/ko/bind/datepicker.test.js | 0 .../apply.js => tests/lib/mage/apply.test.js} | 0 .../mage/requirejs/static-jsbuild.test.js} | 0 .../lib/mage/requirejs/static-text.test.js} | 0 .../lib}/mage/requirejs/statistician.test.js | 0 .../lib/mage/scripts.test.js} | 0 .../lib}/mage/template.test.js | 0 .../Magento/backend/require.config.js | 24 --- dev/tools/grunt/configs/connect.js | 6 +- dev/tools/grunt/configs/jasmine.js | 23 +- 24 files changed, 53 insertions(+), 476 deletions(-) delete mode 100644 dev/tests/js/jasmine/old/integration/Magento/Ui/adminhtml/datepicker.js delete mode 100644 dev/tests/js/jasmine/old/integration/config/adminhtml.js delete mode 100644 dev/tests/js/jasmine/old/integration/config/frontend.js delete mode 100644 dev/tests/js/jasmine/old/integration/config/global.js delete mode 100644 dev/tests/js/jasmine/old/require.config.js delete mode 100644 dev/tests/js/jasmine/old/shim.js delete mode 100644 dev/tests/js/jasmine/old/spec_runner.js delete mode 100644 dev/tests/js/jasmine/old/tools.js create mode 100644 dev/tests/js/jasmine/require.conf.js rename dev/tests/js/jasmine/{old/integration/Magento/Msrp/frontend/js/msrp.js => tests/app/code/Magento/Msrp/frontend/js/msrp.test.js} (100%) rename dev/tests/js/jasmine/{old/integration/Magento/PageCache/frontend/js/pageCache.js => tests/app/code/Magento/PageCache/frontend/js/page-cache.test.js} (100%) rename dev/tests/js/jasmine/{testsuite/adminhtml/Magento/backend/Magento_Ui => tests/app/code/Magento/Ui/base/js}/lib/events.test.js (100%) rename dev/tests/js/jasmine/{testsuite/adminhtml/Magento/backend/Magento_Ui => tests/app/code/Magento/Ui/base/js}/lib/ko/bind/datepicker.test.js (100%) rename dev/tests/js/jasmine/{old/integration/lib/mage/apply.js => tests/lib/mage/apply.test.js} (100%) rename dev/tests/js/jasmine/{old/integration/lib/mage/requirejs/static-jsbuild.js => tests/lib/mage/requirejs/static-jsbuild.test.js} (100%) rename dev/tests/js/jasmine/{old/integration/lib/mage/requirejs/static-text.js => tests/lib/mage/requirejs/static-text.test.js} (100%) rename dev/tests/js/jasmine/{testsuite/adminhtml/Magento/backend => tests/lib}/mage/requirejs/statistician.test.js (100%) rename dev/tests/js/jasmine/{old/integration/lib/mage/scripts.js => tests/lib/mage/scripts.test.js} (100%) rename dev/tests/js/jasmine/{testsuite/adminhtml/Magento/backend => tests/lib}/mage/template.test.js (100%) delete mode 100644 dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/require.config.js diff --git a/dev/tests/js/jasmine/assets/text/external.html b/dev/tests/js/jasmine/assets/text/external.html index 647a01feb12..af798c9ddb3 100644 --- a/dev/tests/js/jasmine/assets/text/external.html +++ b/dev/tests/js/jasmine/assets/text/external.html @@ -1,7 +1 @@ -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> <span>External Template</span> \ No newline at end of file diff --git a/dev/tests/js/jasmine/assets/text/local.html b/dev/tests/js/jasmine/assets/text/local.html index 52a288253f0..510f099bb72 100644 --- a/dev/tests/js/jasmine/assets/text/local.html +++ b/dev/tests/js/jasmine/assets/text/local.html @@ -1,7 +1 @@ -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> <span>Local Template</span> \ No newline at end of file diff --git a/dev/tests/js/jasmine/old/integration/Magento/Ui/adminhtml/datepicker.js b/dev/tests/js/jasmine/old/integration/Magento/Ui/adminhtml/datepicker.js deleted file mode 100644 index 48c728fcf2e..00000000000 --- a/dev/tests/js/jasmine/old/integration/Magento/Ui/adminhtml/datepicker.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -define([ - 'ko', - 'jquery', - 'moment', - 'Magento_Ui/js/lib/ko/bind/datepicker' -], function (ko, $, moment) { - 'use strict'; - - describe('Datepicker binding', function () { - var observable, - element; - - beforeEach(function () { - element = $('<input />'); - observable = ko.observable(); - - $(document.body).append(element); - - ko.applyBindingsToNode(element[0], { datepicker: observable }); - }); - - afterEach(function () { - element.remove(); - }); - - it('writes picked date\'s value to assigned observable', function () { - var openBtn, - todayBtn, - todayDate, - dateFormat, - result; - - dateFormat = element.datepicker('option', 'dateFormat'); - todayDate = moment().format(dateFormat); - - openBtn = $('img.ui-datepicker-trigger'); - todayBtn = $('[data-handler="today"]'); - - openBtn.click(); - todayBtn.click(); - - result = moment(observable()).format(dateFormat); - - expect(todayDate).toEqual(result); - }); - }); -}); \ No newline at end of file diff --git a/dev/tests/js/jasmine/old/integration/config/adminhtml.js b/dev/tests/js/jasmine/old/integration/config/adminhtml.js deleted file mode 100644 index a9a60a43aca..00000000000 --- a/dev/tests/js/jasmine/old/integration/config/adminhtml.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require.config({ - paths: { - 'jquery/ui': 'jquery/jquery-ui-1.9.2' - } -}); diff --git a/dev/tests/js/jasmine/old/integration/config/frontend.js b/dev/tests/js/jasmine/old/integration/config/frontend.js deleted file mode 100644 index 8791f57a90c..00000000000 --- a/dev/tests/js/jasmine/old/integration/config/frontend.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require.config({ - paths: { - 'jquery/ui': 'jquery/jquery-ui' - } -}) \ No newline at end of file diff --git a/dev/tests/js/jasmine/old/integration/config/global.js b/dev/tests/js/jasmine/old/integration/config/global.js deleted file mode 100644 index 0f9ac6f5749..00000000000 --- a/dev/tests/js/jasmine/old/integration/config/global.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -require.config({ - bundles: { - 'mage/requirejs/static': [ - 'jsbuild', - 'text', - 'buildTools' - ] - }, - config: { - jsbuild: { - 'dev/tests/js/spec/assets/jsbuild/local.js': 'define([], function () {\'use strict\'; return \'internal module\'; });' - }, - text: { - 'dev/tests/js/spec/assets/text/local.html': '<span>Local Template</span>' - } - }, - deps: [ - 'mage/requirejs/static' - ], - paths: { - 'jquery/ui': 'jquery/jquery-ui' - } -}); diff --git a/dev/tests/js/jasmine/old/require.config.js b/dev/tests/js/jasmine/old/require.config.js deleted file mode 100644 index 2df785bb996..00000000000 --- a/dev/tests/js/jasmine/old/require.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require.config({ - paths: { - 'ko': 'ko/ko', - 'domReady': 'requirejs/domReady', - 'text': 'requirejs/text', - 'tests': 'dev/tests/js/spec' - }, - shim: { - 'jquery/ui': ['jquery'] - } -}); diff --git a/dev/tests/js/jasmine/old/shim.js b/dev/tests/js/jasmine/old/shim.js deleted file mode 100644 index 0cbe7edb109..00000000000 --- a/dev/tests/js/jasmine/old/shim.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -(function () { - 'use strict'; - - var Ap = Array.prototype, - slice = Ap.slice, - Fp = Function.prototype; - - if (!Fp.bind) { - /** - * PhantomJS doesn't support Function.prototype.bind natively, so - * polyfill it whenever this module is required. - * - * @param {*} context - * @return {Function} - */ - Fp.bind = function (context) { - var func = this, - args = slice.call(arguments, 1); - - function bound() { - var invokedAsConstructor = func.prototype && (this instanceof func); - - return func.apply( - // Ignore the context parameter when invoking the bound function - // as a constructor. Note that this includes not only constructor - // invocations using the new keyword but also calls to base class - // constructors such as BaseClass.call(this, ...) or super(...). - !invokedAsConstructor && context || this, - args.concat(slice.call(arguments)) - ); - } - - // The bound function must share the .prototype of the unbound - // function so that any object created by one constructor will count - // as an instance of both constructors. - bound.prototype = func.prototype; - - return bound; - }; - } - -})(); diff --git a/dev/tests/js/jasmine/old/spec_runner.js b/dev/tests/js/jasmine/old/spec_runner.js deleted file mode 100644 index 733cad2f7c4..00000000000 --- a/dev/tests/js/jasmine/old/spec_runner.js +++ /dev/null @@ -1,200 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/** - * Creates jasmine configuration object - * - * @param {String} type - type of tests - * @param {String} dir - area dir - * @param {Number} port - port to run on - * @return {Object} - */ -function buildConfig(type, dir, port) { - 'use strict'; - - var isLib = dir === 'lib', - requireConfigs = [ - '<%= path.spec %>/require.config.js', - '<%= path.spec %>/' + type + '/config/global.js' - ], - specsRoot = '<%= path.spec %>/' + type, - specs = specsRoot + (isLib ? '/lib/**/*.js' : '/**/' + dir + '/**/*.js'); - - if (!isLib) { - requireConfigs.push('<%= path.spec %>/' + type + '/config/' + dir + '.js'); - } - - return { - src: '<%= path.spec %>/shim.js', - options: { - host: 'http://localhost:' + port, - specs: specs, - templateOptions: { - requireConfigFile: requireConfigs - } - } - }; -} - -module.exports = function (grunt) { - 'use strict'; - - var connect = require('connect'), - logger = require('morgan'), - serveStatic = require('serve-static'), - fs = require('fs'), - root; - - root = __dirname - .replace('/dev/tests/js/framework', '') - .replace('\\dev\\tests\\js\\framework', ''); - - grunt.registerMultiTask('specRunner', function () { - var app = connect(), - options, - area, - theme, - share, - middlewares; - - options = this.options({ - port: 3000, - theme: null, - areaDir: null, - shareDir: null, - enableLogs: false, - middleware: null - }); - - area = options.areaDir; - share = options.shareDir; - theme = options.theme; - - if (options.enableLogs) { - app.use(logger('dev')); - } - - app.use(function (req, res, next) { - var url = req.url, - match = url.match(/^\/([A-Z][^\/]+)_(\w+)\/(.+)$/), - vendor, - module, - path, - getModuleUrl, - getThemeUrl; - - /** - * Returns path to theme root folder - * - * @return {String} - */ - function themeRoot() { - return [ - '/app/design', - area, - vendor, - theme - ].join('/'); - } - - /** - * Based on 'thematic' parameter, returnes either path to theme's lib, - * or 'lib/web'. - * - * @param {Boolean} thematic - * @return {String} - */ - function lib(thematic) { - return thematic ? themeRoot() + '/web' : '/lib/web'; - } - - if (match !== null) { - vendor = match[1]; - module = match[2]; - path = match[3]; - - /** - * Assembles modular path. If 'shared' flag provided and is truthy, - * will use share dir instead of area one. - * - * @param {Boolean} shared - * @return {String} - */ - getModuleUrl = function (shared) { - return [ - '/app/code', - vendor, - module, - 'view', - !!shared ? share : area, - 'web', - path - ].join('/'); - }; - - /** - * Assembles theme modular path. - * - * @return {String} - */ - getThemeUrl = function () { - return [ - themeRoot(), - vendor + '_' + module, - 'web', - path - ].join('/'); - }; - - url = exists(url = getThemeUrl()) ? - url : - exists(url = getModuleUrl()) ? - url : getModuleUrl(true); - - } else if (canModify(url)) { - url = (exists(url = lib(true)) ? url : lib()) + req.url; - } - - req.url = url; - - next(); - }); - - if (options.middleware && typeof options.middleware === 'function') { - middlewares = options.middleware(connect, options); - - if (Array.isArray(middlewares)) { - middlewares.forEach(function (middleware) { - app.use(middleware); - }); - } - } - - app.use(serveStatic(root)); - - app.listen(options.port); - }); - - /** - * Defines if passed file path exists - * - * @param {String} path - * @return {Boolean} - */ - function exists(path) { - return fs.existsSync(root + path); - } - - /** - * Restricts url's which lead to '/_SpecRunner.html', '/dev/tests' or '.grunt' folders from being modified - * - * @param {String} url - * @return {Boolean} - */ - function canModify(url) { - return url.match(/^\/(\.grunt)|(dev\/tests)|(dev\\tests)|(_SpecRunner\.html)/) === null; - } - - return { configure: buildConfig }; -}; diff --git a/dev/tests/js/jasmine/old/tools.js b/dev/tests/js/jasmine/old/tools.js deleted file mode 100644 index 72aacf9bcd7..00000000000 --- a/dev/tests/js/jasmine/old/tools.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -define([ - 'underscore' -], function (_) { - 'use strict'; - - return { - /** - * Processes configuration for a testsuite. - * - * @param {(Object|String)} config - Suite configuration. - * @param {Object} tmplMap - Template map for test cases. - */ - init: function (config, tmplMap) { - var preset; - - if (_.isString(config)) { - preset = JSON.parse(config); - } - - this.applyBase(preset); - - if (tmplMap) { - this.applyTmpls(preset, tmplMap); - } - - return preset; - }, - - /** - * Extends first levell properties of provided object - * with a default configuration. - * - * @param {Object} data - Object to be modified. - */ - applyBase: function (data) { - var base = data.base = data.base || {}; - - _.each(data, function (item) { - _.defaults(item, base); - }); - }, - - /** - * Renderes template based on template map and a source data. - * - * @param {Object} source - Data for a lookup. - * @param {Object} map - Template map. - */ - applyTmpls: function (source, map) { - _.each(map, function (tmpl, suite) { - suite = source[suite]; - - suite.tmpl = _.template(tmpl)(suite); - }); - }, - - /** - * Removes element by provided id. - * - * @param {String} id - Id of the element. - */ - removeContainer: function (id) { - var node = document.getElementById(id); - - if (node) { - node.parentNode.removeChild(node); - } - } - }; -}); diff --git a/dev/tests/js/jasmine/require.conf.js b/dev/tests/js/jasmine/require.conf.js new file mode 100644 index 00000000000..2a96ba34260 --- /dev/null +++ b/dev/tests/js/jasmine/require.conf.js @@ -0,0 +1,30 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +require.config({ + baseUrl: './', + bundles: { + 'mage/requirejs/static': [ + 'buildTools', + 'jsbuild', + 'statistician', + 'text' + ] + }, + paths: { + 'tests': 'dev/tests/js/jasmine' + }, + config: { + jsbuild: { + 'dev/tests/js/jasmine/assets/jsbuild/local.js': 'define([], function () {\'use strict\'; return \'internal module\'; });' + }, + text: { + 'dev/tests/js/jasmine/assets/text/local.html': '<span>Local Template</span>' + } + }, + deps: [ + 'mage/requirejs/static' + ] +}); \ No newline at end of file diff --git a/dev/tests/js/jasmine/old/integration/Magento/Msrp/frontend/js/msrp.js b/dev/tests/js/jasmine/tests/app/code/Magento/Msrp/frontend/js/msrp.test.js similarity index 100% rename from dev/tests/js/jasmine/old/integration/Magento/Msrp/frontend/js/msrp.js rename to dev/tests/js/jasmine/tests/app/code/Magento/Msrp/frontend/js/msrp.test.js diff --git a/dev/tests/js/jasmine/old/integration/Magento/PageCache/frontend/js/pageCache.js b/dev/tests/js/jasmine/tests/app/code/Magento/PageCache/frontend/js/page-cache.test.js similarity index 100% rename from dev/tests/js/jasmine/old/integration/Magento/PageCache/frontend/js/pageCache.js rename to dev/tests/js/jasmine/tests/app/code/Magento/PageCache/frontend/js/page-cache.test.js diff --git a/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/Magento_Ui/lib/events.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/events.test.js similarity index 100% rename from dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/Magento_Ui/lib/events.test.js rename to dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/events.test.js diff --git a/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/Magento_Ui/lib/ko/bind/datepicker.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/datepicker.test.js similarity index 100% rename from dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/Magento_Ui/lib/ko/bind/datepicker.test.js rename to dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/datepicker.test.js diff --git a/dev/tests/js/jasmine/old/integration/lib/mage/apply.js b/dev/tests/js/jasmine/tests/lib/mage/apply.test.js similarity index 100% rename from dev/tests/js/jasmine/old/integration/lib/mage/apply.js rename to dev/tests/js/jasmine/tests/lib/mage/apply.test.js diff --git a/dev/tests/js/jasmine/old/integration/lib/mage/requirejs/static-jsbuild.js b/dev/tests/js/jasmine/tests/lib/mage/requirejs/static-jsbuild.test.js similarity index 100% rename from dev/tests/js/jasmine/old/integration/lib/mage/requirejs/static-jsbuild.js rename to dev/tests/js/jasmine/tests/lib/mage/requirejs/static-jsbuild.test.js diff --git a/dev/tests/js/jasmine/old/integration/lib/mage/requirejs/static-text.js b/dev/tests/js/jasmine/tests/lib/mage/requirejs/static-text.test.js similarity index 100% rename from dev/tests/js/jasmine/old/integration/lib/mage/requirejs/static-text.js rename to dev/tests/js/jasmine/tests/lib/mage/requirejs/static-text.test.js diff --git a/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/mage/requirejs/statistician.test.js b/dev/tests/js/jasmine/tests/lib/mage/requirejs/statistician.test.js similarity index 100% rename from dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/mage/requirejs/statistician.test.js rename to dev/tests/js/jasmine/tests/lib/mage/requirejs/statistician.test.js diff --git a/dev/tests/js/jasmine/old/integration/lib/mage/scripts.js b/dev/tests/js/jasmine/tests/lib/mage/scripts.test.js similarity index 100% rename from dev/tests/js/jasmine/old/integration/lib/mage/scripts.js rename to dev/tests/js/jasmine/tests/lib/mage/scripts.test.js diff --git a/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/mage/template.test.js b/dev/tests/js/jasmine/tests/lib/mage/template.test.js similarity index 100% rename from dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/mage/template.test.js rename to dev/tests/js/jasmine/tests/lib/mage/template.test.js diff --git a/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/require.config.js b/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/require.config.js deleted file mode 100644 index 8a9ec3cc79d..00000000000 --- a/dev/tests/js/jasmine/testsuite/adminhtml/Magento/backend/require.config.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -'use strict'; - -require.config({ - paths: { - 'jquery/ui': 'jquery/jquery-ui-1.9.2', - 'ko': 'ko/ko' - }, - shim: { - 'jquery/ui': ['jquery'] - }, - bundles: { - 'mage/requirejs/static': [ - 'buildTools' - ] - }, - deps: [ - 'mage/requirejs/static' - ] -}); \ No newline at end of file diff --git a/dev/tools/grunt/configs/connect.js b/dev/tools/grunt/configs/connect.js index 361bb58ffd4..62007a5bec9 100644 --- a/dev/tools/grunt/configs/connect.js +++ b/dev/tools/grunt/configs/connect.js @@ -16,7 +16,8 @@ var serveStatic = require('serve-static'), ignoredPaths = [ /^\/_SpecRunner.html/, /^\/dev\/tests/, - /^\/.grunt/ + /^\/.grunt/, + /^\/pub\/static/ ]; function serveAsIs(path) { @@ -47,6 +48,9 @@ tasks = {}; _.each(themes, function (config, theme) { tasks[theme] = { options: { + /** + * To debug in browser, add "keepalive" option and launch "http://localhost:%PORT%/_SpecRunner.html" + */ base: 'pub/static/' + config.area + '/' + config.name + '/' + config.locale, port: port++, middleware: middleware diff --git a/dev/tools/grunt/configs/jasmine.js b/dev/tools/grunt/configs/jasmine.js index c6960b631c9..b4d6e6f6b5c 100644 --- a/dev/tools/grunt/configs/jasmine.js +++ b/dev/tools/grunt/configs/jasmine.js @@ -23,16 +23,29 @@ themes = require('./themes'); tasks = {}; _.each(themes, function (config, theme) { - var requireJsConfig = root + '/testsuite/' + config.area + '/' + config.name + '/require.config.js', - specs; + var requireJsConfigs, + specs, + area = config.area, + vendorThemePath = config.name; + + requireJsConfigs = [ + 'pub/static/_requirejs/' + area + '/' + vendorThemePath + '/' + config.locale + '/requirejs-config.js', + root + '/require.conf.js', + root + '/tests/lib/**/*.conf.js', + root + '/tests/app/code/**/base/**/*.conf.js', + root + '/tests/app/code/**/' + area + '/**/*.conf.js', + root + '/tests/app/design/' + area + '/' + vendorThemePath + '/**/*.conf.js' + ]; specs = [ - root + '/testsuite/' + config.area + '/' + config.name + '/**/*.test.js', - '!' + requireJsConfig + root + '/tests/lib/**/*.test.js', + root + '/tests/app/code/**/base/**/*.test.js', + root + '/tests/app/code/**/' + area + '/**/*.test.js', + root + '/tests/app/design/' + area + '/' + vendorThemePath + '/' + theme + '/**/*.test.js' ]; tasks[theme] = { - src: requireJsConfig, + src: requireJsConfigs, options: { host: host + ':' + port++, template: root + '/spec_runner.html', -- GitLab