Skip to content
This repository was archived by the owner on May 30, 2019. It is now read-only.

Commit 0c39f4c

Browse files
committed
e2e and once tasks: do not attempt e2e if no desktop on *nix
If os is *nix-like and there is no $DESKTOP_ENVIRONMENT, then skip e2e tests and associated tasks with a warning. Closes #667
1 parent a5bda10 commit 0c39f4c

File tree

2 files changed

+38
-25
lines changed

2 files changed

+38
-25
lines changed

shared/js/dev-tasks/e2e/protractor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var fs = require('fs');
1919
var cp = require('child_process');
2020

2121
var _ = require('lodash');
22+
var chalk = require('chalk');
2223
var Runner = require('protractor/lib/runner');
2324

2425
var ctx = require('../context');
@@ -57,7 +58,6 @@ var ptorConfig = {
5758

5859

5960
var go = function (args, cb) {
60-
6161
if (args.browser === 'ie') {
6262
var sjs = require('shelljs');
6363
sjs.exec(

shared/js/dev-tasks/tasks/e2e.js

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ var args = {
3636
// or 'chrome' or 'firefox' or 'ie' or 'phantomjs'
3737
};
3838

39+
var skipNoDesktop = function (task) {
40+
if (['linux', 'freebsd', 'sunos'].indexOf(process.platform) >= 0) {
41+
if (!process.env.DESKTOP_SESSION) {
42+
console.log(
43+
chalk.yellow(
44+
'Skipping task ' + task + ' because there is no desktop environment'
45+
)
46+
);
47+
return true;
48+
}
49+
}
50+
return false;
51+
};
52+
3953
_.merge(args, require('yargs').argv);
4054

4155
if (!args.tags) {
@@ -48,6 +62,9 @@ if (args.sauce && args.selenium !== 'external') {
4862
}
4963

5064
var seleniumStart = function (cb) {
65+
if (skipNoDesktop('selenium-start')) {
66+
return cb();
67+
}
5168
var seleniumHandler;
5269
switch (args.selenium) {
5370
case 'external':
@@ -112,44 +129,40 @@ myTasks.push({
112129
deps: ['build', 'selenium-start', 'middle-tier-start'],
113130
func: function (cb) {
114131
try {
132+
var skip = skipNoDesktop('e2e');
133+
115134
var haveClosed = false;
116135

117136
require('gulp').doneCallback = function (err) {
118137
process.exit(err ? 1 : 0);
119138
};
120139

121-
process.on('exit', function (err) {
140+
var done = function (err) {
122141
if (!haveClosed) {
123-
err = err ? new Error(err) : null;
142+
err = err && !Error.prototype.isPrototypeOf(err) ?
143+
new Error(err) :
144+
null;
124145
ctx.closeActiveServers(function () { cb(err); });
125146
haveClosed = true;
126147
}
127-
});
148+
};
128149

129-
ctx.startServer(
130-
ctx.paths.browser.buildDir,
131-
ctx.options.envs.e2e.addresses.webApp.port
132-
);
150+
process.on('exit', done);
151+
152+
if (!skip) {
153+
ctx.startServer(
154+
ctx.paths.browser.buildDir,
155+
ctx.options.envs.e2e.addresses.webApp.port
156+
);
133157

134-
protractorRun(function (err) {
135-
haveClosed = true;
136-
ctx.closeActiveServers(function () {
137-
cb(err);
138-
setTimeout(function () {
139-
process.exit();
140-
}, 500);
141-
});
142-
});
158+
protractorRun(done);
159+
}
160+
else {
161+
done();
162+
}
143163
}
144164
catch (err) {
145-
haveClosed = true;
146-
ctx.closeActiveServers(function () {
147-
console.log(err);
148-
cb(err);
149-
setTimeout(function () {
150-
process.exit();
151-
}, 500);
152-
});
165+
done(err);
153166
}
154167
}
155168
});

0 commit comments

Comments
 (0)