cypress 5.2.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/exec/info.js CHANGED
@@ -1,67 +1,64 @@
1
1
  "use strict";
2
2
 
3
3
  /* eslint-disable no-console */
4
- var spawn = require('./spawn');
4
+ const spawn = require('./spawn');
5
5
 
6
- var util = require('../util');
6
+ const util = require('../util');
7
7
 
8
- var state = require('../tasks/state');
8
+ const state = require('../tasks/state');
9
9
 
10
- var os = require('os');
10
+ const os = require('os');
11
11
 
12
- var chalk = require('chalk');
12
+ const chalk = require('chalk');
13
13
 
14
- var prettyBytes = require('pretty-bytes');
14
+ const prettyBytes = require('pretty-bytes');
15
15
 
16
- var _ = require('lodash');
16
+ const _ = require('lodash');
17
17
 
18
- var R = require('ramda'); // color for numbers and show values
18
+ const R = require('ramda'); // color for numbers and show values
19
19
 
20
20
 
21
- var g = chalk.green; // color for paths
21
+ const g = chalk.green; // color for paths
22
22
 
23
- var p = chalk.cyan; // urls
23
+ const p = chalk.cyan; // urls
24
24
 
25
- var link = chalk.blue.underline; // to be exported
25
+ const link = chalk.blue.underline; // to be exported
26
26
 
27
- var methods = {};
27
+ const methods = {};
28
28
 
