text: 'use strict';
  
  var path = require('path');
  var gulp = require('gulp');
  var conf = require('./conf');
  
  var browserSync = require('browser-sync');
  
  var $ = require('gulp-load-plugins')();
  // Downloads the selenium webdriver
  // jscs:disable
  gulp.task('webdriver-update', $.protractor.webdriver_update);
  
  gulp.task('webdriver-standalone', $.protractor.webdriver_standalone);
  // jscs:enable
  function runProtractor(done) {
    var params = process.argv;
    var args = params.length > 3 ? [params[3], params[4]] : [];
  
    gulp.src(path.join(conf.paths.e2e, '/**/*.js'))
      .pipe($.protractor.protractor({
        configFile: 'protractor.conf.js',
        args: args,
      }))
      .on('error', function(err) {
        // Make sure failed tests cause gulp to exit non-zero
        throw err;
      })
      .on('end', function() {
        // Close browser sync server
        browserSync.exit();
        done();
      });
  }
  
  gulp.task('protractor', ['protractor:src']);
  gulp.task('protractor:src', ['serve:e2e', 'webdriver-update'], runProtractor);
  gulp.task('protractor:dist', ['serve:e2e-dist', 'webdriver-update'], runProtractor);
  