cypress 9.5.4 → 9.6.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/errors.js +7 -0
- package/lib/tasks/unzip.js +16 -7
- package/package.json +3 -3
- package/types/cypress.d.ts +67 -25
package/lib/errors.js
CHANGED
@@ -58,6 +58,12 @@ const failedUnzip = {
|
|
58
58
|
description: 'The Cypress App could not be unzipped.',
|
59
59
|
solution: genericErrorSolution
|
60
60
|
};
|
61
|
+
const failedUnzipWindowsMaxPathLength = {
|
62
|
+
description: 'The Cypress App could not be unzipped.',
|
63
|
+
solution: `This is most likely because the maximum path length is being exceeded on your system.
|
64
|
+
|
65
|
+
Read here for solutions to this problem: https://on.cypress.io/win-max-path-length-error`
|
66
|
+
};
|
61
67
|
|
62
68
|
const missingApp = binaryDir => {
|
63
69
|
return {
|
@@ -383,6 +389,7 @@ module.exports = {
|
|
383
389
|
unexpected,
|
384
390
|
failedDownload,
|
385
391
|
failedUnzip,
|
392
|
+
failedUnzipWindowsMaxPathLength,
|
386
393
|
invalidCypressEnv,
|
387
394
|
invalidCacheDirectory,
|
388
395
|
CYPRESS_RUN_BINARY,
|
package/lib/tasks/unzip.js
CHANGED
@@ -188,7 +188,11 @@ const unzip = ({
|
|
188
188
|
});
|
189
189
|
};
|
190
190
|
|
191
|
-
|
191
|
+
function isMaybeWindowsMaxPathLengthError(err) {
|
192
|
+
return os.platform() === 'win32' && err.code === 'ENOENT' && err.syscall === 'realpath';
|
193
|
+
}
|
194
|
+
|
195
|
+
const start = async ({
|
192
196
|
zipFilePath,
|
193
197
|
installDir,
|
194
198
|
progress
|
@@ -203,18 +207,23 @@ const start = ({
|
|
203
207
|
};
|
204
208
|
}
|
205
209
|
|
206
|
-
|
207
|
-
|
210
|
+
try {
|
211
|
+
const installDirExists = await fs.pathExists(installDir);
|
212
|
+
|
213
|
+
if (installDirExists) {
|
208
214
|
debug('removing existing unzipped binary', installDir);
|
209
|
-
|
215
|
+
await fs.removeAsync(installDir);
|
210
216
|
}
|
211
|
-
|
212
|
-
|
217
|
+
|
218
|
+
await unzip({
|
213
219
|
zipFilePath,
|
214
220
|
installDir,
|
215
221
|
progress
|
216
222
|
});
|
217
|
-
}
|
223
|
+
} catch (err) {
|
224
|
+
const errorTemplate = isMaybeWindowsMaxPathLengthError(err) ? errors.failedUnzipWindowsMaxPathLength : errors.failedUnzip;
|
225
|
+
await throwFormErrorText(errorTemplate)(err);
|
226
|
+
}
|
218
227
|
};
|
219
228
|
|
220
229
|
module.exports = {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "cypress",
|
3
|
-
"version": "9.
|
3
|
+
"version": "9.6.0",
|
4
4
|
"main": "index.js",
|
5
5
|
"scripts": {
|
6
6
|
"postinstall": "node index.js --exec install",
|
@@ -66,8 +66,8 @@
|
|
66
66
|
"types": "types",
|
67
67
|
"buildInfo": {
|
68
68
|
"commitBranch": "develop",
|
69
|
-
"commitSha": "
|
70
|
-
"commitDate": "2022-04-
|
69
|
+
"commitSha": "676fc97f46f9798b5f17ee6d292924f8e1a0c82b",
|
70
|
+
"commitDate": "2022-04-25T12:54:32.000Z",
|
71
71
|
"stable": true
|
72
72
|
},
|
73
73
|
"description": "Cypress.io end to end testing tool",
|
package/types/cypress.d.ts
CHANGED
@@ -10,10 +10,13 @@ declare namespace Cypress {
|
|
10
10
|
type PrevSubject = keyof PrevSubjectMap
|
11
11
|
type TestingType = 'e2e' | 'component'
|
12
12
|
type PluginConfig = (on: PluginEvents, config: PluginConfigOptions) => void | ConfigOptions | Promise<ConfigOptions>
|
13
|
+
interface JQueryWithSelector<TElement = HTMLElement> extends JQuery<TElement> {
|
14
|
+
selector?: string | null
|
15
|
+
}
|
13
16
|
|
14
17
|
interface PrevSubjectMap<O = unknown> {
|
15
18
|
optional: O
|
16
|
-
element:
|
19
|
+
element: JQueryWithSelector
|
17
20
|
document: Document
|
18
21
|
window: Window
|
19
22
|
}
|
@@ -53,19 +56,6 @@ declare namespace Cypress {
|
|
53
56
|
password: string
|
54
57
|
}
|
55
58
|
|
56
|
-
interface RemoteState {
|
57
|
-
auth?: {
|
58
|
-
username: string
|
59
|
-
password: string
|
60
|
-
}
|
61
|
-
domainName: string
|
62
|
-
strategy: 'file' | 'http'
|
63
|
-
origin: string
|
64
|
-
fileServer: string
|
65
|
-
props: Record<string, any>
|
66
|
-
visiting: string
|
67
|
-
}
|
68
|
-
|
69
59
|
interface Backend {
|
70
60
|
/**
|
71
61
|
* Firefox only: Force Cypress to run garbage collection routines.
|
@@ -467,16 +457,18 @@ declare namespace Cypress {
|
|
467
457
|
Commands: {
|
468
458
|
add<T extends keyof Chainable>(name: T, fn: CommandFn<T>): void
|
469
459
|
add<T extends keyof Chainable>(name: T, options: CommandOptions & {prevSubject: false}, fn: CommandFn<T>): void
|
460
|
+
add<T extends keyof Chainable, S = any>(name: T, options: CommandOptions & {prevSubject: true}, fn: CommandFnWithSubject<T, S>): void
|
470
461
|
add<T extends keyof Chainable, S extends PrevSubject>(
|
471
|
-
name: T, options: CommandOptions & { prevSubject:
|
462
|
+
name: T, options: CommandOptions & { prevSubject: S | ['optional'] }, fn: CommandFnWithSubject<T, PrevSubjectMap[S]>,
|
472
463
|
): void
|
473
464
|
add<T extends keyof Chainable, S extends PrevSubject>(
|
474
465
|
name: T, options: CommandOptions & { prevSubject: S[] }, fn: CommandFnWithSubject<T, PrevSubjectMap<void>[S]>,
|
475
466
|
): void
|
476
467
|
addAll<T extends keyof Chainable>(fns: CommandFns): void
|
477
468
|
addAll<T extends keyof Chainable>(options: CommandOptions & {prevSubject: false}, fns: CommandFns): void
|
469
|
+
addAll<T extends keyof Chainable, S = any>(options: CommandOptions & { prevSubject: true }, fns: CommandFnsWithSubject<S>): void
|
478
470
|
addAll<T extends keyof Chainable, S extends PrevSubject>(
|
479
|
-
options: CommandOptions & { prevSubject:
|
471
|
+
options: CommandOptions & { prevSubject: S | ['optional'] }, fns: CommandFnsWithSubject<PrevSubjectMap[S]>,
|
480
472
|
): void
|
481
473
|
addAll<T extends keyof Chainable, S extends PrevSubject>(
|
482
474
|
options: CommandOptions & { prevSubject: S[] }, fns: CommandFnsWithSubject<PrevSubjectMap<void>[S]>,
|
@@ -634,7 +626,7 @@ declare namespace Cypress {
|
|
634
626
|
* Trigger action
|
635
627
|
* @private
|
636
628
|
*/
|
637
|
-
action: (action: string, ...args: any[]) => void
|
629
|
+
action: (action: string, ...args: any[]) => any[] | void
|
638
630
|
|
639
631
|
/**
|
640
632
|
* Load files
|
@@ -1059,7 +1051,7 @@ declare namespace Cypress {
|
|
1059
1051
|
/**
|
1060
1052
|
* Save/Restore browser Cookies, LocalStorage, and SessionStorage data resulting from the supplied `setup` function.
|
1061
1053
|
*
|
1062
|
-
* Only available if the `
|
1054
|
+
* Only available if the `experimentalSessionAndOrigin` config option is enabled.
|
1063
1055
|
*
|
1064
1056
|
* @see https://on.cypress.io/session
|
1065
1057
|
*/
|
@@ -1421,6 +1413,29 @@ declare namespace Cypress {
|
|
1421
1413
|
*/
|
1422
1414
|
off: Actions
|
1423
1415
|
|
1416
|
+
/**
|
1417
|
+
* Enables running Cypress commands in a secondary origin.
|
1418
|
+
* @see https://on.cypress.io/origin
|
1419
|
+
* @example
|
1420
|
+
* cy.origin('example.com', () => {
|
1421
|
+
* cy.get('h1').should('equal', 'Example Domain')
|
1422
|
+
* })
|
1423
|
+
*/
|
1424
|
+
origin<T extends any>(urlOrDomain: string, fn: () => void): Chainable<T>
|
1425
|
+
|
1426
|
+
/**
|
1427
|
+
* Enables running Cypress commands in a secondary origin.
|
1428
|
+
* @see https://on.cypress.io/origin
|
1429
|
+
* @example
|
1430
|
+
* cy.origin('example.com', { args: { key: 'value', foo: 'foo' } }, ({ key, foo }) => {
|
1431
|
+
* expect(key).to.equal('value')
|
1432
|
+
* expect(foo).to.equal('foo')
|
1433
|
+
* })
|
1434
|
+
*/
|
1435
|
+
origin<T, S extends any>(urlOrDomain: string, options: {
|
1436
|
+
args: T
|
1437
|
+
}, fn: (args: T) => void): Chainable<S>
|
1438
|
+
|
1424
1439
|
/**
|
1425
1440
|
* Get the parent DOM element of a set of DOM elements.
|
1426
1441
|
*
|
@@ -2514,7 +2529,7 @@ declare namespace Cypress {
|
|
2514
2529
|
action: 'select' | 'drag-drop'
|
2515
2530
|
}
|
2516
2531
|
|
2517
|
-
interface BlurOptions extends Loggable, Forceable { }
|
2532
|
+
interface BlurOptions extends Loggable, Timeoutable, Forceable { }
|
2518
2533
|
|
2519
2534
|
interface CheckOptions extends Loggable, Timeoutable, ActionableOptions {
|
2520
2535
|
interval: number
|
@@ -2817,15 +2832,15 @@ declare namespace Cypress {
|
|
2817
2832
|
*/
|
2818
2833
|
scrollBehavior: scrollBehaviorOptions
|
2819
2834
|
/**
|
2820
|
-
*
|
2835
|
+
* Allows listening to the `before:run`, `after:run`, `before:spec`, and `after:spec` events in the plugins file during interactive mode.
|
2821
2836
|
* @default false
|
2822
2837
|
*/
|
2823
|
-
|
2838
|
+
experimentalInteractiveRunEvents: boolean
|
2824
2839
|
/**
|
2825
|
-
*
|
2840
|
+
* Enables cross-origin and improved session support, including the `cy.origin` and `cy.session` commands. See https://on.cypress.io/origin and https://on.cypress.io/session.
|
2826
2841
|
* @default false
|
2827
2842
|
*/
|
2828
|
-
|
2843
|
+
experimentalSessionAndOrigin: boolean
|
2829
2844
|
/**
|
2830
2845
|
* Generate and save commands directly to your test suite by interacting with your app as an end user would.
|
2831
2846
|
* @default false
|
@@ -2957,7 +2972,6 @@ declare namespace Cypress {
|
|
2957
2972
|
projectName: string
|
2958
2973
|
projectRoot: string
|
2959
2974
|
proxyUrl: string
|
2960
|
-
remote: RemoteState
|
2961
2975
|
report: boolean
|
2962
2976
|
reporterRoute: string
|
2963
2977
|
reporterUrl: string
|
@@ -5447,6 +5461,21 @@ declare namespace Cypress {
|
|
5447
5461
|
(action: 'task', tasks: Tasks): void
|
5448
5462
|
}
|
5449
5463
|
|
5464
|
+
interface CodeFrame {
|
5465
|
+
frame: string
|
5466
|
+
language: string
|
5467
|
+
line: number
|
5468
|
+
column: number
|
5469
|
+
absoluteFile: string
|
5470
|
+
originalFile: string
|
5471
|
+
relativeFile: string
|
5472
|
+
}
|
5473
|
+
|
5474
|
+
interface CypressError extends Error {
|
5475
|
+
docsUrl?: string
|
5476
|
+
codeFrame?: CodeFrame
|
5477
|
+
}
|
5478
|
+
|
5450
5479
|
// for just a few events like "window:alert" it makes sense to allow passing cy.stub() or
|
5451
5480
|
// a user callback function. Others probably only need a callback function.
|
5452
5481
|
|
@@ -5552,7 +5581,7 @@ declare namespace Cypress {
|
|
5552
5581
|
* This event exists because it's extremely useful for debugging purposes.
|
5553
5582
|
* @see https://on.cypress.io/catalog-of-events#App-Events
|
5554
5583
|
*/
|
5555
|
-
(action: 'fail', fn: (error:
|
5584
|
+
(action: 'fail', fn: (error: CypressError, mocha: Mocha.Runnable) => void): Cypress
|
5556
5585
|
/**
|
5557
5586
|
* Fires whenever the viewport changes via a `cy.viewport()` or naturally when
|
5558
5587
|
* Cypress resets the viewport to the default between tests. Useful for debugging purposes.
|
@@ -5586,6 +5615,12 @@ declare namespace Cypress {
|
|
5586
5615
|
* @see https://on.cypress.io/catalog-of-events#App-Events
|
5587
5616
|
*/
|
5588
5617
|
(action: 'command:end', fn: (command: CommandQueue) => void): Cypress
|
5618
|
+
/**
|
5619
|
+
* Fires when a command is skipped, namely the `should` command.
|
5620
|
+
* Useful for debugging and understanding how commands are handled.
|
5621
|
+
* @see https://on.cypress.io/catalog-of-events#App-Events
|
5622
|
+
*/
|
5623
|
+
(action: 'skipped:command:end', fn: (command: CommandQueue) => void): Cypress
|
5589
5624
|
/**
|
5590
5625
|
* Fires whenever a command begins its retrying routines.
|
5591
5626
|
* This is called on the trailing edge after Cypress has internally
|
@@ -5676,10 +5711,13 @@ declare namespace Cypress {
|
|
5676
5711
|
}
|
5677
5712
|
|
5678
5713
|
interface EnqueuedCommand {
|
5714
|
+
id: string
|
5679
5715
|
name: string
|
5680
5716
|
args: any[]
|
5681
5717
|
type: string
|
5682
5718
|
chainerId: string
|
5719
|
+
injected: boolean
|
5720
|
+
userInvocationStack?: string
|
5683
5721
|
fn(...args: any[]): any
|
5684
5722
|
}
|
5685
5723
|
|
@@ -5718,6 +5756,8 @@ declare namespace Cypress {
|
|
5718
5756
|
}
|
5719
5757
|
|
5720
5758
|
interface LogConfig extends Timeoutable {
|
5759
|
+
/** Unique id for the log, in the form of '<origin>-<number>' */
|
5760
|
+
id: string
|
5721
5761
|
/** The JQuery element for the command. This will highlight the command in the main window when debugging */
|
5722
5762
|
$el: JQuery
|
5723
5763
|
/** The scope of the log entry. If child, will appear nested below parents, prefixed with '-' */
|
@@ -5730,6 +5770,8 @@ declare namespace Cypress {
|
|
5730
5770
|
message: any
|
5731
5771
|
/** Set to false if you want to control the finishing of the command in the log yourself */
|
5732
5772
|
autoEnd: boolean
|
5773
|
+
/** Set to true to immediately finish the log */
|
5774
|
+
end: boolean
|
5733
5775
|
/** Return an object that will be printed in the dev tools console */
|
5734
5776
|
consoleProps(): ObjectLike
|
5735
5777
|
}
|