cypress 3.3.0 → 3.3.1

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/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