From 6f1a300585d6cfdc6b728e8b03f6a72d596c65d7 Mon Sep 17 00:00:00 2001 From: Vitaly Kramskikh Date: Thu, 14 Jul 2016 16:23:51 +0300 Subject: [PATCH] Added Karma integration This commit introduces Karma test runner which allows running Jasmine-based tests in browsers. Change-Id: I11652f31fb56e9f6ee0dbfd3359259bb3e4f68fd Co-Authored-By: Michael Krotscheck --- karma.conf.babel.js | 65 +++++++++++++++++++++++++++++++++++++++++++++ karma.conf.js | 2 ++ package.json | 9 ++++++- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 karma.conf.babel.js create mode 100644 karma.conf.js diff --git a/karma.conf.babel.js b/karma.conf.babel.js new file mode 100644 index 0000000..2793f24 --- /dev/null +++ b/karma.conf.babel.js @@ -0,0 +1,65 @@ +import webpackConfig from './webpack.config.babel'; + +export default (config) => { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine'], + + // list of files / patterns to load in the browser + files: [ + 'test/unit/**/*.js' + ], + + // list of files to exclude + exclude: [], + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + 'test/unit/**/*.js': ['webpack'] + }, + + // 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: false, + + // level of logging + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // Execute tests once, then exit. + singleRun: true, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Firefox', 'Chrome'], + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity, + + // We simulate a fully compiled browser application by using webpack. Since we only really + // use this during testing, the configuration is kept here. + webpack: webpackConfig, + + webpackMiddleware: { + // Don't spam the console. + noInfo: true + } + + }); +}; diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..43b69c5 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,2 @@ +require('babel-register'); +module.exports = require('./karma.conf.babel').default; diff --git a/package.json b/package.json index 34088f1..812fd57 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "description": "JavaScript API library for OpenStack.", "main": "dist/index.js", "scripts": { - "test": "jasmine JASMINE_CONFIG_PATH=test/unit/jasmine.json", + "test": "npm run test:node; npm run test:browser", + "test:node": "jasmine JASMINE_CONFIG_PATH=test/unit/jasmine.json", + "test:browser": "karma start", "lint": "eslint ./", "prepublish": "nsp check; npm run build", "build": "babel src -d dist && webpack", @@ -33,6 +35,11 @@ "eslint": "^2.4.0", "eslint-config-openstack": "2.0.0", "jasmine": "^2.4.1", + "karma": "^1.1.1", + "karma-chrome-launcher": "^1.0.1", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-webpack": "^1.7.0", "nsp": "^2.4.0", "webpack": "^1.13.1" },