29
- methods.findProxyEnvironmentVariables = function () {
29
+ methods.findProxyEnvironmentVariables = () => {
30
30
  return _.pick(process.env, ['HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY']);
31
31
  };
32
32
 
33
- var maskSensitiveVariables = R.evolve({
33
+ const maskSensitiveVariables = R.evolve({
34
34
  CYPRESS_RECORD_KEY: R.always('<redacted>')
35
35
  });
36
36
 
37
- methods.findCypressEnvironmentVariables = function () {
38
- var isCyVariable = function isCyVariable(val, key) {
39
- return key.startsWith('CYPRESS_');
40
- };
37
+ methods.findCypressEnvironmentVariables = () => {
38
+ const isCyVariable = (val, key) => key.startsWith('CYPRESS_');
41
39
 
42
40
  return R.pickBy(isCyVariable)(process.env);
43
41
  };
44
42
 
45
- var formatCypressVariables = function formatCypressVariables() {
46
- var vars = methods.findCypressEnvironmentVariables();
43
+ const formatCypressVariables = () => {
44
+ const vars = methods.findCypressEnvironmentVariables();
47
45
  return maskSensitiveVariables(vars);
48
46
  };
49
47
 
50
- methods.start = function () {
51
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
52
- var args = ['--mode=info'];
48
+ methods.start = (options = {}) => {
49
+ const args = ['--mode=info'];
53
50
  return spawn.start(args, {
54
51
  dev: options.dev
55
- }).then(function () {
52
+ }).then(() => {
56
53
  console.log();
57
- var proxyVars = methods.findProxyEnvironmentVariables();
54
+ const proxyVars = methods.findProxyEnvironmentVariables();
58
55
 
59
56
  if (_.isEmpty(proxyVars)) {
60
57
  console.log('Proxy Settings: none detected');
61
58
  } else {
62
59
  console.log('Proxy Settings:');
63
60
 
64
- _.forEach(proxyVars, function (value, key) {
61
+ _.forEach(proxyVars, (value, key) => {
65
62
  console.log('%s: %s', key, g(value));
66
63
  });
67
64
 
@@ -69,26 +66,26 @@ methods.start = function () {
69
66
  console.log('Learn More: %s', link('https://on.cypress.io/proxy-configuration'));
70
67
  console.log();
71
68
  }
72
- }).then(function () {
73
- var cyVars = formatCypressVariables();
69
+ }).then(() => {
70
+ const cyVars = formatCypressVariables();
74
71
 
75
72
  if (_.isEmpty(cyVars)) {
76
73
  console.log('Environment Variables: none detected');
77
74
  } else {
78
75
  console.log('Environment Variables:');
79
76
 
80
- _.forEach(cyVars, function (value, key) {
77
+ _.forEach(cyVars, (value, key) => {
81
78
  console.log('%s: %s', key, g(value));
82
79
  });
83
80
  }
84
- }).then(function () {
81
+ }).then(() => {
85
82
  console.log();
86
83
  console.log('Application Data:', p(util.getApplicationDataFolder()));
87
84
  console.log('Browser Profiles:', p(util.getApplicationDataFolder('browsers')));
88
85
  console.log('Binary Caches: %s', p(state.getCacheDir()));
89
- }).then(function () {
86
+ }).then(() => {
90
87
  console.log();
91
- return util.getOsVersionAsync().then(function (osVersion) {
88
+ return util.getOsVersionAsync().then(osVersion => {
92
89
  console.log('Cypress Version: %s', g(util.pkgVersion()));
93
90
  console.log('System Platform: %s (%s)', g(os.platform()), g(osVersion));
94
91
  console.log('System Memory: %s free %s', g(prettyBytes(os.totalmem())), g(prettyBytes(os.freemem())));
package/lib/exec/open.js CHANGED
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
 
3
- var debug = require('debug')('cypress:cli');
3
+ const debug = require('debug')('cypress:cli');
4
4
 
5
- var util = require('../util');
5
+ const util = require('../util');
6
6
 
7
- var spawn = require('./spawn');
7
+ const spawn = require('./spawn');
8
8
 
9
- var verify = require('../tasks/verify');
9
+ const verify = require('../tasks/verify');
10
10
 
11
11
  module.exports = {
12
- start: function start() {
13
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
14
-
12
+ start(options = {}) {
15
13
  if (!util.isInstalledGlobally() && !options.global && !options.project) {
16
14
  options.project = process.cwd();
17
15
  }
18
16
 
19
- var args = [];
17
+ const args = [];
20
18
 
21
19
  if (options.config) {
22
20
  args.push('--config', options.config);
@@ -59,4 +57,5 @@ module.exports = {
59
57
 
60
58
  return verify.start().then(open);
61
59
  }
60
+
62
61
  };
package/lib/exec/run.js CHANGED
@@ -1,18 +1,19 @@
1
1
  "use strict";
2
2
 
3
- var _ = require('lodash');
3
+ const _ = require('lodash');
4
4
 
5
- var debug = require('debug')('cypress:cli:run');
5
+ const debug = require('debug')('cypress:cli:run');
6
6
 
7
- var util = require('../util');
7
+ const util = require('../util');
8
8
 
9
- var spawn = require('./spawn');
9
+ const spawn = require('./spawn');
10
10
 
11
- var verify = require('../tasks/verify');
11
+ const verify = require('../tasks/verify');
12
12
 
13
- var _require = require('../errors'),
14
- exitWithError = _require.exitWithError,
15
- errors = _require.errors;
13
+ const {
14
+ exitWithError,
15
+ errors
16
+ } = require('../errors');
16
17
  /**
17
18
  * Throws an error with "details" property from
18
19
  * "errors" object.
@@ -20,14 +21,14 @@ var _require = require('../errors'),
20
21
  */
21
22
 
22
23
 
23
- var throwInvalidOptionError = function throwInvalidOptionError(details) {
24
+ const throwInvalidOptionError = details => {
24
25
  if (!details) {
25
26
  details = errors.unknownError;
26
27
  } // throw this error synchronously, it will be caught later on and
27
28
  // the details will be propagated to the promise chain
28
29
 
29
30
 
30
- var err = new Error();
31
+ const err = new Error();
31
32
  err.details = details;
32
33
  throw err;
33
34
  };
@@ -39,7 +40,7 @@ var throwInvalidOptionError = function throwInvalidOptionError(details) {
39
40
  */
40
41
 
41
42
 
42
- var isValidProject = function isValidProject(v) {
43
+ const isValidProject = v => {
43
44
  if (typeof v === 'boolean') {
44
45
  return false;
45
46
  }
@@ -61,8 +62,7 @@ var isValidProject = function isValidProject(v) {
61
62
  */
62
63
 
63
64
 
64
- var processRunOptions = function processRunOptions() {
65
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
65
+ const processRunOptions = (options = {}) => {
66
66
  debug('processing run options %o', options);
67
67
 
68
68
  if (!isValidProject(options.project)) {
@@ -72,7 +72,7 @@ var processRunOptions = function processRunOptions() {
72
72
  return throwInvalidOptionError(errors.invalidRunProjectPath);
73
73
  }
74
74
 
75
- var args = ['--run-project', options.project];
75
+ const args = ['--run-project', options.project];
76
76
 
77
77
  if (options.browser) {
78
78
  args.push('--browser', options.browser);
@@ -177,12 +177,11 @@ var processRunOptions = function processRunOptions() {
177
177
  };
178
178
 
179
179
  module.exports = {
180
- processRunOptions: processRunOptions,
181
- isValidProject: isValidProject,
182
- // resolves with the number of failed tests
183
- start: function start() {
184
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
180
+ processRunOptions,
181
+ isValidProject,
185
182
 
183
+ // resolves with the number of failed tests
184
+ start(options = {}) {
186
185
  _.defaults(options, {
187
186
  key: null,
188
187
  spec: null,
@@ -192,7 +191,7 @@ module.exports = {
192
191
  });
193
192
 
194
193
  function run() {
195
- var args;
194
+ let args;
196
195
 
197
196
  try {
198
197
  args = processRunOptions(options);
@@ -216,4 +215,5 @@ module.exports = {
216
215
 
217
216
  return verify.start().then(run);
218
217
  }
218
+
219
219
  };
package/lib/exec/spawn.js CHANGED
@@ -1,36 +1,36 @@
1
1
  "use strict";
2
2
 
3
- var _ = require('lodash');
3
+ const _ = require('lodash');
4
4
 
5
- var os = require('os');
5
+ const os = require('os');
6
6
 
7
- var cp = require('child_process');
7
+ const cp = require('child_process');
8
8
 
9
- var path = require('path');
9
+ const path = require('path');
10
10
 
11
- var Promise = require('bluebird');
11
+ const Promise = require('bluebird');
12
12
 
13
- var debug = require('debug')('cypress:cli');
13
+ const debug = require('debug')('cypress:cli');
14
14
 
15
- var debugElectron = require('debug')('cypress:electron');
15
+ const debugElectron = require('debug')('cypress:electron');
16
16
 
17
- var util = require('../util');
17
+ const util = require('../util');
18
18
 
19
- var state = require('../tasks/state');
19
+ const state = require('../tasks/state');
20
20
 
21
- var xvfb = require('./xvfb');
21
+ const xvfb = require('./xvfb');
22
22
 
23
- var verify = require('../tasks/verify');
23
+ const verify = require('../tasks/verify');
24
24
 
25
- var errors = require('../errors');
25
+ const errors = require('../errors');
26
26
 
27
- var isXlibOrLibudevRe = /^(?:Xlib|libudev)/;
28
- var isHighSierraWarningRe = /\*\*\* WARNING/;
29
- var isRenderWorkerRe = /\.RenderWorker-/;
30
- var GARBAGE_WARNINGS = [isXlibOrLibudevRe, isHighSierraWarningRe, isRenderWorkerRe];
27
+ const isXlibOrLibudevRe = /^(?:Xlib|libudev)/;
28
+ const isHighSierraWarningRe = /\*\*\* WARNING/;
29
+ const isRenderWorkerRe = /\.RenderWorker-/;
30
+ const GARBAGE_WARNINGS = [isXlibOrLibudevRe, isHighSierraWarningRe, isRenderWorkerRe];
31
31
 
32
- var isGarbageLineWarning = function isGarbageLineWarning(str) {
33
- return _.some(GARBAGE_WARNINGS, function (re) {
32
+ const isGarbageLineWarning = str => {
33
+ return _.some(GARBAGE_WARNINGS, re => {
34
34
  return re.test(str);
35
35
  });
36
36
  };
@@ -66,11 +66,11 @@ function getStdio(needsXvfb) {
66
66
  }
67
67
 
68
68
  module.exports = {
69
- isGarbageLineWarning: isGarbageLineWarning,
70
- start: function start(args) {
71
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
72
- var needsXvfb = xvfb.isNeeded();
73
- var executable = state.getPathToExecutable(state.getBinaryDir());
69
+ isGarbageLineWarning,
70
+
71
+ start(args, options = {}) {
72
+ const needsXvfb = xvfb.isNeeded();
73
+ let executable = state.getPathToExecutable(state.getBinaryDir());
74
74
 
75
75
  if (util.getEnv('CYPRESS_RUN_BINARY')) {
76
76
  executable = path.resolve(util.getEnv('CYPRESS_RUN_BINARY'));
@@ -93,9 +93,8 @@ module.exports = {
93
93
  stdio: getStdio(needsXvfb)
94
94
  });
95
95
 
96
- var spawn = function spawn() {
97
- var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
98
- return new Promise(function (resolve, reject) {
96
+ const spawn = (overrides = {}) => {
97
+ return new Promise((resolve, reject) => {
99
98
  _.defaults(overrides, {
100
99
  onStderrData: false,
101
100
  electronLogging: false
@@ -109,13 +108,15 @@ module.exports = {
109
108
  debug('in dev mode the args became %o', args);
110
109
  }
111
110
 
112
- var onStderrData = overrides.onStderrData,
113
- electronLogging = overrides.electronLogging;
114
- var envOverrides = util.getEnvOverrides(options);
111
+ const {
112
+ onStderrData,
113
+ electronLogging
114
+ } = overrides;
115
+ const envOverrides = util.getEnvOverrides(options);
115
116
 
116
- var electronArgs = _.clone(args);
117
+ const electronArgs = _.clone(args);
117
118
 
118
- var node11WindowsFix = isPlatform('win32');
119
+ const node11WindowsFix = isPlatform('win32');
119
120
 
120
121
  if (!options.dev && verify.needsSandbox()) {
121
122
  // this is one of the Electron's command line switches
@@ -124,7 +125,7 @@ module.exports = {
124
125
  } // strip dev out of child process options
125
126
 
126
127
 
127
- var stdioOptions = _.pick(options, 'env', 'detached', 'stdio'); // figure out if we're going to be force enabling or disabling colors.
128
+ let stdioOptions = _.pick(options, 'env', 'detached', 'stdio'); // figure out if we're going to be force enabling or disabling colors.
128
129
  // also figure out whether we should force stdout and stderr into thinking
129
130
  // it is a tty as opposed to a pipe.
130
131
 
@@ -149,18 +150,18 @@ module.exports = {
149
150
 
150
151
  debug('spawning Cypress with executable: %s', executable);
151
152
  debug('spawn args %o %o', electronArgs, _.omit(stdioOptions, 'env'));
152
- var child = cp.spawn(executable, electronArgs, stdioOptions);
153
+ const child = cp.spawn(executable, electronArgs, stdioOptions);
153
154
 
154
155
  function resolveOn(event) {
155
156
  return function (code, signal) {
156
157
  debug('child event fired %o', {
157
- event: event,
158
- code: code,
159
- signal: signal
158
+ event,
159
+ code,
160
+ signal
160
161
  });
161
162
 
162
163
  if (code === null) {
163
- var errorObject = errors.errors.childProcessKilled(event, signal);
164
+ const errorObject = errors.errors.childProcessKilled(event, signal);
164
165
  return errors.getError(errorObject).then(reject);
165
166
  }
166
167
 
@@ -190,8 +191,8 @@ module.exports = {
190
191
 
191
192
  if (child.stderr) {
192
193
  debug('piping child STDERR to process STDERR');
193
- child.stderr.on('data', function (data) {
194
- var str = data.toString(); // bail if this is warning line garbage
194
+ child.stderr.on('data', data => {
195
+ const str = data.toString(); // bail if this is warning line garbage
195
196
 
196
197
  if (isGarbageLineWarning(str)) {
197
198
  return;
@@ -215,7 +216,7 @@ module.exports = {
215
216
  // error here and not doing anything.
216
217
 
217
218
 
218
- process.stdin.on('error', function (err) {
219
+ process.stdin.on('error', err => {
219
220
  if (['EPIPE', 'ENOTCONN'].includes(err.code)) {
220
221
  return;
221
222
  }
@@ -229,19 +230,20 @@ module.exports = {
229
230
  });
230
231
  };
231
232
 
232
- var spawnInXvfb = function spawnInXvfb() {
233
- return xvfb.start().then(userFriendlySpawn)["finally"](xvfb.stop);
233
+ const spawnInXvfb = () => {
234
+ return xvfb.start().then(userFriendlySpawn).finally(xvfb.stop);
234
235
  };
235
236
 
236
- var userFriendlySpawn = function userFriendlySpawn(linuxWithDisplayEnv) {
237
+ const userFriendlySpawn = linuxWithDisplayEnv => {
237
238
  debug('spawning, should retry on display problem?', Boolean(linuxWithDisplayEnv));
238
- var brokenGtkDisplay;
239
- var overrides = {};
239
+ let brokenGtkDisplay;
240
+ const overrides = {};
240
241
 
241
242
  if (linuxWithDisplayEnv) {
242
243
  _.extend(overrides, {
243
244
  electronLogging: true,
244
- onStderrData: function onStderrData(str) {
245
+
246
+ onStderrData(str) {
245
247
  // if we receive a broken pipe anywhere
246
248
  // then we know that's why cypress exited early
247
249
  if (util.isBrokenGtkDisplay(str)) {
@@ -255,10 +257,11 @@ module.exports = {
255
257
  return false;
256
258
  }
257
259
  }
260
+
258
261
  });
259
262
  }
260
263
 
261
- return spawn(overrides).then(function (code) {
264
+ return spawn(overrides).then(code => {
262
265
  if (code !== 0 && brokenGtkDisplay) {
263
266
  util.logBrokenGtkDisplayWarning();
264
267
  return spawnInXvfb();
@@ -267,7 +270,7 @@ module.exports = {
267
270
  return code;
268
271
  }) // we can format and handle an error message from the code above
269
272
  // prevent wrapping error again by using "known: undefined" filter
270
- ["catch"]({
273
+ .catch({
271
274
  known: undefined
272
275
  }, errors.throwFormErrorText(errors.errors.unexpected));
273
276
  };
@@ -279,7 +282,8 @@ module.exports = {
279
282
  // spawning our own Xvfb server
280
283
 
281
284
 
282
- var linuxWithDisplayEnv = util.isPossibleLinuxWithIncorrectDisplay();
285
+ const linuxWithDisplayEnv = util.isPossibleLinuxWithIncorrectDisplay();
283
286
  return userFriendlySpawn(linuxWithDisplayEnv);
284
287
  }
288
+
285
289
  };
@@ -1,46 +1,47 @@
1
1
  "use strict";
2
2
 
3
- var Promise = require('bluebird');
3
+ const Promise = require('bluebird');
4
4
 
5
- var debug = require('debug')('cypress:cli');
5
+ const debug = require('debug')('cypress:cli');
6
6
 
7
- var path = require('path');
7
+ const path = require('path');
8
8
 
9
- var util = require('../util');
9
+ const util = require('../util');
10
10
 
11
- var state = require('../tasks/state');
11
+ const state = require('../tasks/state');
12
12
 
13
- var _require = require('../errors'),
14
- throwFormErrorText = _require.throwFormErrorText,
15
- errors = _require.errors;
13
+ const {
14
+ throwFormErrorText,
15
+ errors
16
+ } = require('../errors');
16
17
 
17
- var getVersions = function getVersions() {
18
- return Promise["try"](function () {
18
+ const getVersions = () => {
19
+ return Promise.try(() => {
19
20
  if (util.getEnv('CYPRESS_RUN_BINARY')) {
20
- var envBinaryPath = path.resolve(util.getEnv('CYPRESS_RUN_BINARY'));
21
- return state.parseRealPlatformBinaryFolderAsync(envBinaryPath).then(function (envBinaryDir) {
21
+ let envBinaryPath = path.resolve(util.getEnv('CYPRESS_RUN_BINARY'));
22
+ return state.parseRealPlatformBinaryFolderAsync(envBinaryPath).then(envBinaryDir => {
22
23
  if (!envBinaryDir) {
23
24
  return throwFormErrorText(errors.CYPRESS_RUN_BINARY.notValid(envBinaryPath))();
24
25
  }
25
26
 
26
27
  debug('CYPRESS_RUN_BINARY has binaryDir:', envBinaryDir);
27
28
  return envBinaryDir;
28
- })["catch"]({
29
+ }).catch({
29
30
  code: 'ENOENT'
30
- }, function (err) {
31
+ }, err => {
31
32
  return throwFormErrorText(errors.CYPRESS_RUN_BINARY.notValid(envBinaryPath))(err.message);
32
33
  });
33
34
  }
34
35
 
35
36
  return state.getBinaryDir();
36
- }).then(state.getBinaryPkgVersionAsync).then(function (binaryVersion) {
37
+ }).then(state.getBinaryPkgVersionAsync).then(binaryVersion => {
37
38
  return {
38
- "package": util.pkgVersion(),
39
+ package: util.pkgVersion(),
39
40
  binary: binaryVersion || 'not installed'
40
41
  };
41
42
  });
42
43
  };
43
44
 
44
45
  module.exports = {
45
- getVersions: getVersions
46
+ getVersions
46
47
  };
package/lib/exec/xvfb.js CHANGED
@@ -1,61 +1,54 @@
1
1
  "use strict";
2
2
 
3
- function _templateObject() {
4
- var data = _taggedTemplateLiteral(["\n DISPLAY environment variable is set to ", " on Linux\n Assuming this DISPLAY points at working X11 server,\n Cypress will not spawn own Xvfb\n\n NOTE: if the X11 server is NOT working, Cypress will exit without explanation,\n see ", "\n Solution: Unset the DISPLAY variable and try again:\n DISPLAY= npx cypress run ...\n "]);
3
+ const os = require('os');
5
4
 
6
- _templateObject = function _templateObject() {
7
- return data;
8
- };
5
+ const Promise = require('bluebird');
9
6
 
10
- return data;
11
- }
7
+ const Xvfb = require('@cypress/xvfb');
12
8
 
13
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
9
+ const {
10
+ stripIndent
11
+ } = require('common-tags');
14
12
 
15
- var os = require('os');
13
+ const debug = require('debug')('cypress:cli');
16
14
 
17
- var Promise = require('bluebird');
15
+ const debugXvfb = require('debug')('cypress:xvfb');
18
16
 
19
- var Xvfb = require('@cypress/xvfb');
17
+ const {
18
+ throwFormErrorText,
19
+ errors
20
+ } = require('../errors');
20
21
 
21
- var _require = require('common-tags'),
22
- stripIndent = _require.stripIndent;
22
+ const util = require('../util');
23
23
 
24
- var debug = require('debug')('cypress:cli');
25
-
26
- var debugXvfb = require('debug')('cypress:xvfb');
27
-
28
- var _require2 = require('../errors'),
29
- throwFormErrorText = _require2.throwFormErrorText,
30
- errors = _require2.errors;
31
-
32
- var util = require('../util');
33
-
34
- var xvfbOptions = {
24
+ const xvfbOptions = {
35
25
  timeout: 30000,
36
26
  // milliseconds
37
27
  // need to explicitly define screen otherwise electron will crash
38
28
  // https://github.com/cypress-io/cypress/issues/6184
39
29
  xvfb_args: ['-screen', '0', '1280x1024x24'],
40
- onStderrData: function onStderrData(data) {
30
+
31
+ onStderrData(data) {
41
32
  if (debugXvfb.enabled) {
42
33
  debugXvfb(data.toString());
43
34
  }
44
35
  }
36
+
45
37
  };
46
- var xvfb = Promise.promisifyAll(new Xvfb(xvfbOptions));
38
+ const xvfb = Promise.promisifyAll(new Xvfb(xvfbOptions));
47
39
  module.exports = {
48
40
  _debugXvfb: debugXvfb,
49
41
  // expose for testing
50
42
  _xvfb: xvfb,
51
43
  // expose for testing
52
44
  _xvfbOptions: xvfbOptions,
45
+
53
46
  // expose for testing
54
- start: function start() {
47
+ start() {
55
48
  debug('Starting Xvfb');
56
- return xvfb.startAsync()["return"](null)["catch"]({
49
+ return xvfb.startAsync().return(null).catch({
57
50
  nonZeroExitCode: true
58
- }, throwFormErrorText(errors.nonZeroExitCodeXvfb))["catch"](function (err) {
51
+ }, throwFormErrorText(errors.nonZeroExitCodeXvfb)).catch(err => {
59
52
  if (err.known) {
60
53
  throw err;
61
54
  }
@@ -63,19 +56,30 @@ module.exports = {
63
56
  return throwFormErrorText(errors.missingXvfb)(err);
64
57
  });
65
58
  },
66
- stop: function stop() {
59
+
60
+ stop() {
67
61
  debug('Stopping Xvfb');
68
- return xvfb.stopAsync()["return"](null)["catch"](function () {// noop
62
+ return xvfb.stopAsync().return(null).catch(() => {// noop
69
63
  });
70
64
  },
71
- isNeeded: function isNeeded() {
65
+
66
+ isNeeded() {
72
67
  if (os.platform() !== 'linux') {
73
68
  return false;
74
69
  }
75
70
 
76
71
  if (process.env.DISPLAY) {
77
- var issueUrl = util.getGitHubIssueUrl(4034);
78
- var message = stripIndent(_templateObject(), process.env.DISPLAY, issueUrl);
72
+ const issueUrl = util.getGitHubIssueUrl(4034);
73
+ const message = stripIndent`
74
+ DISPLAY environment variable is set to ${process.env.DISPLAY} on Linux
75
+ Assuming this DISPLAY points at working X11 server,
76
+ Cypress will not spawn own Xvfb
77
+
78
+ NOTE: if the X11 server is NOT working, Cypress will exit without explanation,
79
+ see ${issueUrl}
80
+ Solution: Unset the DISPLAY variable and try again:
81
+ DISPLAY= npx cypress run ...
82
+ `;
79
83
  debug(message);
80
84
  return false;
81
85
  }
@@ -84,11 +88,13 @@ module.exports = {
84
88
  debug('Cypress will spawn its own Xvfb');
85
89
  return true;
86
90
  },
91
+
87
92
  // async method, resolved with Boolean
88
- verify: function verify() {
89
- return xvfb.startAsync()["return"](true)["catch"](function (err) {
93
+ verify() {
94
+ return xvfb.startAsync().return(true).catch(err => {
90
95
  debug('Could not verify xvfb: %s', err.message);
91
96
  return false;
92
- })["finally"](xvfb.stopAsync);
97
+ }).finally(xvfb.stopAsync);
93
98
  }
99
+
94
100
  };