UNPKG

karma-electron

Version:

Karma launcher and preprocessor for Electron

183 lines (163 loc) 6.39 kB
// Karma configuration // Generated on Thu Mar 03 2016 19:57:50 GMT-0600 (CST) var Set = require('collections/set'); // Disable security warnings process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = '1'; module.exports = function (config) { // Set up default files to test against var customContextFileTest = 'custom-context-file-test.js'; var eofCommentTest = 'eof-comment-test.js'; var failureTest = 'failure-test.js'; var filenameOverrideTest = 'filename-override-test.js'; var karmaTest = 'karma-test.js'; var mainRequireTest = 'main-require-test.js'; var nodeCommonTest = 'node-common-test.js'; var nodeRequireTest = 'node-require-test.js'; var nodeScriptSrcTest = 'node-script-src-test.js'; var phantomJsTest = 'phantomjs-test.js'; var sourceMapTest = 'source-map-test.js'; var successTest = 'success-test.js'; var uncaughtExceptionTest = 'uncaught-exception-test.js'; var testFiles = ['*-test.js']; var excludeFiles = new Set([ customContextFileTest, failureTest, filenameOverrideTest, karmaTest, mainRequireTest, nodeRequireTest, phantomJsTest, sourceMapTest, uncaughtExceptionTest ]); // If we are testing uncaught exceptions, then update our tests if (process.env.TEST_TYPE === 'CUSTOM_CONTEXT_FILE') { testFiles = [customContextFileTest]; excludeFiles.delete(customContextFileTest); } else if (process.env.TEST_TYPE === 'EOF_COMMENT') { testFiles = [eofCommentTest]; excludeFiles.delete(eofCommentTest); } else if (process.env.TEST_TYPE === 'FAILURE') { testFiles = [failureTest]; excludeFiles.delete(failureTest); } else if (process.env.TEST_TYPE === 'FILENAME_OVERRIDE') { testFiles = [filenameOverrideTest]; excludeFiles.delete(filenameOverrideTest); } else if (process.env.TEST_TYPE === 'KARMA') { testFiles = [karmaTest]; excludeFiles.delete(karmaTest); } else if (process.env.TEST_TYPE === 'MAIN_REQUIRE') { testFiles = [mainRequireTest]; excludeFiles.delete(mainRequireTest); } else if (process.env.TEST_TYPE === 'NO_NODE_INTEGRATION') { testFiles = [successTest, phantomJsTest]; excludeFiles = new Set(); } else if (process.env.TEST_TYPE === 'NODE_REQUIRE') { testFiles = [nodeCommonTest, nodeRequireTest]; excludeFiles.add(nodeScriptSrcTest); excludeFiles.delete(nodeRequireTest); } else if (process.env.TEST_TYPE === 'PHANTOMJS') { testFiles = [successTest, phantomJsTest]; excludeFiles = new Set(); } else if (process.env.TEST_TYPE === 'SOURCE_MAP') { testFiles = [sourceMapTest]; excludeFiles.delete(sourceMapTest); } else if (process.env.TEST_TYPE === 'UNCAUGHT_EXCEPTION') { testFiles = [uncaughtExceptionTest]; excludeFiles.delete(uncaughtExceptionTest); // DEV: Note that we do have scenarios where there is no `TEST_TYPE` specified at all } else if (process.env.TEST_TYPE) { throw new Error('Unrecognized test type "' + process.env.TEST_TYPE + '"'); } // Define our config config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', // Custom context/debug files and launchers customContextFile: process.env.TEST_TYPE === 'CUSTOM_CONTEXT_FILE' ? __dirname + '/test-files/custom-context.html' : null, customDebugFile: process.env.TEST_TYPE === 'CUSTOM_CONTEXT_FILE' ? __dirname + '/test-files/custom-debug.html' : null, customLaunchers: { ElectronWithNodeIntegration: { base: 'Electron', browserWindowOptions: { webPreferences: { nodeIntegration: true, contextIsolation: false } } }, ElectronMainRequire: { base: 'Electron', browserWindowOptions: { webPreferences: { nodeIntegration: true, contextIsolation: false } }, require: __dirname + '/test-files/main-require.js' }, VisibleElectron: { base: 'Electron', browserWindowOptions: { show: true, webPreferences: { nodeIntegration: true, contextIsolation: false } } } }, // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['mocha'], // list of files / patterns to load in the browser files: testFiles, // list of files to exclude exclude: excludeFiles.toArray(), browserNoActivityTimeout: 2000, client: { // DEV: We use `client` as these options affect the client side of `karma` // Based on https://github.com/karma-runner/karma-mocha/tree/v1.1.1#configuration __filenameOverride: process.env.TEST_TYPE === 'FILENAME_OVERRIDE' ? __dirname + '/test-files/filename-override-context.html' : null, loadScriptsViaRequire: process.env.TEST_TYPE === 'NODE_REQUIRE', useIframe: false }, // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { '*-test.js': ['electron'] }, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['progress'], // web server port port: 9876, // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, // enable / disable watching file and executing tests whenever any file changes autoWatch: true, // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['ElectronWithNodeIntegration'], // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: false, // Concurrency level // how many browser should be started simultaneous concurrency: Infinity, // Load in our module as a plugin // https://github.com/karma-runner/karma-chrome-launcher/blob/v0.2.2/examples/simple/karma.conf.js plugins: [ require('../../'), 'karma-mocha', 'karma-phantomjs-launcher' ] }); };