Skip to content

Instantly share code, notes, and snippets.

@angelyordanov
Last active December 31, 2015 14:59
Show Gist options
  • Save angelyordanov/8004180 to your computer and use it in GitHub Desktop.
Save angelyordanov/8004180 to your computer and use it in GitHub Desktop.
A simple protractor runner task
/*global module, require, process*/
module.exports = function (grunt) {
'use strict';
var _ = require('lodash'),
protractorRunner = require('./node_modules/protractor/lib/runner.js'),
path = require('path');
grunt.registerMultiTask('protractor', 'Protractor runner.', function() {
var done = this.async(),
options = this.options({
configFilename: '',
config: {}
}),
configFilePath,
config;
grunt.verbose.writeflags(options, 'Options');
if (options.configFilename) {
configFilePath = path.resolve(process.cwd(), options.configFilename);
config = require(configFilePath).config;
config.specFileBase = path.dirname(configFilePath);
}
_.merge(config, options.config);
grunt.verbose.writeflags(config, 'Runner config');
protractorRunner.addConfig(config);
function fail(err) {
grunt.log.error('Protractor failed.');
grunt.log.error(err);
done(false);
}
try {
protractorRunner
.runOnce()
.then(function () {
done();
}, function (err) {
fail(err);
});
} catch (err) {
fail(err);
}
});
};
//Copyright 2013 Angel Yordanov
//
//Permission is hereby granted, free of charge, to any person obtaining
//a copy of this software and associated documentation files (the
//"Software"), to deal in the Software without restriction, including
//without limitation the rights to use, copy, modify, merge, publish,
//distribute, sublicense, and/or sell copies of the Software, and to
//permit persons to whom the Software is furnished to do so, subject to
//the following conditions:
//
//The above copyright notice and this permission notice shall be
//included in all copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
//NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
//LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
//OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
//WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment