cypress 8.4.0 → 8.7.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/cypress.js CHANGED
@@ -70,6 +70,24 @@ const cypressModuleApi = {
70
70
  return cli.parseRunCommand(args);
71
71
  }
72
72
 
73
+ },
74
+
75
+ /**
76
+ * Provides automatic code completion for configuration in many popular code editors.
77
+ * While it's not strictly necessary for Cypress to parse your configuration, we
78
+ * recommend wrapping your config object with `defineConfig()`
79
+ * @example
80
+ * module.exports = defineConfig({
81
+ * viewportWith: 400
82
+ * })
83
+ *
84
+ * @see ../types/cypress-npm-api.d.ts
85
+ * @param {Cypress.ConfigOptions} config
86
+ * @returns {Cypress.ConfigOptions} the configuration passed in parameter
87
+ */
88
+ defineConfig(config) {
89
+ return config;
73
90
  }
91
+
74
92
  };
75
93
  module.exports = cypressModuleApi;
@@ -24,6 +24,8 @@ const {
24
24
  stripIndent
25
25
  } = require('common-tags');
26
26
 
27
+ const getProxyForUrl = require('proxy-from-env').getProxyForUrl;
28
+
27
29
  const {
28
30
  throwFormErrorText,
29
31
  errors
@@ -35,8 +37,8 @@ const util = require('../util');
35
37
 
36
38
  const defaultBaseUrl = 'https://download.cypress.io/';
37
39
 
38
- const getProxyUrl = () => {
39
- return process.env.HTTPS_PROXY || process.env.https_proxy || process.env.npm_config_https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || process.env.npm_config_proxy || null;
40
+ const getProxyForUrlWithNpmConfig = url => {
41
+ return getProxyForUrl(url) || process.env.npm_config_https_proxy || process.env.npm_config_proxy || null;
40
42
  };
41
43
 
42
44
  const getRealOsArch = () => {
@@ -198,7 +200,7 @@ const downloadFromUrl = ({
198
200
  ca
199
201
  }) => {
200
202
  return new Promise((resolve, reject) => {
201
- const proxy = getProxyUrl();
203
+ const proxy = getProxyForUrlWithNpmConfig(url);
202
204
  debug('Downloading package', {
203
205
  url,
204
206
  proxy,
@@ -338,6 +340,6 @@ const start = opts => {
338
340
  module.exports = {
339
341
  start,
340
342
  getUrl,
341
- getProxyUrl,
343
+ getProxyForUrlWithNpmConfig,
342
344
  getCA
343
345
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cypress",
3
- "version": "8.4.0",
3
+ "version": "8.7.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "postinstall": "node index.js --exec install",
@@ -41,6 +41,7 @@
41
41
  "minimist": "^1.2.5",
42
42
  "ospath": "^1.2.2",
43
43
  "pretty-bytes": "^5.6.0",
44
+ "proxy-from-env": "1.0.0",
44
45
  "ramda": "~0.27.1",
45
46
  "request-progress": "^3.0.0",
46
47
  "supports-color": "^8.1.1",
@@ -1,11 +1,12 @@
1
1
  // Shim definition to export a namespace. Cypress is actually a global module
2
2
  // so import/export isn't allowed there. We import here and define a global module
3
3
  // so that Cypress can get and use the Blob type
4
- import BluebirdStatic = require('./bluebird')
4
+ import ImportedBluebird = require('./bluebird')
5
5
 
6
6
  export = Bluebird
7
7
  export as namespace Bluebird
8
8
 
9
9
  declare namespace Bluebird {
10
- type BluebirdStatic = typeof BluebirdStatic
10
+ type BluebirdStatic = typeof ImportedBluebird
11
+ interface Promise<T> extends ImportedBluebird<T> {}
11
12
  }
@@ -91,6 +91,10 @@ declare namespace CypressCommandLine {
91
91
  * Specify mocha reporter options
92
92
  */
93
93
  reporterOptions: any
94
+ /**
95
+ * Slow test threshold in milliseconds. Only affects the visual output of some reporters. For example, the spec reporter will display the test time in yellow if over the threshold.
96
+ */
97
+ slowTestThreshold: number
94
98
  /**
95
99
  * Specify the specs to run
96
100
  */
@@ -377,6 +381,21 @@ declare module 'cypress' {
377
381
  * Cypress does
378
382
  */
379
383
  cli: CypressCommandLine.CypressCliParser
384
+
385
+ /**
386
+ * Provides automatic code completion for configuration in many popular code editors.
387
+ * While it's not strictly necessary for Cypress to parse your configuration, we
388
+ * recommend wrapping your config object with `defineConfig()`
389
+ * @example
390
+ * module.exports = defineConfig({
391
+ * viewportWith: 400
392
+ * })
393
+ *
394
+ * @see ../types/cypress-npm-api.d.ts
395
+ * @param {Cypress.ConfigOptions} config
396
+ * @returns {Cypress.ConfigOptions} the configuration passed in parameter
397
+ */
398
+ defineConfig(config: Cypress.ConfigOptions): Cypress.ConfigOptions
380
399
  }
381
400
 
382
401
  // export Cypress NPM module interface
@@ -168,7 +168,12 @@ declare namespace Cypress {
168
168
  /**
169
169
  * The interface for user-defined properties in Window object under test.
170
170
  */
171
- interface ApplicationWindow {} // tslint:disable-line
171
+ interface ApplicationWindow { } // tslint:disable-line
172
+
173
+ /**
174
+ * The configuration for Cypress.
175
+ */
176
+ type Config = ResolvedConfigOptions & RuntimeConfigOptions
172
177
 
173
178
  /**
174
179
  * Several libraries are bundled with Cypress by default.
@@ -297,7 +302,7 @@ declare namespace Cypress {
297
302
  /**
298
303
  * Fire automation:request event for internal use.
299
304
  */
300
- automation(eventName: string, ...args: any[]): Promise<any>
305
+ automation(eventName: string, ...args: any[]): Bluebird.Promise<any>
301
306
 
302
307
  /**
303
308
  * Promise wrapper for certain internal tasks.
@@ -313,7 +318,7 @@ declare namespace Cypress {
313
318
  // {defaultCommandTimeout: 10000, pageLoadTimeout: 30000, ...}
314
319
  ```
315
320
  */
316
- config(): ResolvedConfigOptions & RuntimeConfigOptions
321
+ config(): Config
317
322
  /**
318
323
  * Returns one configuration value.
319
324
  * @see https://on.cypress.io/config
@@ -521,7 +526,7 @@ declare namespace Cypress {
521
526
  /**
522
527
  * @see https://on.cypress.io/keyboard-api
523
528
  */
524
- Keyboard: {
529
+ Keyboard: {
525
530
  defaults(options: Partial<KeyboardDefaultsOptions>): void
526
531
  }
527
532
 
@@ -579,7 +584,7 @@ declare namespace Cypress {
579
584
  }
580
585
 
581
586
  interface SessionOptions {
582
- validate?: () => false|void
587
+ validate?: () => false | void
583
588
  }
584
589
 
585
590
  type CanReturnChainable = void | Chainable | Promise<unknown>
@@ -717,36 +722,36 @@ declare namespace Cypress {
717
722
  ```
718
723
  */
719
724
  clearLocalStorage(re: RegExp): Chainable<Storage>
720
- /**
721
- * Clear data in local storage.
722
- * Cypress automatically runs this command before each test to prevent state from being
723
- * shared across tests. You shouldn’t need to use this command unless you’re using it
724
- * to clear localStorage inside a single test. Yields `localStorage` object.
725
- *
726
- * @see https://on.cypress.io/clearlocalstorage
727
- * @param {options} [object] - options object
728
- * @example
729
- ```
730
- // Removes all local storage items, without logging
731
- cy.clearLocalStorage({ log: false })
732
- ```
733
- */
725
+ /**
726
+ * Clear data in local storage.
727
+ * Cypress automatically runs this command before each test to prevent state from being
728
+ * shared across tests. You shouldn’t need to use this command unless you’re using it
729
+ * to clear localStorage inside a single test. Yields `localStorage` object.
730
+ *
731
+ * @see https://on.cypress.io/clearlocalstorage
732
+ * @param {options} [object] - options object
733
+ * @example
734
+ ```
735
+ // Removes all local storage items, without logging
736
+ cy.clearLocalStorage({ log: false })
737
+ ```
738
+ */
734
739
  clearLocalStorage(options: Partial<Loggable>): Chainable<Storage>
735
- /**
736
- * Clear data in local storage.
737
- * Cypress automatically runs this command before each test to prevent state from being
738
- * shared across tests. You shouldn’t need to use this command unless you’re using it
739
- * to clear localStorage inside a single test. Yields `localStorage` object.
740
- *
741
- * @see https://on.cypress.io/clearlocalstorage
742
- * @param {string} [key] - name of a particular item to remove (optional).
743
- * @param {options} [object] - options object
744
- * @example
745
- ```
746
- // Removes item "todos" without logging
747
- cy.clearLocalStorage("todos", { log: false })
748
- ```
749
- */
740
+ /**
741
+ * Clear data in local storage.
742
+ * Cypress automatically runs this command before each test to prevent state from being
743
+ * shared across tests. You shouldn’t need to use this command unless you’re using it
744
+ * to clear localStorage inside a single test. Yields `localStorage` object.
745
+ *
746
+ * @see https://on.cypress.io/clearlocalstorage
747
+ * @param {string} [key] - name of a particular item to remove (optional).
748
+ * @param {options} [object] - options object
749
+ * @example
750
+ ```
751
+ // Removes item "todos" without logging
752
+ cy.clearLocalStorage("todos", { log: false })
753
+ ```
754
+ */
750
755
  clearLocalStorage(key: string, options: Partial<Loggable>): Chainable<Storage>
751
756
 
752
757
  /**
@@ -834,7 +839,7 @@ declare namespace Cypress {
834
839
  * // or use this shortcut
835
840
  * cy.clock().invoke('restore')
836
841
  */
837
- clock(now: number|Date, options?: Loggable): Chainable<Clock>
842
+ clock(now: number | Date, options?: Loggable): Chainable<Clock>
838
843
  /**
839
844
  * Mocks global clock but only overrides specific functions.
840
845
  *
@@ -843,7 +848,7 @@ declare namespace Cypress {
843
848
  * // keep current date but override "setTimeout" and "clearTimeout"
844
849
  * cy.clock(null, ['setTimeout', 'clearTimeout'])
845
850
  */
846
- clock(now: number|Date, functions?: Array<'setTimeout' | 'clearTimeout' | 'setInterval' | 'clearInterval' | 'Date'>, options?: Loggable): Chainable<Clock>
851
+ clock(now: number | Date, functions?: Array<'setTimeout' | 'clearTimeout' | 'setInterval' | 'clearInterval' | 'Date'>, options?: Loggable): Chainable<Clock>
847
852
  /**
848
853
  * Mocks global clock and all functions.
849
854
  *
@@ -977,14 +982,14 @@ declare namespace Cypress {
977
982
  */
978
983
  debug(options?: Partial<Loggable>): Chainable<Subject>
979
984
 
980
- /**
981
- * Save/Restore browser Cookies, LocalStorage, and SessionStorage data resulting from the supplied `setup` function.
982
- *
983
- * Only available if the `experimentalSessionSupport` config option is enabled.
984
- *
985
- * @see https://on.cypress.io/session
986
- */
987
- session(id: string|object, setup?: SessionOptions['validate'], options?: SessionOptions): Chainable<null>
985
+ /**
986
+ * Save/Restore browser Cookies, LocalStorage, and SessionStorage data resulting from the supplied `setup` function.
987
+ *
988
+ * Only available if the `experimentalSessionSupport` config option is enabled.
989
+ *
990
+ * @see https://on.cypress.io/session
991
+ */
992
+ session(id: string | object, setup?: SessionOptions['validate'], options?: SessionOptions): Chainable<null>
988
993
 
989
994
  /**
990
995
  * Get the window.document of the page that is currently active.
@@ -1648,17 +1653,11 @@ declare namespace Cypress {
1648
1653
  scrollTo(x: number | string, y: number | string, options?: Partial<ScrollToOptions>): Chainable<Subject>
1649
1654
 
1650
1655
  /**
1651
- * Select an `<option>` with specific text within a `<select>`.
1652
- *
1653
- * @see https://on.cypress.io/select
1654
- */
1655
- select(text: string | string[], options?: Partial<SelectOptions>): Chainable<Subject>
1656
- /**
1657
- * Select an `<option>` with specific value(s) within a `<select>`.
1656
+ * Select an `<option>` with specific text, value, or index within a `<select>`.
1658
1657
  *
1659
1658
  * @see https://on.cypress.io/select
1660
1659
  */
1661
- select(value: string | string[], options?: Partial<SelectOptions>): Chainable<Subject>
1660
+ select(valueOrTextOrIndex: string | number | Array<string | number>, options?: Partial<SelectOptions>): Chainable<Subject>
1662
1661
 
1663
1662
  /**
1664
1663
  * @deprecated Use `cy.intercept()` instead.
@@ -1909,13 +1908,13 @@ declare namespace Cypress {
1909
1908
  *
1910
1909
  * @see https://on.cypress.io/then
1911
1910
  */
1912
- then<S extends HTMLElement>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => S): Chainable<JQuery<S>>
1913
- /**
1914
- * Enables you to work with the subject yielded from the previous command / promise.
1915
- *
1916
- * @see https://on.cypress.io/then
1917
- */
1918
- then<S extends ArrayLike<HTMLElement>>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => S): Chainable<JQuery<S extends ArrayLike<infer T> ? T : never>>
1911
+ then<S extends HTMLElement>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => S): Chainable<JQuery<S>>
1912
+ /**
1913
+ * Enables you to work with the subject yielded from the previous command / promise.
1914
+ *
1915
+ * @see https://on.cypress.io/then
1916
+ */
1917
+ then<S extends ArrayLike<HTMLElement>>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => S): Chainable<JQuery<S extends ArrayLike<infer T> ? T : never>>
1919
1918
  /**
1920
1919
  * Enables you to work with the subject yielded from the previous command / promise.
1921
1920
  *
@@ -2578,6 +2577,11 @@ declare namespace Cypress {
2578
2577
  * @default "spec"
2579
2578
  */
2580
2579
  reporterOptions: { [key: string]: any }
2580
+ /**
2581
+ * Slow test threshold in milliseconds. Only affects the visual output of some reporters. For example, the spec reporter will display the test time in yellow if over the threshold.
2582
+ * @default 10000
2583
+ */
2584
+ slowTestThreshold: number
2581
2585
  /**
2582
2586
  * Whether Cypress will watch and restart tests on test file changes
2583
2587
  * @default true
@@ -2754,7 +2758,7 @@ declare namespace Cypress {
2754
2758
  * To enable test retries only in runMode, set e.g. `{ openMode: null, runMode: 2 }`
2755
2759
  * @default null
2756
2760
  */
2757
- retries: Nullable<number | {runMode?: Nullable<number>, openMode?: Nullable<number>}>
2761
+ retries: Nullable<number | { runMode?: Nullable<number>, openMode?: Nullable<number> }>
2758
2762
  /**
2759
2763
  * Enables including elements within the shadow DOM when using querying
2760
2764
  * commands (e.g. cy.get(), cy.find()). Can be set globally in cypress.json,
@@ -2876,7 +2880,7 @@ declare namespace Cypress {
2876
2880
  socketId: null | string
2877
2881
  socketIoCookie: string
2878
2882
  socketIoRoute: string
2879
- spec: Cypress['spec']
2883
+ spec: Cypress['spec'] | null
2880
2884
  specs: Array<Cypress['spec']>
2881
2885
  xhrRoute: string
2882
2886
  xhrUrl: string
@@ -2891,7 +2895,7 @@ declare namespace Cypress {
2891
2895
  * All configuration items are optional.
2892
2896
  */
2893
2897
  type CoreConfigOptions = Partial<Omit<ResolvedConfigOptions, TestingType>>
2894
- type ConfigOptions = CoreConfigOptions & {e2e?: CoreConfigOptions, component?: CoreConfigOptions }
2898
+ type ConfigOptions = CoreConfigOptions & { e2e?: CoreConfigOptions, component?: CoreConfigOptions }
2895
2899
 
2896
2900
  interface PluginConfigOptions extends ResolvedConfigOptions {
2897
2901
  /**
@@ -2998,6 +3002,7 @@ declare namespace Cypress {
2998
3002
  disableTimersAndAnimations: boolean
2999
3003
  padding: Padding
3000
3004
  scale: boolean
3005
+ overwrite: boolean
3001
3006
  onBeforeScreenshot: ($el: JQuery) => void
3002
3007
  onAfterScreenshot: ($el: JQuery, props: {
3003
3008
  path: string
@@ -5703,48 +5708,48 @@ declare namespace Cypress {
5703
5708
  }
5704
5709
  ```
5705
5710
  */
5706
- interface cy extends Chainable<undefined> {}
5711
+ interface cy extends Chainable<undefined> { }
5707
5712
  }
5708
5713
 
5709
5714
  declare namespace Mocha {
5710
5715
  interface TestFunction {
5711
- /**
5712
- * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5713
- * as a thunk.
5714
- */
5715
- (title: string, config: Cypress.TestConfigOverrides, fn?: Func): Test
5716
-
5717
- /**
5718
- * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5719
- * as a thunk.
5720
- */
5721
- (title: string, config: Cypress.TestConfigOverrides, fn?: AsyncFunc): Test
5716
+ /**
5717
+ * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5718
+ * as a thunk.
5719
+ */
5720
+ (title: string, config: Cypress.TestConfigOverrides, fn?: Func): Test
5721
+
5722
+ /**
5723
+ * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5724
+ * as a thunk.
5725
+ */
5726
+ (title: string, config: Cypress.TestConfigOverrides, fn?: AsyncFunc): Test
5722
5727
  }
5723
5728
  interface ExclusiveTestFunction {
5724
- /**
5725
- * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5726
- * as a thunk.
5727
- */
5728
- (title: string, config: Cypress.TestConfigOverrides, fn?: Func): Test
5729
-
5730
- /**
5731
- * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5732
- * as a thunk.
5733
- */
5734
- (title: string, config: Cypress.TestConfigOverrides, fn?: AsyncFunc): Test
5729
+ /**
5730
+ * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5731
+ * as a thunk.
5732
+ */
5733
+ (title: string, config: Cypress.TestConfigOverrides, fn?: Func): Test
5734
+
5735
+ /**
5736
+ * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5737
+ * as a thunk.
5738
+ */
5739
+ (title: string, config: Cypress.TestConfigOverrides, fn?: AsyncFunc): Test
5735
5740
  }
5736
5741
  interface PendingTestFunction {
5737
- /**
5738
- * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5739
- * as a thunk.
5740
- */
5741
- (title: string, config: Cypress.TestConfigOverrides, fn?: Func): Test
5742
-
5743
- /**
5744
- * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5745
- * as a thunk.
5746
- */
5747
- (title: string, config: Cypress.TestConfigOverrides, fn?: AsyncFunc): Test
5742
+ /**
5743
+ * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5744
+ * as a thunk.
5745
+ */
5746
+ (title: string, config: Cypress.TestConfigOverrides, fn?: Func): Test
5747
+
5748
+ /**
5749
+ * Describe a specification or test-case with the given `title`, TestOptions, and callback `fn` acting
5750
+ * as a thunk.
5751
+ */
5752
+ (title: string, config: Cypress.TestConfigOverrides, fn?: AsyncFunc): Test
5748
5753
  }
5749
5754
 
5750
5755
  interface SuiteFunction {