Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 117 additions & 16 deletions Gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
/**
* Dev dependencies
*/

var gulp = require('gulp');
var connect = require('gulp-connect');
var gutil = require('gulp-util');
var uglify = require('gulp-uglify');
var eslint = require('gulp-eslint');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var minifyCSS = require('gulp-minify-css');
var autoprefixer = require('gulp-autoprefixer');
var concat = require('gulp-concat');

var gulp = require('gulp'),
connect = require('gulp-connect'),
gutil = require('gulp-util'),
uglify = require('gulp-uglify'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
minifyCSS = require('gulp-minify-css'),
autoprefixer = require('gulp-autoprefixer'),
concat = require('gulp-concat'),
deleteLines = require('gulp-delete-lines'),
Server = require('karma').Server,
fpath = require('path'),
child_process = require('child_process'),
eslint = require('gulp-eslint');
/**
* File paths
*
Expand Down Expand Up @@ -44,6 +46,10 @@ var path = {
jsAngular: {
src: basePath.src + '/' + jsAngularDir + '/',
dest: basePath.dest + '/' + jsAngularDir + '/'
},
e2e:{
src:'./tests/integration/',
dest:'./tests'
}
};
var jsModuleFile = path.jsAngular.src + 'core/app-setup/app.module.js';
Expand All @@ -56,8 +62,10 @@ var jsModuleFile = path.jsAngular.src + 'core/app-setup/app.module.js';

var files = {};

files.e2e = [path.e2e.src];
files.specs= [path.jsAngular.src + '**/*.spec.js','!'+path.jsAngular.src+'reStart-app.spec.js'];
files.scssSrc = [path.css.src + '**/*.scss'];
files.jsUserSrcAngular = [path.jsAngular.src + '**/*.js', '!' + path.jsAngular.src + jsAngularScript];
files.jsUserSrcAngular = [path.jsAngular.src + '**/*.js', '!' + path.jsAngular.src + jsAngularScript , '!'+path.jsAngular.src + '**/*.spec.js'];
files.jsUserSrcAssets = [path.js.src + '**/*.js', '!' + path.js.src + jsUserScript, '!' + path.js.src + 'vendor/*'];
files.jsUserSrcAll = files.jsUserSrcAngular.concat(files.jsUserSrcAssets);
files.jsVendorSrc = [path.jsVendor.src + 'jquery.js', path.jsVendor.src + 'angular.js', path.jsVendor.src + '**/*.js', '!' + path.jsVendor.src + 'modernizr.min.js', '!' + path.jsVendor.src + 'vendor.js'];
Expand Down Expand Up @@ -174,13 +182,51 @@ function jsVendor() {
*/
function jsAngular() {
return gulp.src([jsModuleFile].concat(files.jsUserSrcAngular))
//remove lines marked with //test code if production
.pipe(isProduction ?deleteLines({
'filters': [
/test code/
]
}): gutil.noop())
.pipe(sourcemaps.init())
.pipe(concat(jsAngularScript))
.pipe(sourcemaps.write())
.pipe(isProduction ? uglify() : gutil.noop() )
.pipe(gulp.dest(path.jsAngular.dest));
}

/**
* function tests()
*
* Init sourcemaps
* Concatenate .spec files
* Write sourcemaps
* Save
*/
function tests() {
return gulp.src(files.specs)
.pipe(sourcemaps.init())
.pipe(concat('reStart-app.spec.js'))
.pipe(sourcemaps.write())
.pipe(gulp.dest(path.jsAngular.dest));
}

/**
* function e2e()
*
* Init sourcemaps
* Concatenate .spec files
* Write sourcemaps
* Save
*/
function e2e() {
return gulp.src(files.e2e)
.pipe(sourcemaps.init())
.pipe(concat('e2e.js'))
.pipe(sourcemaps.write())
.pipe(gulp.dest(path.e2e.dest));
}

/**
* function serve()
*
Expand All @@ -200,6 +246,41 @@ function serve() {
}

/**
* function karma()
*
* Start karma test runner
* Use singleRun false for CI testing
*/
function karma(){
return gulp.task('karma', function (done) {
new Server({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, done).start();
});
}

/**
* function e2eTests
*
* Start protractor and runs e2e tests
*/
function e2eTests(){
var argv = process.argv.slice(3); // forward args to protractor
return child_process.spawn(getProtractorBinary('protractor'), argv, {
stdio: 'inherit'
})//.once('close', done);
}
function getProtractorBinary(binaryName){
var winExt = /^win/.test(process.platform)? '.cmd' : '';
var pkgPath = require.resolve('protractor');
var protractorDir = fpath.resolve(fpath.join(fpath.dirname(pkgPath), '..', 'bin'));
return fpath.join(protractorDir, '/'+binaryName+winExt);
}


/**

* Default build task
*
* If not production, watch for file changes and execute the appropriate task
Expand All @@ -226,8 +307,13 @@ function defaultTask() {

// compile JS Angular files
gulp.watch(files.jsUserSrcAngular, ['jsAngular']);

//compile jasmine unit tests
gulp.watch(files.specs, ['tests']);

//compile protractor tests
gulp.watch(files.e2e, ['e2e']);
}

/**
* Gulp tasks
*/
Expand All @@ -237,6 +323,21 @@ gulp.task('jsValidate', jsValidate);
gulp.task('jsUser', jsUser);
gulp.task('jsVendor', jsVendor);
gulp.task('jsAngular', jsAngular);
gulp.task('tests', tests);
gulp.task('e2e', e2e);
gulp.task('serve', serve);
gulp.task('js', ['jsVendor', 'jsValidate', 'jsUser', 'jsAngular']);
gulp.task('default', ['serve', 'styles', 'js'], defaultTask);
//Start karma after files have been rebuilt and test compiled
gulp.task('karma',['jsUser','jsVendor','jsAngular','tests'],karma);
//Start protractor after karma runs
gulp.task('protractor',['e2e','serve'],e2eTests);

/**
* Default build task
*
* If not production, watch for file changes and execute the appropriate task
*
* Use "gulp --prod" to trigger production/build mode from commandline
*/

gulp.task('js',['jsVendor', 'jsValidate', 'jsUser', 'jsAngular']);
gulp.task('default',['serve', 'styles', 'js'], defaultTask);
79 changes: 79 additions & 0 deletions karma.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Karma configuration
// Generated on Tue Dec 01 2015 14:06:19 GMT-0500 (Eastern Standard Time)

module.exports = function(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: [
'src/assets/js/vendor/vendor.js',
'src/assets/js/scripts.js',
'src/reStart-app/reStart-app.js',
'src/reStart-app/reStart-app.spec.js',
'src/reStart-app/**/*.html'
],


// 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: {
"src/reStart-app/**/*.tpl.html": ["ng-html2js"]
},

ngHtml2JsPreprocessor: {
stripPrefix:'src/',
// the name of the Angular module to create
moduleName: 'templates'
},

// 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: ['Chrome'],


// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,

// Concurrency level
// how many browser should be started simultanous
concurrency: Infinity
})
}
10 changes: 9 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,18 @@
"gulp-connect": "^2.2.0",
"gulp-debug": "^2.0.1",
"gulp-eslint": "^1.1.1",
"gulp-delete-lines": "0.0.7",
"gulp-minify-css": "^1.0.0",
"gulp-protractor": "^2.0.0",
"gulp-sass": "^2.0.4",
"gulp-sourcemaps": "^1.5.1",
"gulp-uglify": "^1.1.0",
"gulp-util": "^3.0.4"
"gulp-util": "^3.0.4",
"jasmine-core": "^2.3.4",
"karma": "^0.13.15",
"karma-chrome-launcher": "^0.2.2",
"karma-jasmine": "^0.3.6",
"karma-ng-html2js-preprocessor": "^0.2.0",
"protractor": "^3.0.0"
}
}
7 changes: 7 additions & 0 deletions protractor.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
exports.config = {
framework: 'jasmine',
//version must match jar file
seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.48.2.jar',
//seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['./tests/e2e.js']
};
17 changes: 7 additions & 10 deletions src/assets/css/styles.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/assets/js/scripts.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading