cypress 5.1.0 → 5.5.0
Sign up to get free protection for your applications and to get access to all the features.
- package/index.js +6 -6
- package/lib/cli.js +114 -107
- package/lib/cypress.js +21 -21
- package/lib/errors.js +233 -276
- package/lib/exec/info.js +29 -32
- package/lib/exec/open.js +7 -8
- package/lib/exec/run.js +20 -20
- package/lib/exec/spawn.js +53 -49
- package/lib/exec/versions.js +18 -17
- package/lib/exec/xvfb.js +43 -37
- package/lib/fs.js +1 -1
- package/lib/logger.js +24 -50
- package/lib/tasks/cache.js +96 -36
- package/lib/tasks/download.js +113 -133
- package/lib/tasks/get-folder-size.js +41 -0
- package/lib/tasks/install.js +225 -161
- package/lib/tasks/state.js +54 -56
- package/lib/tasks/unzip.js +72 -69
- package/lib/tasks/verify.js +112 -147
- package/lib/util.js +172 -176
- package/package.json +3 -3
- package/types/cypress-npm-api.d.ts +13 -5
- package/types/cypress.d.ts +51 -48
- package/types/mocha/index.d.ts +123 -308
- package/types/net-stubbing.ts +169 -19
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
declare namespace CypressCommandLine {
|
10
10
|
type HookName = 'before' | 'beforeEach' | 'afterEach' | 'after'
|
11
|
+
|
11
12
|
interface TestError {
|
12
13
|
name: string
|
13
14
|
message: string
|
@@ -225,7 +226,7 @@ declare namespace CypressCommandLine {
|
|
225
226
|
startedAt: dateTimeISO
|
226
227
|
endedAt: dateTimeISO
|
227
228
|
duration: ms
|
228
|
-
}
|
229
|
+
}
|
229
230
|
/**
|
230
231
|
* Reporter name like "spec"
|
231
232
|
*/
|
@@ -255,7 +256,7 @@ declare namespace CypressCommandLine {
|
|
255
256
|
* resolved filename of the spec
|
256
257
|
*/
|
257
258
|
absolute: string
|
258
|
-
}
|
259
|
+
}
|
259
260
|
shouldUploadVideo: boolean
|
260
261
|
}
|
261
262
|
|
@@ -264,6 +265,7 @@ declare namespace CypressCommandLine {
|
|
264
265
|
* @see https://on.cypress.io/module-api
|
265
266
|
*/
|
266
267
|
interface CypressRunResult {
|
268
|
+
status: 'finished'
|
267
269
|
startedTestsAt: dateTimeISO
|
268
270
|
endedTestsAt: dateTimeISO
|
269
271
|
totalDuration: ms
|
@@ -294,7 +296,8 @@ declare namespace CypressCommandLine {
|
|
294
296
|
* @example
|
295
297
|
```
|
296
298
|
const result = await cypress.run()
|
297
|
-
if (result.
|
299
|
+
if (result.status === 'failed') {
|
300
|
+
console.error('failures %d', result.failures)
|
298
301
|
console.error(result.message)
|
299
302
|
process.exit(result.failures)
|
300
303
|
}
|
@@ -302,6 +305,7 @@ declare namespace CypressCommandLine {
|
|
302
305
|
*
|
303
306
|
**/
|
304
307
|
interface CypressFailedRunResult {
|
308
|
+
status: 'failed'
|
305
309
|
failures: number
|
306
310
|
message: string
|
307
311
|
}
|
@@ -347,11 +351,15 @@ declare module 'cypress' {
|
|
347
351
|
cypress.run({
|
348
352
|
spec: 'cypress/integration/admin*-spec.js'
|
349
353
|
}).then(results => {
|
350
|
-
|
354
|
+
if (results.status === 'failed') {
|
355
|
+
// Cypress could not run
|
356
|
+
} else {
|
357
|
+
// inspect results object
|
358
|
+
}
|
351
359
|
})
|
352
360
|
```
|
353
361
|
*/
|
354
|
-
run(options?: Partial<CypressCommandLine.CypressRunOptions>): Promise<CypressCommandLine.CypressRunResult | CypressCommandLine.CypressFailedRunResult
|
362
|
+
run(options?: Partial<CypressCommandLine.CypressRunOptions>): Promise<CypressCommandLine.CypressRunResult | CypressCommandLine.CypressFailedRunResult>
|
355
363
|
/**
|
356
364
|
* Opens Cypress GUI. Resolves with void when the
|
357
365
|
* GUI is closed.
|
package/types/cypress.d.ts
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
declare namespace Cypress {
|
2
2
|
type FileContents = string | any[] | object
|
3
|
-
type HistoryDirection =
|
3
|
+
type HistoryDirection = 'back' | 'forward'
|
4
4
|
type HttpMethod = string
|
5
5
|
type RequestBody = string | object
|
6
|
-
type ViewportOrientation =
|
7
|
-
type PrevSubject =
|
6
|
+
type ViewportOrientation = 'portrait' | 'landscape'
|
7
|
+
type PrevSubject = 'optional' | 'element' | 'document' | 'window'
|
8
8
|
type PluginConfig = (on: PluginEvents, config: PluginConfigOptions) => void | ConfigOptions | Promise<ConfigOptions>
|
9
9
|
|
10
10
|
interface CommandOptions {
|
@@ -114,7 +114,7 @@ declare namespace Cypress {
|
|
114
114
|
*
|
115
115
|
* @see https://on.cypress.io/experiments
|
116
116
|
*/
|
117
|
-
type CypressSpecType =
|
117
|
+
type CypressSpecType = 'integration' | 'component'
|
118
118
|
|
119
119
|
/**
|
120
120
|
* Window type for Application Under Test(AUT)
|
@@ -413,7 +413,7 @@ declare namespace Cypress {
|
|
413
413
|
* Returns a boolean indicating whether an object is a DOM object.
|
414
414
|
*/
|
415
415
|
isDom(obj: any): boolean
|
416
|
-
isType(element: JQuery | HTMLElement
|
416
|
+
isType(element: JQuery | HTMLElement, type: string): boolean
|
417
417
|
/**
|
418
418
|
* Returns a boolean indicating whether an element is visible.
|
419
419
|
*/
|
@@ -518,7 +518,7 @@ declare namespace Cypress {
|
|
518
518
|
off: Actions
|
519
519
|
}
|
520
520
|
|
521
|
-
type CanReturnChainable = void | Chainable
|
521
|
+
type CanReturnChainable = void | Chainable | Promise<unknown>
|
522
522
|
type ThenReturn<S, R> =
|
523
523
|
R extends void ? Chainable<S> :
|
524
524
|
R extends R | undefined ? Chainable<S | Exclude<R, undefined>> :
|
@@ -1607,15 +1607,12 @@ declare namespace Cypress {
|
|
1607
1607
|
|
1608
1608
|
/**
|
1609
1609
|
* Traverse into an element's shadow root.
|
1610
|
-
* Requires `experimentalShadowDomSupport: true` config option
|
1611
1610
|
*
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1615
|
-
|
1616
|
-
|
1617
|
-
.click()
|
1618
|
-
```
|
1611
|
+
* @example
|
1612
|
+
* cy.get('my-component')
|
1613
|
+
* .shadow()
|
1614
|
+
* .find('.my-button')
|
1615
|
+
* .click()
|
1619
1616
|
* @see https://on.cypress.io/experimental
|
1620
1617
|
*/
|
1621
1618
|
shadow(): Chainable<Subject>
|
@@ -2302,7 +2299,7 @@ declare namespace Cypress {
|
|
2302
2299
|
* @default {@link Timeoutable#timeout}
|
2303
2300
|
* @see https://docs.cypress.io/guides/references/configuration.html#Timeouts
|
2304
2301
|
*/
|
2305
|
-
requestTimeout: number
|
2302
|
+
requestTimeout: number
|
2306
2303
|
/**
|
2307
2304
|
* Time to wait for the response (ms)
|
2308
2305
|
*
|
@@ -2485,7 +2482,7 @@ declare namespace Cypress {
|
|
2485
2482
|
* If set to `system`, Cypress will try to find a `node` executable on your path to use when executing your plugins. Otherwise, Cypress will use the Node version bundled with Cypress.
|
2486
2483
|
* @default "bundled"
|
2487
2484
|
*/
|
2488
|
-
nodeVersion:
|
2485
|
+
nodeVersion: 'system' | 'bundled'
|
2489
2486
|
/**
|
2490
2487
|
* Path to plugins file. (Pass false to disable)
|
2491
2488
|
* @default "cypress/plugins/index.js"
|
@@ -2567,7 +2564,7 @@ declare namespace Cypress {
|
|
2567
2564
|
*/
|
2568
2565
|
waitForAnimations: boolean
|
2569
2566
|
/**
|
2570
|
-
* Firefox
|
2567
|
+
* Firefox version 79 and below only: The number of tests that will run between forced garbage collections.
|
2571
2568
|
* If a number is supplied, it will apply to `run` mode and `open` mode.
|
2572
2569
|
* Set the interval to `null` or 0 to disable forced garbage collections.
|
2573
2570
|
* @default { runMode: 1, openMode: null }
|
@@ -2584,22 +2581,24 @@ declare namespace Cypress {
|
|
2584
2581
|
* @default false
|
2585
2582
|
*/
|
2586
2583
|
experimentalNetworkStubbing: boolean
|
2587
|
-
/**
|
2588
|
-
* Enables shadow DOM support. Adds the `cy.shadow()` command and
|
2589
|
-
* the `includeShadowDom` option to some DOM commands.
|
2590
|
-
* @default false
|
2591
|
-
*/
|
2592
|
-
experimentalShadowDomSupport: boolean
|
2593
2584
|
/**
|
2594
2585
|
* Number of times to retry a failed test.
|
2595
2586
|
* If a number is set, tests will retry in both runMode and openMode.
|
2596
2587
|
* To enable test retries only in runMode, set e.g. `{ openMode: null, runMode: 2 }`
|
2597
2588
|
* @default null
|
2598
2589
|
*/
|
2599
|
-
retries: Nullable<number | {runMode
|
2590
|
+
retries: Nullable<number | {runMode?: Nullable<number>, openMode?: Nullable<number>}>
|
2591
|
+
/**
|
2592
|
+
* Enables including elements within the shadow DOM when using querying
|
2593
|
+
* commands (e.g. cy.get(), cy.find()). Can be set globally in cypress.json,
|
2594
|
+
* per-suite or per-test in the test configuration object, or programmatically
|
2595
|
+
* with Cypress.config()
|
2596
|
+
* @default false
|
2597
|
+
*/
|
2598
|
+
includeShadowDom: boolean
|
2600
2599
|
}
|
2601
2600
|
|
2602
|
-
interface TestConfigOverrides extends Partial<Pick<ConfigOptions, 'baseUrl' | 'defaultCommandTimeout' | 'taskTimeout' | 'animationDistanceThreshold' | 'waitForAnimations' | 'viewportHeight' | 'viewportWidth' | 'requestTimeout' | 'execTimeout' | 'env' | 'responseTimeout' | 'retries'>> {
|
2601
|
+
interface TestConfigOverrides extends Partial<Pick<ConfigOptions, 'baseUrl' | 'defaultCommandTimeout' | 'taskTimeout' | 'animationDistanceThreshold' | 'waitForAnimations' | 'viewportHeight' | 'viewportWidth' | 'requestTimeout' | 'execTimeout' | 'env' | 'responseTimeout' | 'retries' | 'includeShadowDom'>> {
|
2603
2602
|
browser?: IsBrowserMatcher | IsBrowserMatcher[]
|
2604
2603
|
}
|
2605
2604
|
|
@@ -2699,18 +2698,18 @@ declare namespace Cypress {
|
|
2699
2698
|
scale: boolean
|
2700
2699
|
onBeforeScreenshot: ($el: JQuery) => void
|
2701
2700
|
onAfterScreenshot: ($el: JQuery, props: {
|
2702
|
-
path: string
|
2703
|
-
size: number
|
2701
|
+
path: string
|
2702
|
+
size: number
|
2704
2703
|
dimensions: {
|
2705
|
-
width: number
|
2704
|
+
width: number
|
2706
2705
|
height: number
|
2707
|
-
}
|
2708
|
-
multipart: boolean
|
2709
|
-
pixelRatio: number
|
2710
|
-
takenAt: string
|
2711
|
-
name: string
|
2712
|
-
blackout: string[]
|
2713
|
-
duration: number
|
2706
|
+
}
|
2707
|
+
multipart: boolean
|
2708
|
+
pixelRatio: number
|
2709
|
+
takenAt: string
|
2710
|
+
name: string
|
2711
|
+
blackout: string[]
|
2712
|
+
duration: number
|
2714
2713
|
testAttemptIndex: number
|
2715
2714
|
}) => void
|
2716
2715
|
}
|
@@ -2731,13 +2730,13 @@ declare namespace Cypress {
|
|
2731
2730
|
*
|
2732
2731
|
* @default 'swing'
|
2733
2732
|
*/
|
2734
|
-
easing: 'swing' | 'linear'
|
2733
|
+
easing: 'swing' | 'linear'
|
2735
2734
|
/**
|
2736
2735
|
* Ensure element is scrollable. Error if element is not scrollable
|
2737
2736
|
*
|
2738
2737
|
* @default true
|
2739
2738
|
*/
|
2740
|
-
ensureScrollable: boolean
|
2739
|
+
ensureScrollable: boolean
|
2741
2740
|
}
|
2742
2741
|
|
2743
2742
|
interface ScrollIntoViewOptions extends ScrollToOptions {
|
@@ -2786,6 +2785,10 @@ declare namespace Cypress {
|
|
2786
2785
|
sameSite: SameSiteStatus
|
2787
2786
|
}
|
2788
2787
|
|
2788
|
+
interface ShadowDomOptions {
|
2789
|
+
includeShadowDom?: boolean
|
2790
|
+
}
|
2791
|
+
|
2789
2792
|
/**
|
2790
2793
|
* Options that control `cy.type` command
|
2791
2794
|
*
|
@@ -4948,9 +4951,9 @@ declare namespace Cypress {
|
|
4948
4951
|
}
|
4949
4952
|
|
4950
4953
|
interface BrowserLaunchOptions {
|
4951
|
-
extensions: string[]
|
4954
|
+
extensions: string[]
|
4952
4955
|
preferences: { [key: string]: any }
|
4953
|
-
args: string[]
|
4956
|
+
args: string[]
|
4954
4957
|
}
|
4955
4958
|
|
4956
4959
|
interface Dimensions {
|
@@ -5039,7 +5042,7 @@ declare namespace Cypress {
|
|
5039
5042
|
})
|
5040
5043
|
```
|
5041
5044
|
*/
|
5042
|
-
(action: 'uncaught:exception', fn: (error: Error, runnable: Mocha.
|
5045
|
+
(action: 'uncaught:exception', fn: (error: Error, runnable: Mocha.Runnable) => false | void): void
|
5043
5046
|
/**
|
5044
5047
|
* Fires when your app calls the global `window.confirm()` method.
|
5045
5048
|
* Cypress will auto accept confirmations. Return `false` from this event and the confirmation will be canceled.
|
@@ -5099,7 +5102,7 @@ declare namespace Cypress {
|
|
5099
5102
|
* Fires when the test has failed. It is technically possible to prevent the test from actually failing by binding to this event and invoking an async `done` callback. However this is **strongly discouraged**. Tests should never legitimately fail. This event exists because it's extremely useful for debugging purposes.
|
5100
5103
|
* @see https://on.cypress.io/catalog-of-events#App-Events
|
5101
5104
|
*/
|
5102
|
-
(action: 'fail', fn: (error: Error, mocha: Mocha.
|
5105
|
+
(action: 'fail', fn: (error: Error, mocha: Mocha.Runnable) => void): void
|
5103
5106
|
/**
|
5104
5107
|
* Fires whenever the viewport changes via a `cy.viewport()` or naturally when Cypress resets the viewport to the default between tests. Useful for debugging purposes.
|
5105
5108
|
* @see https://on.cypress.io/catalog-of-events#App-Events
|
@@ -5144,16 +5147,16 @@ declare namespace Cypress {
|
|
5144
5147
|
* Fires before the test and all **before** and **beforeEach** hooks run.
|
5145
5148
|
* @see https://on.cypress.io/catalog-of-events#App-Events
|
5146
5149
|
*/
|
5147
|
-
(action: 'test:before:run', fn: (attributes: ObjectLike, test: Mocha.
|
5150
|
+
(action: 'test:before:run', fn: (attributes: ObjectLike, test: Mocha.Test) => void): void
|
5148
5151
|
/**
|
5149
5152
|
* Fires before the test and all **before** and **beforeEach** hooks run. If a `Promise` is returned, it will be awaited before proceeding.
|
5150
5153
|
*/
|
5151
|
-
(action: 'test:before:run:async', fn: (attributes: ObjectLike, test: Mocha.
|
5154
|
+
(action: 'test:before:run:async', fn: (attributes: ObjectLike, test: Mocha.Test) => void | Promise<any>): void
|
5152
5155
|
/**
|
5153
5156
|
* Fires after the test and all **afterEach** and **after** hooks run.
|
5154
5157
|
* @see https://on.cypress.io/catalog-of-events#App-Events
|
5155
5158
|
*/
|
5156
|
-
(action: 'test:after:run', fn: (attributes: ObjectLike, test: Mocha.
|
5159
|
+
(action: 'test:after:run', fn: (attributes: ObjectLike, test: Mocha.Test) => void): void
|
5157
5160
|
}
|
5158
5161
|
|
5159
5162
|
// $CommandQueue from `command_queue.coffee` - a lot to type. Might be more useful if it was written in TS
|
@@ -5291,10 +5294,10 @@ declare namespace Cypress {
|
|
5291
5294
|
}
|
5292
5295
|
|
5293
5296
|
type Encodings = 'ascii' | 'base64' | 'binary' | 'hex' | 'latin1' | 'utf8' | 'utf-8' | 'ucs2' | 'ucs-2' | 'utf16le' | 'utf-16le'
|
5294
|
-
type PositionType =
|
5295
|
-
type ViewportPreset = 'macbook-15' | 'macbook-13' | 'macbook-11' | 'ipad-2' | 'ipad-mini' | 'iphone-xr' | 'iphone-x' | 'iphone-6+' | 'iphone-6' | 'iphone-5' | 'iphone-4' | 'iphone-3' | 'samsung-s10' | 'samsung-note9'
|
5297
|
+
type PositionType = 'topLeft' | 'top' | 'topRight' | 'left' | 'center' | 'right' | 'bottomLeft' | 'bottom' | 'bottomRight'
|
5298
|
+
type ViewportPreset = 'macbook-16' | 'macbook-15' | 'macbook-13' | 'macbook-11' | 'ipad-2' | 'ipad-mini' | 'iphone-xr' | 'iphone-x' | 'iphone-6+' | 'iphone-se2' | 'iphone-8' | 'iphone-7' | 'iphone-6' | 'iphone-5' | 'iphone-4' | 'iphone-3' | 'samsung-s10' | 'samsung-note9'
|
5296
5299
|
interface Offset {
|
5297
|
-
top: number
|
5300
|
+
top: number
|
5298
5301
|
left: number
|
5299
5302
|
}
|
5300
5303
|
|
@@ -5382,6 +5385,6 @@ declare namespace Mocha {
|
|
5382
5385
|
}
|
5383
5386
|
|
5384
5387
|
interface PendingSuiteFunction {
|
5385
|
-
(title: string,
|
5388
|
+
(title: string, config: Cypress.TestConfigOverrides, fn: (this: Suite) => void): Suite | void
|
5386
5389
|
}
|
5387
5390
|
}
|