UNPKG

karma-yuitest-framework

Version:

A YUITest runner for the karma framework, see the tests for examples of how the tests should look. Note: I don't recommend writing new YUITest tests

100 lines (82 loc) 2.48 kB
(function(window) { 'use strict' function getResults(data) { var results = []; Object.getOwnPropertyNames(data).forEach( function (val) { if (typeof data[val] === 'object') { results.push(data[val]); } } ); return results; }; function getTestFiles(data) { var results = ['test']; Object.getOwnPropertyNames(data).forEach( function (val) { if (val.indexOf('-tests.js') > -1) { results.push(val.substring(val.lastIndexOf('/') + 1, val.lastIndexOf('.'))); } } ); return results; }; /** * YUI Test starter function factory. * * This function is invoked from the wrapper. * @see adapter.wrapper * * @param {Object} karma Karma runner instance. * @return {Function} Karma starter function. */ function createStartFn (karma) { // This function will be assigned to `window.__karma__.start`: return function () { var clientConfig = karma.config || {} var yuitestConfig = clientConfig.yuitest || {} var testFiles = getTestFiles(karma.files); YUI({useBrowserConsole: false}).use(testFiles, function (Y) { function handlePassTestResult(data) { karma.result( { id: '', suite: [], log: [], description: data.testName, success: true, skipped: false } ); }; function handleComplete(data) { karma.info({ total: data.results.total, time: data.results.duration }); var suites = getResults(data.results); suites.forEach(function(s) { var cases = getResults(s); cases.forEach(function(testCase) { var tests = getResults(testCase); tests.forEach(function(test) { karma.result({ id: testCase.name + test.name, suite: [s.name], log: test.result === 'fail' ? [test.message] : [], description: test.name, success: test.result === 'pass', skipped: test.result === 'ignore', time: 1 }); }); }); }); karma.complete(); }; var TestRunner = Y.Test.Runner; TestRunner.subscribe(TestRunner.COMPLETE_EVENT, handleComplete) TestRunner.run(); }); } } window.__karma__.start = createStartFn(window.__karma__) })(typeof window !== 'undefined' ? window : global);