cypress 8.4.0 → 8.7.0

Sign up to get free protection for your applications and to get access to all the features.
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 {