Created
May 21, 2014 11:09
-
-
Save Hounddog/50c4a6eef16cf751076c to your computer and use it in GitHub Desktop.
Protractor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Generated on 2014-02-11 using generator-angular 0.7.1 | |
'use strict'; | |
// # Globbing | |
// for performance reasons we're only matching one level down: | |
// 'test/spec/{,*/}*.js' | |
// use this if you want to recursively match all subfolders: | |
// 'test/spec/**/*.js' | |
module.exports = function (grunt) { | |
// Load grunt tasks automatically | |
//require('load-grunt-tasks')(grunt); | |
require('jit-grunt')(grunt, { | |
ngconstant: 'grunt-ng-constant', | |
useminPrepare: 'grunt-usemin', | |
cdnify: 'grunt-google-cdn', | |
protractor: 'grunt-protractor-runner' | |
}); | |
var modRewrite = require('connect-modrewrite'); | |
// Time how long tasks take. Can help when optimizing build times | |
require('time-grunt')(grunt); | |
// Define the configuration for all the tasks | |
grunt.initConfig({ | |
// Project settings | |
yeoman: { | |
// configurable paths | |
app: require('./bower.json').appPath || 'app', | |
dist: 'dist' | |
}, | |
html2js: { | |
main: { | |
src: ['<%= yeoman.app %>/widget/views/**/*.html'], | |
dest: '.tmp/widget/scripts/templates.js' | |
}, | |
}, | |
ngconstant: { | |
options: { | |
space: ' ' | |
}, | |
// Environment targets | |
development: [{ | |
dest: '.tmp/scripts/config.js', | |
wrap: '"use strict";\n\n <%= __ngModule %>', | |
name: 'config', | |
constants: { | |
ENV: { | |
name: 'development', | |
apiEndpoint: 'http://api.clingr.dev', | |
featureFlag: { | |
headerConfig: true | |
} | |
} | |
} | |
}], | |
production: [{ | |
dest: '.tmp/scripts/config.js', | |
wrap: '"use strict";\n\n <%= __ngModule %>', | |
name: 'config', | |
constants: { | |
ENV: { | |
name: 'production', | |
apiEndpoint: 'https://api.clingr.de', | |
featureFlag: { | |
headerConfig: true | |
} | |
} | |
} | |
}] | |
}, | |
// Watches files for changes and runs tasks based on the changed files | |
watch: { | |
js: { | |
files: ['<%= yeoman.app %>/scripts/{,*/}*.js'], | |
tasks: ['newer:jshint:all', 'karma', 'protractor'], | |
options: { | |
livereload: true | |
} | |
}, | |
jsTest: { | |
files: ['test/spec/{,*/}*.js', 'test/e2e/{,*/}*.js'], | |
tasks: ['newer:jshint:test', 'karma', 'protractor'] | |
}, | |
compass: { | |
files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], | |
tasks: ['compass:server', 'autoprefixer'] | |
}, | |
gruntfile: { | |
files: ['Gruntfile.js'] | |
}, | |
livereload: { | |
options: { | |
livereload: '<%= connect.options.livereload %>' | |
}, | |
files: [ | |
'<%= yeoman.app %>/{,*/}*.html', | |
'.tmp/styles/{,*/}*.css', | |
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' | |
] | |
}, | |
widget: { | |
files: ['<%= yeoman.app %>/widget/{,*/}*.html'], | |
tasks: ['html2js'] | |
} | |
}, | |
// The actual grunt server settings | |
connect: { | |
options: { | |
port: 9000, | |
// Change this to '0.0.0.0' to access the server from outside. | |
hostname: '0.0.0.0', | |
livereload: 35729 | |
}, | |
livereload: { | |
options: { | |
open: true, | |
base: [ | |
'.tmp', | |
'<%= yeoman.app %>' | |
], | |
middleware: function (connect, options) { | |
var middlewares = []; | |
var directory = options.directory || options.base[options.base.length - 1]; | |
// enable Angular's HTML5 mode | |
middlewares.push(modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png|\\.jpg|\\.woff|\\.ttf|\\.eot|\\.otf$ /index.html [L]'])); | |
if (!Array.isArray(options.base)) { | |
options.base = [options.base]; | |
} | |
options.base.forEach(function(base) { | |
// Serve static files. | |
middlewares.push(connect.static(base)); | |
}); | |
// Make directory browse-able. | |
middlewares.push(connect.directory(directory)); | |
return middlewares; | |
} | |
} | |
}, | |
test: { | |
options: { | |
port: 9001, | |
base: [ | |
'.tmp', | |
'test', | |
'<%= yeoman.app %>' | |
] | |
} | |
}, | |
dist: { | |
options: { | |
base: '<%= yeoman.dist %>' | |
} | |
} | |
}, | |
// Make sure code styles are up to par and there are no obvious mistakes | |
jshint: { | |
options: { | |
jshintrc: '.jshintrc', | |
reporter: require('jshint-stylish') | |
}, | |
all: [ | |
'Gruntfile.js', | |
'<%= yeoman.app %>/scripts/{,*/}*.js' | |
], | |
test: { | |
options: { | |
jshintrc: 'test/.jshintrc' | |
}, | |
src: ['test/spec/{,*/}*.js'] | |
} | |
}, | |
// Empties folders to start fresh | |
clean: { | |
dist: { | |
files: [{ | |
dot: true, | |
src: [ | |
'.tmp', | |
'<%= yeoman.dist %>/*', | |
'!<%= yeoman.dist %>/.git*' | |
] | |
}] | |
}, | |
server: '.tmp' | |
}, | |
// Add vendor prefixed styles | |
autoprefixer: { | |
options: { | |
browsers: ['last 1 version'] | |
}, | |
dist: { | |
files: [{ | |
expand: true, | |
cwd: '.tmp/styles/', | |
src: '{,*/}*.css', | |
dest: '.tmp/styles/' | |
}] | |
} | |
}, | |
// Automatically inject Bower components into the app | |
'bower-install': { | |
app: { | |
html: '<%= yeoman.app %>/index.html', | |
ignorePath: '<%= yeoman.app %>/' | |
} | |
}, | |
// Compiles Sass to CSS and generates necessary files if requested | |
compass: { | |
nospawn:true, | |
options: { | |
sassDir: '<%= yeoman.app %>/styles', | |
cssDir: '.tmp/styles', | |
generatedImagesDir: '.tmp/images/generated', | |
imagesDir: '<%= yeoman.app %>/images', | |
javascriptsDir: '<%= yeoman.app %>/scripts', | |
fontsDir: '<%= yeoman.app %>/styles/fonts', | |
importPath: '<%= yeoman.app %>/bower_components', | |
httpImagesPath: '/images', | |
httpGeneratedImagesPath: '/images/generated', | |
httpFontsPath: '/styles/fonts', | |
relativeAssets: false, | |
assetCacheBuster: false, | |
raw: 'Sass::Script::Number.precision = 10\n' | |
}, | |
dist: { | |
options: { | |
generatedImagesDir: '<%= yeoman.dist %>/images/generated' | |
} | |
}, | |
server: { | |
options: { | |
debugInfo: true | |
} | |
} | |
}, | |
// Renames files for browser caching purposes | |
rev: { | |
dist: { | |
files: { | |
src: [ | |
'<%= yeoman.dist %>/scripts/{,*/}*.js', | |
'<%= yeoman.dist %>/styles/main.css', | |
'<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', | |
'<%= yeoman.dist %>/styles/fonts/*' | |
] | |
} | |
} | |
}, | |
// Reads HTML for usemin blocks to enable smart builds that automatically | |
// concat, minify and revision files. Creates configurations in memory so | |
// additional tasks can operate on them | |
useminPrepare: { | |
html: ['<%= yeoman.app %>/index.html', '<%= yeoman.app %>/widget/develop.html'], | |
options: { | |
dest: '<%= yeoman.dist %>' | |
} | |
}, | |
// Performs rewrites based on rev and the useminPrepare configuration | |
usemin: { | |
html: ['<%= yeoman.dist %>/{,*/}*.html'], | |
css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], | |
options: { | |
assetsDirs: ['<%= yeoman.dist %>'] | |
} | |
}, | |
// The following *-min tasks produce minified files in the dist folder | |
imagemin: { | |
dist: { | |
files: [{ | |
expand: true, | |
cwd: '<%= yeoman.app %>/images', | |
src: '{,*/}*.{png,jpg,jpeg,gif}', | |
dest: '<%= yeoman.dist %>/images' | |
}] | |
} | |
}, | |
svgmin: { | |
dist: { | |
files: [{ | |
expand: true, | |
cwd: '<%= yeoman.app %>/images', | |
src: '{,*/}*.svg', | |
dest: '<%= yeoman.dist %>/images' | |
}] | |
} | |
}, | |
htmlmin: { | |
dist: { | |
options: { | |
collapseWhitespace: true, | |
collapseBooleanAttributes: true, | |
removeCommentsFromCDATA: true, | |
removeOptionalTags: true | |
}, | |
files: [{ | |
expand: true, | |
cwd: '<%= yeoman.dist %>', | |
src: ['*.html', 'views/{,*/}*.html', 'widget/views/{,*/}*.html'], | |
dest: '<%= yeoman.dist %>' | |
}] | |
} | |
}, | |
// Allow the use of non-minsafe AngularJS files. Automatically makes it | |
// minsafe compatible so Uglify does not destroy the ng references | |
ngmin: { | |
dist: { | |
files: [ | |
{ | |
expand: true, | |
cwd: '.tmp/concat/scripts', | |
src: '*.js', | |
dest: '.tmp/concat/scripts' | |
}, | |
{ | |
expand: true, | |
cwd: '.tmp/concat/widget/scripts', | |
src: '*.js', | |
dest: '.tmp/concat/widget/scripts' | |
} | |
] | |
} | |
}, | |
// Replace Google CDN references | |
cdnify: { | |
dist: { | |
html: ['<%= yeoman.dist %>/*.html'] | |
} | |
}, | |
// Copies remaining files to places other tasks can use | |
copy: { | |
dist: { | |
files: [{ | |
expand: true, | |
dot: true, | |
cwd: '<%= yeoman.app %>', | |
dest: '<%= yeoman.dist %>', | |
src: [ | |
'*.{ico,png,txt}', | |
'.htaccess', | |
'*.html', | |
'views/{,*/}*.html', | |
'widget/views/{,*/}*.html', | |
'bower_components/**/*', | |
'images/{,*/}*.{webp}', | |
'fonts/*', | |
'widget/*.html', | |
'asset/**' | |
] | |
}, { | |
expand: true, | |
cwd: '.tmp/images', | |
dest: '<%= yeoman.dist %>/images', | |
src: ['generated/*'] | |
}] | |
}, | |
styles: { | |
expand: true, | |
cwd: '<%= yeoman.app %>/styles', | |
dest: '.tmp/styles/', | |
src: '{,*/}*.css' | |
} | |
}, | |
// Run some tasks in parallel to speed up the build process | |
concurrent: { | |
server: [ | |
'compass:server' | |
], | |
test: [ | |
'compass' | |
], | |
dist: [ | |
'compass:dist', | |
'imagemin', | |
'svgmin' | |
] | |
}, | |
// By default, your `index.html`'s <!-- Usemin block --> will take care of | |
// minification. These next options are pre-configured if you do not wish | |
// to use the Usemin blocks. | |
// cssmin: { | |
// dist: { | |
// files: { | |
// '<%= yeoman.dist %>/styles/main.css': [ | |
// '.tmp/styles/{,*/}*.css', | |
// '<%= yeoman.app %>/styles/{,*/}*.css' | |
// ] | |
// } | |
// } | |
// }, | |
// uglify: { | |
// dist: { | |
// files: { | |
// '<%= yeoman.dist %>/scripts/scripts.js': [ | |
// '<%= yeoman.dist %>/scripts/scripts.js' | |
// ] | |
// } | |
// } | |
// }, | |
// concat: { | |
// dist: {} | |
// }, | |
concat: { | |
dist: { | |
src: ['<%= yeoman.app %>/widget/scripts/embed.before.js', '<%= yeoman.dist %>/widget/scripts/vendor.js', '<%= yeoman.dist %>/widget/scripts/app.js', '<%= yeoman.app %>/widget/scripts/embed.after.js'], | |
dest: '<%= yeoman.dist %>/widget/scripts/embed.js', | |
} | |
}, | |
// Test settings | |
karma: { | |
unit: { | |
configFile: 'karma.conf.js', | |
singleRun: true | |
} | |
}, | |
protractor: { | |
options: { | |
configFile: 'protractor.conf.js', // Default config file | |
keepAlive: true, // If false, the grunt process stops when the test fails. | |
noColor: false, // If true, protractor will not use colors in its output. | |
args: { | |
// Arguments passed to the command | |
} | |
}, | |
run: {} | |
} | |
}); | |
grunt.registerTask('serve', function (target) { | |
if (target === 'dist') { | |
return grunt.task.run(['build', 'connect:dist:keepalive']); | |
} | |
grunt.task.run([ | |
'clean:server', | |
'ngconstant:development', | |
'html2js', | |
//'bower-install', | |
'concurrent:server', | |
//'autoprefixer', | |
'connect:livereload', | |
'watch' | |
]); | |
}); | |
grunt.registerTask('server', function () { | |
grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.'); | |
grunt.task.run(['serve']); | |
}); | |
grunt.registerTask('test', [ | |
'clean:server', | |
'ngconstant:development', | |
'concurrent:test', | |
'autoprefixer', | |
'connect:test', | |
'karma', | |
'protractor:run' | |
]); | |
grunt.registerTask('build', [ | |
'clean:dist', | |
'ngconstant:production', | |
'html2js', | |
'useminPrepare', | |
'concurrent:dist', | |
'compass:dist', | |
'newer:imagemin', | |
'newer:svgmin', | |
'autoprefixer', | |
'concat', | |
'ngmin', | |
'copy:dist', | |
'cdnify', | |
'cssmin', | |
'uglify', | |
'rev', | |
'usemin', | |
'htmlmin', | |
'concat:dist' | |
]); | |
grunt.registerTask('default', [ | |
'newer:jshint', | |
'test', | |
'build' | |
]); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Karma configuration | |
// http://karma-runner.github.io/0.10/config/configuration-file.html | |
module.exports = function(config) { | |
config.set({ | |
// base path, that will be used to resolve files and exclude | |
basePath: '', | |
// testing framework to use (jasmine/mocha/qunit/...) | |
frameworks: ['jasmine'], | |
// list of files / patterns to load in the browser | |
files: [ | |
'app/bower_components/angular/angular.js', | |
'app/bower_components/angular-mocks/angular-mocks.js', | |
'app/bower_components/angular-resource/angular-resource.js', | |
'app/bower_components/angular-cookies/angular-cookies.js', | |
'app/bower_components/angular-sanitize/angular-sanitize.js', | |
'app/bower_components/angular-route/angular-route.js', | |
'app/bower_components/ng-file-upload/angular-file-upload-shim.js', | |
'app/bower_components/jquery/jquery.js', | |
'app/bower_components/es5-shim/es5-shim.js', | |
'app/bower_components/angular/angular.js', | |
'app/bower_components/json3/lib/json3.min.js', | |
'app/bower_components/sass-bootstrap/dist/js/bootstrap.js', | |
'app/bower_components/angular-resource/angular-resource.js', | |
'app/bower_components/angular-cookies/angular-cookies.js', | |
'app/bower_components/angular-sanitize/angular-sanitize.js', | |
'app/bower_components/angular-route/angular-route.js', | |
'app/bower_components/angular-ui-router/release/angular-ui-router.js', | |
'app/bower_components/bootstrap/dist/js/bootstrap.js', | |
'app/bower_components/angular-flash/dist/angular-flash.js', | |
'app/bower_components/lodash/dist/lodash.compat.js', | |
'app/bower_components/moment/moment.js', | |
'app/bower_components/moment/lang/de.js', | |
'app/bower_components/angular-moment/angular-moment.js', | |
'app/bower_components/ngInfiniteScroll/ng-infinite-scroll.js', | |
'app/bower_components/jquery-ui/ui/jquery-ui.js', | |
'app/bower_components/angular-ui-slider/src/slider.js', | |
'app/bower_components/textAngular/textAngular.js', | |
'app/bower_components/select2/select2.js', | |
'app/bower_components/angular-ui-select2/src/select2.js', | |
'app/bower_components/ng-file-upload/angular-file-upload.js', | |
'app/bower_components/angular-bootstrap/ui-bootstrap-tpls.js', | |
'app/bower_components/angular-isotope/dist/angular-isotope.js', | |
'app/bower_components/isotope/jquery.isotope.js', | |
'//tinymce.cachefly.net/4.0/tinymce.min.js', | |
'app/asset/tinymce.js', | |
'.tmp/scripts/config.js', | |
'app/scripts/*.js', | |
'app/scripts/**/*.js', | |
'test/mock/**/*.js', | |
'test/spec/**/*.js', | |
{pattern: 'test/images/*.png', watched: false, included: false, served: true} | |
], | |
proxies: { | |
'/img/': 'http://localhost:8080/base/test/images/' | |
}, | |
// list of files / patterns to exclude | |
exclude: [], | |
// web server port | |
port: 8080, | |
// level of logging | |
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG | |
logLevel: config.LOG_INFO, | |
// enable / disable watching file and executing tests whenever any file changes | |
autoWatch: false, | |
// Start these browsers, currently available: | |
// - Chrome | |
// - ChromeCanary | |
// - Firefox | |
// - Opera | |
// - Safari (only Mac) | |
// - PhantomJS | |
// - IE (only Windows) | |
browsers: ['PhantomJS'], | |
// Continuous Integration mode | |
// if true, it capture browsers, run tests and exit | |
singleRun: false | |
}); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// An example configuration file. | |
exports.config = { | |
// The address of a running selenium server. | |
//seleniumAddress: 'http://localhost:4444/wd/hub', | |
// Capabilities to be passed to the webdriver instance. | |
capabilities: { | |
'browserName': 'phantomjs' | |
}, | |
baseUrl: 'http://127.0.0.1:9000', | |
// Spec patterns are relative to the location of the spec file. They may | |
// include glob patterns. | |
specs: ['test/e2e/*.js'], | |
// Options to be passed to Jasmine-node. | |
jasmineNodeOpts: { | |
showColors: true, // Use colors in the command line report. | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment