From ac0ed77acd9f95faef27a37b501a21249e25b3f1 Mon Sep 17 00:00:00 2001 From: "Diego F.(EW7)" Date: Tue, 4 Oct 2016 12:56:19 -0300 Subject: [PATCH] Agrego Karma --- karma.conf.js | 79 ++++++++++++++++++++++++++++++++++++++++++ package.json | 32 +++++++++++++---- server/karma-server.js | 37 ++++++++++++++++++++ 3 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 karma.conf.js create mode 100644 server/karma-server.js diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..1452857 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,79 @@ +"use strict"; +/*jshint node:true */ + +module.exports = function(config, preConfig) { + 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: ['mocha','expect'], + + // list of files / patterns to load in the browser + files: [ + 'node_modules/require-bro/lib/require-bro.js', + 'node_modules/json4all/json4all.js', + 'lib/*.js', + 'test/*.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 + // /* ESPERANDO QUE ARREGLEN: https://github.com/karma-runner/karma/issues/1768 + preprocessors: { + 'json4all.js': preConfig.singleRun?['coverage']:[] /* COMENTAR PARA VER MÁS LIMPIO EL CÓDIGO */ + }, + coverageReporter: process.env.TRAVIS||preConfig.singleRun?{ + type : 'json', + dir : 'coverage/' + }:{ + type: 'lcov', + dir: 'coverage/' + }, + // */ + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress', 'coverage', 'coverage-html-index'], + + + // 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, + logLevel: config.LOG_ERROR, + + + // 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: ['Firefox', 'PhantomJS'].concat((process.env.TRAVIS?[]:['Chrome','Safari','IE'])), + /* + NO CAMBIAR MÁS BROWSERS DIRECTO DESDE ACÁ, INVOCAR DESDE LA LÍNEA DE PARÁMETROS ASÍ: + npm run test-cli -- --browsers Firefox + */ + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: !!process.env.TRAVIS || !!process.env.SINGLE_RUN || preConfig.singleRun + }); +}; diff --git a/package.json b/package.json index 9f13f87..997fc80 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,29 @@ "best-promise": "~0.2.4" }, "devDependencies": { + "body-parser": "~1.15.2", + "cookie-parser": "~1.4.3", "expect.js": "~0.3.1", - "istanbul": "~0.4.3", - "mocha": "~2.4.5", + "express": "~4.14.0", + "express-session": "~1.14.1", + "express-useragent": "~1.0.4", + "istanbul": "~0.4.5", + "karma": "~1.3.0", + "karma-chrome-launcher": "~2.0.0", + "karma-coverage": "~1.1.1", + "karma-coverage-html-index-reporter": "~1.0.2", + "karma-expect": "~1.1.3", + "karma-firefox-launcher": "~1.0.0", + "karma-ie-launcher": "~1.0.0", + "karma-mocha": "~1.2.0", + "karma-phantomjs-launcher": "~1.0.2", + "karma-safari-launcher": "~1.0.0", + "istanbul-middleware": "~0.2.2", + "mocha": "~3.1.0", + "phantomjs-prebuilt": "~2.1.12", - "best-globals": "~0.2.4", - "json4all": "~0.1.4", - "self-explain": "~0.0.6" + "require-bro": "~0.1.4", + "json4all": "~0.1.4" }, "engines": { "node": ">= 0.12" @@ -39,7 +55,11 @@ "test": "mocha --reporter spec --bail --check-leaks test/", "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "start": "node example/server.js" + "start": "node example/server.js", + "test-cli": "node server/karma-server.js --karma karma.conf.js --single-run", + "test-cli-h": "node server/karma-server.js --karma karma.conf.js", + "test-cli-ff": "npm run test-cli -- --browsers Firefox", + "report": "istanbul report" }, "qa-control": { "package-version": "0.3.0", diff --git a/server/karma-server.js b/server/karma-server.js new file mode 100644 index 0000000..7fc88be --- /dev/null +++ b/server/karma-server.js @@ -0,0 +1,37 @@ +"use strict"; + +//var _ = require('lodash'); +var express = require('express'); +var app = express(); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); +var session = require('express-session'); +//var fs = require('fs-promise'); +var path = require('path'); +//var readYaml = require('read-yaml-promise'); +//var extensionServeStatic = require('extension-serve-static'); + +var karma; +var karmaIndex=process.argv.indexOf('--karma'); +if(karmaIndex>0){ + var karma = require('karma'); + var karmaConfig = require('../karma.conf.js'); + var options; + karmaConfig({set:function(opts){ + options=opts; + var posBrowsers = process.argv.indexOf('--browsers') + if(posBrowsers>0){ + options.browsers=(process.argv[posBrowsers+1]||'').split(','); + } + }},{singleRun:process.argv.indexOf('--single-run')>0 || process.env.SINGLE_RUN}); + console.log('karma starting'); + var karmaServer = new karma.Server(options, function(exitCode) { + console.log('Karma has exited with ' + exitCode); + process.exit(exitCode); + }) + karmaServer.start(); + console.log('karma starting',options.port); +} + +app.use(cookieParser()); +app.use(bodyParser.urlencoded({extended:true}));