cypress 3.3.0 → 3.3.1

Sign up to get free protection for your applications and to get access to all the features.
package/lib/errors.js CHANGED
@@ -5,9 +5,9 @@ var _templateObject = _taggedTemplateLiteral(['\n Search for an existing issu
5
5
  _templateObject3 = _taggedTemplateLiteral(['\n\n Reasons this may happen:\n\n - node was installed as \'root\' or with \'sudo\'\n - the cypress npm package as \'root\' or with \'sudo\'\n\n Please check that you have the appropriate user permissions.\n '], ['\\n\n Reasons this may happen:\n\n - node was installed as \'root\' or with \'sudo\'\n - the cypress npm package as \'root\' or with \'sudo\'\n\n Please check that you have the appropriate user permissions.\n ']),
6
6
  _templateObject4 = _taggedTemplateLiteral(['\n\n We expected the binary to be installed here: ', '\n\n Reasons it may be missing:\n\n - You\'re caching \'node_modules\' but are not caching this path: ', '\n - You ran \'npm install\' at an earlier build step but did not persist: ', '\n\n Properly caching the binary will fix this error and avoid downloading and unzipping Cypress.\n\n Alternatively, you can run \'cypress install\' to download the binary again.\n\n ', '\n '], ['\\n\n We expected the binary to be installed here: ', '\n\n Reasons it may be missing:\n\n - You\'re caching \'node_modules\' but are not caching this path: ', '\n - You ran \'npm install\' at an earlier build step but did not persist: ', '\n\n Properly caching the binary will fix this error and avoid downloading and unzipping Cypress.\n\n Alternatively, you can run \'cypress install\' to download the binary again.\n\n ', '\n ']),
7
7
  _templateObject5 = _taggedTemplateLiteral(['\n There was a problem spawning Xvfb.\n\n This is likely a problem with your system, permissions, or installation of Xvfb.\n '], ['\n There was a problem spawning Xvfb.\n\n This is likely a problem with your system, permissions, or installation of Xvfb.\n ']),
8
- _templateObject6 = _taggedTemplateLiteral(['\n Install XVFB and run Cypress again.\n\n Read our documentation on dependencies for more information:\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n '], ['\n Install XVFB and run Cypress again.\n\n Read our documentation on dependencies for more information:\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n ']),
8
+ _templateObject6 = _taggedTemplateLiteral(['\n Install Xvfb and run Cypress again.\n\n Read our documentation on dependencies for more information:\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n '], ['\n Install Xvfb and run Cypress again.\n\n Read our documentation on dependencies for more information:\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n ']),
9
9
  _templateObject7 = _taggedTemplateLiteral(['\n This command failed with the following output:\n\n ', '\n\n '], ['\n This command failed with the following output:\n\n ', '\n\n ']),
10
- _templateObject8 = _taggedTemplateLiteral(['\n Cypress failed to start after spawning a new XVFB server.\n\n The error logs we received were:\n\n ', '\n\n ', '\n\n ', '\n\n This is usually caused by a missing library or dependency.\n\n The error above should indicate which dependency is missing.\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n '], ['\n Cypress failed to start after spawning a new XVFB server.\n\n The error logs we received were:\n\n ', '\n\n ', '\n\n ', '\n\n This is usually caused by a missing library or dependency.\n\n The error above should indicate which dependency is missing.\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n ']),
10
+ _templateObject8 = _taggedTemplateLiteral(['\n Cypress failed to start after spawning a new Xvfb server.\n\n The error logs we received were:\n\n ', '\n\n ', '\n\n ', '\n\n This is usually caused by a missing library or dependency.\n\n The error above should indicate which dependency is missing.\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n '], ['\n Cypress failed to start after spawning a new Xvfb server.\n\n The error logs we received were:\n\n ', '\n\n ', '\n\n ', '\n\n This is usually caused by a missing library or dependency.\n\n The error above should indicate which dependency is missing.\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n ']),
11
11
  _templateObject9 = _taggedTemplateLiteral(['\n This is usually caused by a missing library or dependency.\n\n The error below should indicate which dependency is missing.\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n '], ['\n This is usually caused by a missing library or dependency.\n\n The error below should indicate which dependency is missing.\n\n ', '\n\n If you are using Docker, we provide containers with all required dependencies installed.\n ']),
12
12
  _templateObject10 = _taggedTemplateLiteral(['\n See discussion and possible solutions at\n ', '\n '], ['\n See discussion and possible solutions at\n ', '\n ']),
13
13
  _templateObject11 = _taggedTemplateLiteral(['\n Please search Cypress documentation for possible solutions:\n\n ', '\n\n Check if there is a GitHub issue describing this crash:\n\n ', '\n\n Consider opening a new issue.\n '], ['\n Please search Cypress documentation for possible solutions:\n\n ', '\n\n Check if there is a GitHub issue describing this crash:\n\n ', '\n\n Consider opening a new issue.\n ']),
@@ -76,12 +76,12 @@ var notInstalledCI = function notInstalledCI(executable) {
76
76
  };
77
77
 
78
78
  var nonZeroExitCodeXvfb = {
79
- description: 'XVFB exited with a non zero exit code.',
79
+ description: 'Xvfb exited with a non zero exit code.',
80
80
  solution: stripIndent(_templateObject5)
81
81
  };
82
82
 
83
83
  var missingXvfb = {
84
- description: 'Your system is missing the dependency: XVFB',
84
+ description: 'Your system is missing the dependency: Xvfb',
85
85
  solution: stripIndent(_templateObject6, chalk.blue(requiredDependenciesUrl))
86
86
  };
87
87
 
package/lib/exec/spawn.js CHANGED
@@ -50,7 +50,7 @@ function getStdio(needsXvfb) {
50
50
  if (needsStderrPiped(needsXvfb)) {
51
51
  // returning pipe here so we can massage stderr
52
52
  // and remove garbage from Xlib and libuv
53
- // due to starting the XVFB process on linux
53
+ // due to starting the Xvfb process on linux
54
54
  return ['inherit', 'inherit', 'pipe'];
55
55
  }
56
56
 
@@ -68,7 +68,7 @@ module.exports = {
68
68
  executable = path.resolve(util.getEnv('CYPRESS_RUN_BINARY'));
69
69
  }
70
70
 
71
- debug('needs to start own XVFB?', needsXvfb);
71
+ debug('needs to start own Xvfb?', needsXvfb);
72
72
 
73
73
  // always push cwd into the args
74
74
  args = [].concat(args, '--cwd', process.cwd());
@@ -224,7 +224,7 @@ module.exports = {
224
224
 
225
225
  // if we are on linux and there's already a DISPLAY
226
226
  // set, then we may need to rerun cypress after
227
- // spawning our own XVFB server
227
+ // spawning our own Xvfb server
228
228
  var linuxWithDisplayEnv = util.isPossibleLinuxWithIncorrectDisplay();
229
229
 
230
230
  return userFriendlySpawn(linuxWithDisplayEnv);
package/lib/exec/xvfb.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _templateObject = _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 '], ['\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
+ var _templateObject = _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 '], ['\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 ']);
4
4
 
5
5
  function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
6
6
 
@@ -35,7 +35,7 @@ module.exports = {
35
35
  _xvfb: xvfb, // expose for testing
36
36
 
37
37
  start: function start() {
38
- debug('Starting XVFB');
38
+ debug('Starting Xvfb');
39
39
 
40
40
  return xvfb.startAsync().return(null).catch({ nonZeroExitCode: true }, throwFormErrorText(errors.nonZeroExitCodeXvfb)).catch(function (err) {
41
41
  if (err.known) {
@@ -46,7 +46,7 @@ module.exports = {
46
46
  });
47
47
  },
48
48
  stop: function stop() {
49
- debug('Stopping XVFB');
49
+ debug('Stopping Xvfb');
50
50
 
51
51
  return xvfb.stopAsync().return(null).catch(function () {
52
52
  // noop
@@ -68,7 +68,7 @@ module.exports = {
68
68
  }
69
69
 
70
70
  debug('undefined DISPLAY environment variable');
71
- debug('Cypress will spawn its own XVFB');
71
+ debug('Cypress will spawn its own Xvfb');
72
72
 
73
73
  return true;
74
74
  },
@@ -78,7 +78,7 @@ var runSmokeTest = function runSmokeTest(binaryDir, options) {
78
78
 
79
79
  var needsXvfb = xvfb.isNeeded();
80
80
 
81
- debug('needs XVFB?', needsXvfb);
81
+ debug('needs Xvfb?', needsXvfb);
82
82
 
83
83
  /**
84
84
  * Spawn Cypress running smoke test to check if all operating system
@@ -88,8 +88,6 @@ var runSmokeTest = function runSmokeTest(binaryDir, options) {
88
88
  var random = _.random(0, 1000);
89
89
  var args = ['--smoke-test', '--ping=' + random];
90
90
 
91
- process.env.ELECTRON_ENABLE_LOGGING = true;
92
-
93
91
  if (options.dev) {
94
92
  executable = 'node';
95
93
  args.unshift(path.resolve(__dirname, '..', '..', '..', 'scripts', 'start.js'));
@@ -101,7 +99,16 @@ var runSmokeTest = function runSmokeTest(binaryDir, options) {
101
99
  debug('using Cypress executable %s', executable);
102
100
  debug('smoke test command:', smokeTestCommand);
103
101
 
104
- return Promise.resolve(util.exec(executable, args, { timeout: options.smokeTestTimeout })).catch(onSmokeTestError(smokeTestCommand, linuxWithDisplayEnv)).then(function (result) {
102
+ var env = _.extend({}, process.env, {
103
+ ELECTRON_ENABLE_LOGGING: true
104
+ });
105
+
106
+ var stdioOptions = _.extend({}, {
107
+ env: env,
108
+ timeout: options.smokeTestTimeout
109
+ });
110
+
111
+ return Promise.resolve(util.exec(executable, args, stdioOptions)).catch(onSmokeTestError(smokeTestCommand, linuxWithDisplayEnv)).then(function (result) {
105
112
  // TODO: when execa > 1.1 is released
106
113
  // change this to `result.all` for both stderr and stdout
107
114
  var smokeTestReturned = result.stdout;
@@ -136,7 +143,7 @@ var runSmokeTest = function runSmokeTest(binaryDir, options) {
136
143
 
137
144
  // if we are on linux and there's already a DISPLAY
138
145
  // set, then we may need to rerun cypress after
139
- // spawning our own XVFB server
146
+ // spawning our own Xvfb server
140
147
  var linuxWithDisplayEnv = util.isPossibleLinuxWithIncorrectDisplay();
141
148
 
142
149
  return userFriendlySpawn(linuxWithDisplayEnv);
package/lib/util.js CHANGED
@@ -49,7 +49,7 @@ function normalizeModuleOptions() {
49
49
 
50
50
  /**
51
51
  * Returns true if the platform is Linux. We do a lot of different
52
- * stuff on Linux (like XVFB) and it helps to has readable code
52
+ * stuff on Linux (like Xvfb) and it helps to has readable code
53
53
  */
54
54
  var isLinux = function isLinux() {
55
55
  return os.platform() === 'linux';
@@ -71,7 +71,7 @@ var isPossibleLinuxWithIncorrectDisplay = function isPossibleLinuxWithIncorrectD
71
71
  };
72
72
 
73
73
  var logBrokenGtkDisplayWarning = function logBrokenGtkDisplayWarning() {
74
- debug('Cypress exited due to a broken gtk display because of a potential invalid DISPLAY env... retrying after starting XVFB');
74
+ debug('Cypress exited due to a broken gtk display because of a potential invalid DISPLAY env... retrying after starting Xvfb');
75
75
 
76
76
  // if we get this error, we are on Linux and DISPLAY is set
77
77
  logger.warn(stripIndent(_templateObject, logSymbols.warning, process.env.DISPLAY));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cypress",
3
- "version": "3.3.0",
3
+ "version": "3.3.1",
4
4
  "main": "index.js",
5
5
  "bin": {
6
6
  "cypress": "bin/cypress"
package/types/index.d.ts CHANGED
@@ -3593,6 +3593,22 @@ declare namespace Cypress {
3593
3593
  * @see https://on.cypress.io/assertions
3594
3594
  */
3595
3595
  (chainer: 'contain', value: string): Chainable<Subject>
3596
+ /**
3597
+ * Assert that at least one element of the selection is focused.
3598
+ * @example
3599
+ * cy.get('#result').should('have.focus')
3600
+ * cy.get('#result').should('be.focused')
3601
+ * @see https://on.cypress.io/assertions
3602
+ */
3603
+ (chainer: 'have.focus'): Chainable<Subject>
3604
+ /**
3605
+ * Assert that at least one element of the selection is focused.
3606
+ * @example
3607
+ * cy.get('#result').should('be.focused')
3608
+ * cy.get('#result').should('have.focus')
3609
+ * @see https://on.cypress.io/assertions
3610
+ */
3611
+ (chainer: 'be.focused'): Chainable<Subject>
3596
3612
  /**
3597
3613
  * Assert that the selection is not empty. Note that this overrides the built-in chai assertion. If the object asserted against is not a jQuery object, the original implementation will be called.
3598
3614
  * @example
@@ -3749,6 +3765,22 @@ declare namespace Cypress {
3749
3765
  * @see https://on.cypress.io/assertions
3750
3766
  */
3751
3767
  (chainer: 'not.be.visible'): Chainable<Subject>
3768
+ /**
3769
+ * Assert that no element of the selection is focused.
3770
+ * @example
3771
+ * cy.get('#result').should('not.have.focus')
3772
+ * cy.get('#result').should('not.be.focused')
3773
+ * @see https://on.cypress.io/assertions
3774
+ */
3775
+ (chainer: 'not.have.focus'): Chainable<Subject>
3776
+ /**
3777
+ * Assert that no element of the selection is focused.
3778
+ * @example
3779
+ * cy.get('#result').should('not.be.focused')
3780
+ * cy.get('#result').should('not.have.focus')
3781
+ * @see https://on.cypress.io/assertions
3782
+ */
3783
+ (chainer: 'not.be.focused'): Chainable<Subject>
3752
3784
  /**
3753
3785
  * Assert that the selection does not contain the given text, using `:contains()`. If the object asserted against is not a jQuery object, or if `contain` is not called as a function, the original implementation will be called.
3754
3786
  * @example