cypress 12.5.1 → 12.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/angular/CHANGELOG.md +7 -0
- package/angular/dist/index.d.ts +6 -2
- package/angular/dist/index.js +30 -2
- package/index.mjs +2 -0
- package/lib/cli.js +2 -1
- package/lib/cypress.js +17 -0
- package/lib/exec/run.js +3 -0
- package/lib/util.js +1 -1
- package/package.json +4 -4
- package/react18/dist/index.d.ts +8 -8
- package/types/cypress-npm-api.d.ts +19 -0
- package/types/cypress.d.ts +254 -3
- package/vue/CHANGELOG.md +2 -0
- package/vue/package.json +1 -1
package/angular/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# [@cypress/angular-v2.0.2](https://github.com/cypress-io/cypress/compare/@cypress/angular-v2.0.1...@cypress/angular-v2.0.2) (2023-02-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* mount component in [data-cy-root] ([#25807](https://github.com/cypress-io/cypress/issues/25807)) ([104eef5](https://github.com/cypress-io/cypress/commit/104eef5dfb4b619a748e7ddd59534eadb1044ae7))
|
7
|
+
|
1
8
|
# [@cypress/angular-v2.0.1](https://github.com/cypress-io/cypress/compare/@cypress/angular-v2.0.0...@cypress/angular-v2.0.1) (2022-11-08)
|
2
9
|
|
3
10
|
|
package/angular/dist/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/// <reference types="cypress" />
|
2
2
|
|
3
3
|
import { Type } from '@angular/core';
|
4
|
-
import { TestModuleMetadata, ComponentFixture } from '@angular/core/testing';
|
4
|
+
import { TestModuleMetadata, ComponentFixture, TestComponentRenderer } from '@angular/core/testing';
|
5
5
|
|
6
6
|
/**
|
7
7
|
* Additional module configurations needed while mounting the component, like
|
@@ -72,6 +72,10 @@ declare type MountResponse<T> = {
|
|
72
72
|
*/
|
73
73
|
component: T;
|
74
74
|
};
|
75
|
+
declare class CypressTestComponentRenderer extends TestComponentRenderer {
|
76
|
+
insertRootElement(rootElId: string): void;
|
77
|
+
removeAllRootElements(): void;
|
78
|
+
}
|
75
79
|
/**
|
76
80
|
* Mounts an Angular component inside Cypress browser
|
77
81
|
*
|
@@ -121,4 +125,4 @@ declare function mount<T>(component: Type<T> | string, config?: MountConfig<T>):
|
|
121
125
|
*/
|
122
126
|
declare const createOutputSpy: <T>(alias: string) => any;
|
123
127
|
|
124
|
-
export { MountConfig, MountResponse, createOutputSpy, mount };
|
128
|
+
export { CypressTestComponentRenderer, MountConfig, MountResponse, createOutputSpy, mount };
|
package/angular/dist/index.js
CHANGED
@@ -9,7 +9,7 @@ import 'zone.js';
|
|
9
9
|
import 'zone.js/testing';
|
10
10
|
import { CommonModule } from '@angular/common';
|
11
11
|
import { Injectable, Component, EventEmitter, SimpleChange, ErrorHandler } from '@angular/core';
|
12
|
-
import { getTestBed, TestBed } from '@angular/core/testing';
|
12
|
+
import { getTestBed, TestComponentRenderer, TestBed } from '@angular/core/testing';
|
13
13
|
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
|
14
14
|
|
15
15
|
/******************************************************************************
|
@@ -46,6 +46,19 @@ function __decorate(decorators, target, key, desc) {
|
|
46
46
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
47
47
|
}
|
48
48
|
|
49
|
+
const ROOT_SELECTOR = '[data-cy-root]';
|
50
|
+
/**
|
51
|
+
* Gets the root element used to mount the component.
|
52
|
+
* @returns {HTMLElement} The root element
|
53
|
+
* @throws {Error} If the root element is not found
|
54
|
+
*/
|
55
|
+
const getContainerEl = () => {
|
56
|
+
const el = document.querySelector(ROOT_SELECTOR);
|
57
|
+
if (el) {
|
58
|
+
return el;
|
59
|
+
}
|
60
|
+
throw Error(`No element found that matches selector ${ROOT_SELECTOR}. Please add a root element with data-cy-root attribute to your "component-index.html" file so that Cypress can attach your component to the DOM.`);
|
61
|
+
};
|
49
62
|
/**
|
50
63
|
* Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
|
51
64
|
* @param optionalCallback Callback to be called before the next test runs
|
@@ -143,6 +156,20 @@ function bootstrapModule(component, config) {
|
|
143
156
|
}
|
144
157
|
return testModuleMetaData;
|
145
158
|
}
|
159
|
+
let CypressTestComponentRenderer = class CypressTestComponentRenderer extends TestComponentRenderer {
|
160
|
+
insertRootElement(rootElId) {
|
161
|
+
this.removeAllRootElements();
|
162
|
+
const rootElement = getContainerEl();
|
163
|
+
rootElement.setAttribute('id', rootElId);
|
164
|
+
document.body.appendChild(rootElement);
|
165
|
+
}
|
166
|
+
removeAllRootElements() {
|
167
|
+
getContainerEl().innerHTML = '';
|
168
|
+
}
|
169
|
+
};
|
170
|
+
CypressTestComponentRenderer = __decorate([
|
171
|
+
Injectable()
|
172
|
+
], CypressTestComponentRenderer);
|
146
173
|
/**
|
147
174
|
* Initializes the TestBed
|
148
175
|
*
|
@@ -153,6 +180,7 @@ function bootstrapModule(component, config) {
|
|
153
180
|
function initTestBed(component, config) {
|
154
181
|
const componentFixture = createComponentFixture(component);
|
155
182
|
getTestBed().configureTestingModule(Object.assign({}, bootstrapModule(componentFixture, config)));
|
183
|
+
getTestBed().overrideProvider(TestComponentRenderer, { useValue: new CypressTestComponentRenderer() });
|
156
184
|
return componentFixture;
|
157
185
|
}
|
158
186
|
let WrapperComponent = class WrapperComponent {
|
@@ -302,4 +330,4 @@ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDyn
|
|
302
330
|
});
|
303
331
|
setupHooks(cleanup);
|
304
332
|
|
305
|
-
export { createOutputSpy, mount };
|
333
|
+
export { CypressTestComponentRenderer, createOutputSpy, mount };
|
package/index.mjs
CHANGED
package/lib/cli.js
CHANGED
@@ -83,6 +83,7 @@ const parseVariableOpts = (fnArgs, args) => {
|
|
83
83
|
return util.parseOpts(opts);
|
84
84
|
};
|
85
85
|
const descriptions = {
|
86
|
+
autoCancelAfterFailures: 'overrides the project-level Cloud configuration to set the failed test threshold for auto cancellation or to disable auto cancellation when recording to the Cloud',
|
86
87
|
browser: 'runs Cypress in the browser with the given name. if a filesystem path is supplied, Cypress will attempt to use the browser at that path.',
|
87
88
|
cacheClear: 'delete all cached binaries',
|
88
89
|
cachePrune: 'deletes all cached binaries except for the version currently in use',
|
@@ -182,7 +183,7 @@ const createProgram = () => {
|
|
182
183
|
return program;
|
183
184
|
};
|
184
185
|
const addCypressRunCommand = program => {
|
185
|
-
return program.command('run').usage('[options]').description('Runs Cypress tests from the CLI without the GUI').option('-b, --browser <browser-name-or-path>', text('browser')).option('--ci-build-id <id>', text('ciBuildId')).option('--component', text('component')).option('-c, --config <config>', text('config')).option('-C, --config-file <config-file>', text('configFile')).option('--e2e', text('e2e')).option('-e, --env <env>', text('env')).option('--group <name>', text('group')).option('-k, --key <record-key>', text('key')).option('--headed', text('headed')).option('--headless', text('headless')).option('--no-exit', text('exit')).option('--parallel', text('parallel')).option('-p, --port <port>', text('port')).option('-P, --project <project-path>', text('project')).option('-q, --quiet', text('quiet')).option('--record [bool]', text('record'), coerceFalse).option('-r, --reporter <reporter>', text('reporter')).option('-o, --reporter-options <reporter-options>', text('reporterOptions')).option('-s, --spec <spec>', text('spec')).option('-t, --tag <tag>', text('tag')).option('--dev', text('dev'), coerceFalse);
|
186
|
+
return program.command('run').usage('[options]').description('Runs Cypress tests from the CLI without the GUI').option('--auto-cancel-after-failures <test-failure-count || false>', text('autoCancelAfterFailures')).option('-b, --browser <browser-name-or-path>', text('browser')).option('--ci-build-id <id>', text('ciBuildId')).option('--component', text('component')).option('-c, --config <config>', text('config')).option('-C, --config-file <config-file>', text('configFile')).option('--e2e', text('e2e')).option('-e, --env <env>', text('env')).option('--group <name>', text('group')).option('-k, --key <record-key>', text('key')).option('--headed', text('headed')).option('--headless', text('headless')).option('--no-exit', text('exit')).option('--parallel', text('parallel')).option('-p, --port <port>', text('port')).option('-P, --project <project-path>', text('project')).option('-q, --quiet', text('quiet')).option('--record [bool]', text('record'), coerceFalse).option('-r, --reporter <reporter>', text('reporter')).option('-o, --reporter-options <reporter-options>', text('reporterOptions')).option('-s, --spec <spec>', text('spec')).option('-t, --tag <tag>', text('tag')).option('--dev', text('dev'), coerceFalse);
|
186
187
|
};
|
187
188
|
const addCypressOpenCommand = program => {
|
188
189
|
return program.command('open').usage('[options]').description('Opens Cypress in the interactive GUI.').option('-b, --browser <browser-path>', text('browser')).option('--component', text('component')).option('-c, --config <config>', text('config')).option('-C, --config-file <config-file>', text('configFile')).option('-d, --detached [bool]', text('detached'), coerceFalse).option('--e2e', text('e2e')).option('-e, --env <env>', text('env')).option('--global', text('global')).option('-p, --port <port>', text('port')).option('-P, --project <project-path>', text('project')).option('--dev', text('dev'), coerceFalse);
|
package/lib/cypress.js
CHANGED
@@ -76,6 +76,23 @@ const cypressModuleApi = {
|
|
76
76
|
*/
|
77
77
|
defineConfig(config) {
|
78
78
|
return config;
|
79
|
+
},
|
80
|
+
/**
|
81
|
+
* Provides automatic code completion for Component Frameworks Definitions.
|
82
|
+
* While it's not strictly necessary for Cypress to parse your configuration, we
|
83
|
+
* recommend wrapping your Component Framework Definition object with `defineComponentFramework()`
|
84
|
+
* @example
|
85
|
+
* module.exports = defineComponentFramework({
|
86
|
+
* type: 'cypress-ct-solid-js'
|
87
|
+
* // ...
|
88
|
+
* })
|
89
|
+
*
|
90
|
+
* @see ../types/cypress-npm-api.d.ts
|
91
|
+
* @param {Cypress.ThirdPartyComponentFrameworkDefinition} config
|
92
|
+
* @returns {Cypress.ThirdPartyComponentFrameworkDefinition} the configuration passed in parameter
|
93
|
+
*/
|
94
|
+
defineComponentFramework(config) {
|
95
|
+
return config;
|
79
96
|
}
|
80
97
|
};
|
81
98
|
module.exports = cypressModuleApi;
|
package/lib/exec/run.js
CHANGED
@@ -49,6 +49,9 @@ const processRunOptions = (options = {}) => {
|
|
49
49
|
return throwInvalidOptionError(errors.invalidRunProjectPath);
|
50
50
|
}
|
51
51
|
const args = ['--run-project', options.project];
|
52
|
+
if (options.autoCancelAfterFailures || options.autoCancelAfterFailures === 0 || options.autoCancelAfterFailures === false) {
|
53
|
+
args.push('--auto-cancel-after-failures', options.autoCancelAfterFailures);
|
54
|
+
}
|
52
55
|
if (options.browser) {
|
53
56
|
args.push('--browser', options.browser);
|
54
57
|
}
|
package/lib/util.js
CHANGED
@@ -170,7 +170,7 @@ const dequote = str => {
|
|
170
170
|
return str;
|
171
171
|
};
|
172
172
|
const parseOpts = opts => {
|
173
|
-
opts = _.pick(opts, 'browser', 'cachePath', 'cacheList', 'cacheClear', 'cachePrune', 'ciBuildId', 'ct', 'component', 'config', 'configFile', 'cypressVersion', 'destination', 'detached', 'dev', 'e2e', 'exit', 'env', 'force', 'global', 'group', 'headed', 'headless', 'inspect', 'inspectBrk', 'key', 'path', 'parallel', 'port', 'project', 'quiet', 'reporter', 'reporterOptions', 'record', 'runProject', 'spec', 'tag');
|
173
|
+
opts = _.pick(opts, 'autoCancelAfterFailures', 'browser', 'cachePath', 'cacheList', 'cacheClear', 'cachePrune', 'ciBuildId', 'ct', 'component', 'config', 'configFile', 'cypressVersion', 'destination', 'detached', 'dev', 'e2e', 'exit', 'env', 'force', 'global', 'group', 'headed', 'headless', 'inspect', 'inspectBrk', 'key', 'path', 'parallel', 'port', 'project', 'quiet', 'reporter', 'reporterOptions', 'record', 'runProject', 'spec', 'tag');
|
174
174
|
if (opts.exit) {
|
175
175
|
opts = _.omit(opts, 'exit');
|
176
176
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "cypress",
|
3
|
-
"version": "12.
|
3
|
+
"version": "12.7.0",
|
4
4
|
"main": "index.js",
|
5
5
|
"scripts": {
|
6
6
|
"postinstall": "node index.js --exec install",
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"commander": "^5.1.0",
|
25
25
|
"common-tags": "^1.8.0",
|
26
26
|
"dayjs": "^1.10.4",
|
27
|
-
"debug": "^4.3.
|
27
|
+
"debug": "^4.3.4",
|
28
28
|
"enquirer": "^2.3.6",
|
29
29
|
"eventemitter2": "6.4.7",
|
30
30
|
"execa": "4.1.0",
|
@@ -118,8 +118,8 @@
|
|
118
118
|
},
|
119
119
|
"buildInfo": {
|
120
120
|
"commitBranch": "develop",
|
121
|
-
"commitSha": "
|
122
|
-
"commitDate": "2023-02-
|
121
|
+
"commitSha": "0cdd8d195f9660f1c6bb357b5fbe1ec32b16c54b",
|
122
|
+
"commitDate": "2023-02-24T22:33:04.000Z",
|
123
123
|
"stable": true
|
124
124
|
},
|
125
125
|
"description": "Cypress is a next generation front end testing tool built for the modern web",
|
package/react18/dist/index.d.ts
CHANGED
@@ -4,6 +4,13 @@
|
|
4
4
|
import React__default from 'react';
|
5
5
|
import * as react_dom from 'react-dom';
|
6
6
|
|
7
|
+
/**
|
8
|
+
* Gets the root element used to mount the component.
|
9
|
+
* @returns {HTMLElement} The root element
|
10
|
+
* @throws {Error} If the root element is not found
|
11
|
+
*/
|
12
|
+
declare const getContainerEl: () => HTMLElement;
|
13
|
+
|
7
14
|
interface UnmountArgs {
|
8
15
|
log: boolean;
|
9
16
|
boundComponentMessage?: string;
|
@@ -41,13 +48,6 @@ interface MountReturn {
|
|
41
48
|
unmount: (payload: UnmountArgs) => void;
|
42
49
|
}
|
43
50
|
|
44
|
-
/**
|
45
|
-
* Gets the root element used to mount the component.
|
46
|
-
* @returns {HTMLElement} The root element
|
47
|
-
* @throws {Error} If the root element is not found
|
48
|
-
*/
|
49
|
-
declare const getContainerEl: () => HTMLElement;
|
50
|
-
|
51
51
|
/**
|
52
52
|
* Mounts a React component into the DOM.
|
53
53
|
* @param {import('react').JSX.Element} jsx The React component to mount.
|
@@ -75,4 +75,4 @@ declare function mount(jsx: React__default.ReactNode, options?: MountOptions, re
|
|
75
75
|
*/
|
76
76
|
declare function unmount(options?: UnmountArgs): void;
|
77
77
|
|
78
|
-
export { getContainerEl, mount, unmount };
|
78
|
+
export { MountOptions, MountReturn, getContainerEl, mount, unmount };
|
@@ -95,6 +95,10 @@ declare namespace CypressCommandLine {
|
|
95
95
|
* Specify the specs to run
|
96
96
|
*/
|
97
97
|
spec: string
|
98
|
+
/**
|
99
|
+
* Specify the number of failures to cancel a run being recorded to the Cloud or false to disable auto-cancellation.
|
100
|
+
*/
|
101
|
+
autoCancelAfterFailures: number | false
|
98
102
|
}
|
99
103
|
|
100
104
|
/**
|
@@ -393,6 +397,21 @@ declare module 'cypress' {
|
|
393
397
|
* @returns {Cypress.ConfigOptions} the configuration passed in parameter
|
394
398
|
*/
|
395
399
|
defineConfig<ComponentDevServerOpts = any>(config: Cypress.ConfigOptions<ComponentDevServerOpts>): Cypress.ConfigOptions
|
400
|
+
|
401
|
+
/**
|
402
|
+
* Provides automatic code completion for Component Frameworks Definitions.
|
403
|
+
* While it's not strictly necessary for Cypress to parse your configuration, we
|
404
|
+
* recommend wrapping your Component Framework Definition object with `defineComponentFramework()`
|
405
|
+
* @example
|
406
|
+
* module.exports = defineComponentFramework({
|
407
|
+
* type: 'cypress-ct-solid-js'
|
408
|
+
* })
|
409
|
+
*
|
410
|
+
* @see ../types/cypress-npm-api.d.ts
|
411
|
+
* @param {Cypress.ThirdPartyComponentFrameworkDefinition} config
|
412
|
+
* @returns {Cypress.ThirdPartyComponentFrameworkDefinition} the configuration passed in parameter
|
413
|
+
*/
|
414
|
+
defineComponentFramework(config: Cypress.ThirdPartyComponentFrameworkDefinition): Cypress.ThirdPartyComponentFrameworkDefinition
|
396
415
|
}
|
397
416
|
|
398
417
|
// export Cypress NPM module interface
|
package/types/cypress.d.ts
CHANGED
@@ -53,6 +53,9 @@ declare namespace Cypress {
|
|
53
53
|
interface QueryFn<T extends keyof ChainableMethods> {
|
54
54
|
(this: Command, ...args: Parameters<ChainableMethods[T]>): (subject: any) => any
|
55
55
|
}
|
56
|
+
interface QueryFnWithOriginalFn<T extends keyof Chainable> {
|
57
|
+
(this: Command, originalFn: QueryFn<T>, ...args: Parameters<ChainableMethods[T]>): (subject: any) => any
|
58
|
+
}
|
56
59
|
interface ObjectLike {
|
57
60
|
[key: string]: any
|
58
61
|
}
|
@@ -648,6 +651,12 @@ declare namespace Cypress {
|
|
648
651
|
* @see https://on.cypress.io/api/custom-queries
|
649
652
|
*/
|
650
653
|
addQuery<T extends keyof Chainable>(name: T, fn: QueryFn<T>): void
|
654
|
+
|
655
|
+
/**
|
656
|
+
* Overwrite an existing Cypress query with a new implementation
|
657
|
+
* @see https://on.cypress.io/api/custom-queries
|
658
|
+
*/
|
659
|
+
overwriteQuery<T extends keyof Chainable>(name: T, fn: QueryFnWithOriginalFn<T>): void
|
651
660
|
}
|
652
661
|
|
653
662
|
/**
|
@@ -786,6 +795,12 @@ declare namespace Cypress {
|
|
786
795
|
*/
|
787
796
|
off: Actions
|
788
797
|
|
798
|
+
/**
|
799
|
+
* Used to include dependencies within the cy.origin() callback
|
800
|
+
* @see https://on.cypress.io/origin
|
801
|
+
*/
|
802
|
+
require: <T = any>(id: string) => T
|
803
|
+
|
789
804
|
/**
|
790
805
|
* Trigger action
|
791
806
|
* @private
|
@@ -793,7 +808,7 @@ declare namespace Cypress {
|
|
793
808
|
action: (action: string, ...args: any[]) => any[] | void
|
794
809
|
|
795
810
|
/**
|
796
|
-
* Load
|
811
|
+
* Load files
|
797
812
|
* @private
|
798
813
|
*/
|
799
814
|
onSpecWindow: (window: Window, specList: string[] | Array<() => Promise<void>>) => void
|
@@ -1801,9 +1816,21 @@ declare namespace Cypress {
|
|
1801
1816
|
*
|
1802
1817
|
* @see https://on.cypress.io/reload
|
1803
1818
|
* @example
|
1819
|
+
* cy.visit('http://localhost:3000/admin')
|
1804
1820
|
* cy.reload()
|
1805
1821
|
*/
|
1806
|
-
reload(
|
1822
|
+
reload(): Chainable<AUTWindow>
|
1823
|
+
/**
|
1824
|
+
* Reload the page.
|
1825
|
+
*
|
1826
|
+
* @see https://on.cypress.io/reload
|
1827
|
+
* @param {Partial<Loggable & Timeoutable>} options Pass in an options object to modify the default behavior of cy.reload()
|
1828
|
+
* @example
|
1829
|
+
* // Reload the page, do not log it in the command log and timeout after 15s
|
1830
|
+
* cy.visit('http://localhost:3000/admin')
|
1831
|
+
* cy.reload({log: false, timeout: 15000})
|
1832
|
+
*/
|
1833
|
+
reload(options: Partial<Loggable & Timeoutable>): Chainable<AUTWindow>
|
1807
1834
|
/**
|
1808
1835
|
* Reload the page without cache
|
1809
1836
|
*
|
@@ -1815,6 +1842,18 @@ declare namespace Cypress {
|
|
1815
1842
|
* cy.reload(true)
|
1816
1843
|
*/
|
1817
1844
|
reload(forceReload: boolean): Chainable<AUTWindow>
|
1845
|
+
/**
|
1846
|
+
* Reload the page without cache and with log and timeout options
|
1847
|
+
*
|
1848
|
+
* @see https://on.cypress.io/reload
|
1849
|
+
* @param {Boolean} forceReload Whether to reload the current page without using the cache. true forces the reload without cache.
|
1850
|
+
* @param {Partial<Loggable & Timeoutable>} options Pass in an options object to modify the default behavior of cy.reload()
|
1851
|
+
* @example
|
1852
|
+
* // Reload the page without using the cache, do not log it in the command log and timeout after 15s
|
1853
|
+
* cy.visit('http://localhost:3000/admin')
|
1854
|
+
* cy.reload(true, {log: false, timeout: 15000})
|
1855
|
+
*/
|
1856
|
+
reload(forceReload: boolean, options: Partial<Loggable & Timeoutable>): Chainable<AUTWindow>
|
1818
1857
|
|
1819
1858
|
/**
|
1820
1859
|
* Make an HTTP GET request.
|
@@ -3126,7 +3165,7 @@ declare namespace Cypress {
|
|
3126
3165
|
*/
|
3127
3166
|
experimentalRunAllSpecs?: boolean
|
3128
3167
|
/**
|
3129
|
-
* Enables support for require
|
3168
|
+
* Enables support for `Cypress.require()` for including dependencies within the `cy.origin()` callback.
|
3130
3169
|
* @default false
|
3131
3170
|
*/
|
3132
3171
|
experimentalOriginDependencies?: boolean
|
@@ -3244,6 +3283,179 @@ declare namespace Cypress {
|
|
3244
3283
|
|
3245
3284
|
type PickConfigOpt<T> = T extends keyof DefineDevServerConfig ? DefineDevServerConfig[T] : any
|
3246
3285
|
|
3286
|
+
interface DependencyToInstall {
|
3287
|
+
dependency: CypressComponentDependency
|
3288
|
+
satisfied: boolean
|
3289
|
+
loc: string | null
|
3290
|
+
detectedVersion: string | null
|
3291
|
+
}
|
3292
|
+
|
3293
|
+
interface CypressComponentDependency {
|
3294
|
+
/**
|
3295
|
+
* Unique idenitifer.
|
3296
|
+
* @example 'reactscripts'
|
3297
|
+
*/
|
3298
|
+
type: string
|
3299
|
+
|
3300
|
+
/**
|
3301
|
+
* Name to display in the user interface.
|
3302
|
+
* @example "React Scripts"
|
3303
|
+
*/
|
3304
|
+
name: string
|
3305
|
+
|
3306
|
+
/**
|
3307
|
+
* Package name on npm.
|
3308
|
+
* @example react-scripts
|
3309
|
+
*/
|
3310
|
+
package: string
|
3311
|
+
|
3312
|
+
/**
|
3313
|
+
* Code to run when installing. Version is optional.
|
3314
|
+
*
|
3315
|
+
* Should be <package_name>@<version>.
|
3316
|
+
*
|
3317
|
+
* @example `react`
|
3318
|
+
* @example `react@18`
|
3319
|
+
* @example `react-scripts`
|
3320
|
+
*/
|
3321
|
+
installer: string
|
3322
|
+
|
3323
|
+
/**
|
3324
|
+
* Description shown in UI. It is recommended to use the same one the package uses on npm.
|
3325
|
+
* @example 'Create React apps with no build configuration'
|
3326
|
+
*/
|
3327
|
+
description: string
|
3328
|
+
|
3329
|
+
/**
|
3330
|
+
* Minimum version supported. Should conform to Semantic Versioning as used in `package.json`.
|
3331
|
+
* @see https://docs.npmjs.com/cli/v9/configuring-npm/package-json#dependencies
|
3332
|
+
* @example '^=4.0.0 || ^=5.0.0'
|
3333
|
+
* @example '^2.0.0'
|
3334
|
+
*/
|
3335
|
+
minVersion: string
|
3336
|
+
}
|
3337
|
+
|
3338
|
+
interface ResolvedComponentFrameworkDefinition {
|
3339
|
+
/**
|
3340
|
+
* A semantic, unique identifier.
|
3341
|
+
* Must begin with `cypress-ct-` or `@org/cypress-ct-` for third party implementations.
|
3342
|
+
* @example 'reactscripts'
|
3343
|
+
* @example 'nextjs'
|
3344
|
+
* @example 'cypress-ct-solid-js'
|
3345
|
+
*/
|
3346
|
+
type: string
|
3347
|
+
|
3348
|
+
/**
|
3349
|
+
* Used as the flag for `getPreset` for meta framworks, such as finding the webpack config for CRA, Angular, etc.
|
3350
|
+
* It is also the name of the string added to `cypress.config`
|
3351
|
+
*
|
3352
|
+
* @example
|
3353
|
+
* export default {
|
3354
|
+
* component: {
|
3355
|
+
* devServer: {
|
3356
|
+
* framework: 'create-react-app' // can be 'next', 'create-react-app', etc etc.
|
3357
|
+
* }
|
3358
|
+
* }
|
3359
|
+
* }
|
3360
|
+
*/
|
3361
|
+
configFramework: string
|
3362
|
+
|
3363
|
+
/**
|
3364
|
+
* Library (React, Vue) or template (aka "meta framework") (CRA, Next.js, Angular)
|
3365
|
+
*/
|
3366
|
+
category: 'library' | 'template'
|
3367
|
+
|
3368
|
+
/**
|
3369
|
+
* Name displayed in Launchpad when doing initial setup.
|
3370
|
+
* @example 'Solid.js'
|
3371
|
+
* @example 'Create React App'
|
3372
|
+
*/
|
3373
|
+
name: string
|
3374
|
+
|
3375
|
+
/**
|
3376
|
+
* Supported bundlers.
|
3377
|
+
*/
|
3378
|
+
supportedBundlers: Array<'webpack' | 'vite'>
|
3379
|
+
|
3380
|
+
/**
|
3381
|
+
* Used to attempt to automatically select the correct framework/bundler from the dropdown.
|
3382
|
+
*
|
3383
|
+
* @example
|
3384
|
+
* const SOLID_DETECTOR: Dependency = {
|
3385
|
+
* type: 'solid',
|
3386
|
+
* name: 'Solid.js',
|
3387
|
+
* package: 'solid-js',
|
3388
|
+
* installer: 'solid-js',
|
3389
|
+
* description: 'Solid is a declarative JavaScript library for creating user interfaces',
|
3390
|
+
* minVersion: '^1.0.0',
|
3391
|
+
* }
|
3392
|
+
*/
|
3393
|
+
detectors: CypressComponentDependency[]
|
3394
|
+
|
3395
|
+
/**
|
3396
|
+
* Array of required dependencies. This could be the bundler and JavaScript library.
|
3397
|
+
*/
|
3398
|
+
dependencies: (bundler: 'webpack' | 'vite', projectPath: string) => Promise<DependencyToInstall[]>
|
3399
|
+
|
3400
|
+
/**
|
3401
|
+
* This is used interally by Cypress for the "Create From Component" feature.
|
3402
|
+
*/
|
3403
|
+
codeGenFramework?: 'react' | 'vue' | 'svelte' | 'angular'
|
3404
|
+
|
3405
|
+
/**
|
3406
|
+
* This is used interally by Cypress for the "Create From Component" feature.
|
3407
|
+
* @example '*.{js,jsx,tsx}'
|
3408
|
+
*/
|
3409
|
+
glob?: string
|
3410
|
+
|
3411
|
+
/**
|
3412
|
+
* This is the path to get mount, eg `import { mount } from <mount_module>,
|
3413
|
+
* @example: `cypress-ct-solidjs/src/mount`
|
3414
|
+
*/
|
3415
|
+
mountModule: (projectPath: string) => Promise<string>
|
3416
|
+
|
3417
|
+
/**
|
3418
|
+
* Support status. Internally alpha | beta | full.
|
3419
|
+
* Community integrations are "community".
|
3420
|
+
*/
|
3421
|
+
supportStatus: 'alpha' | 'beta' | 'full' | 'community'
|
3422
|
+
|
3423
|
+
/**
|
3424
|
+
* Function returning string for used for the component-index.html file.
|
3425
|
+
* Cypress provides a default if one isn't specified for third party integrations.
|
3426
|
+
*/
|
3427
|
+
componentIndexHtml?: () => string
|
3428
|
+
|
3429
|
+
/**
|
3430
|
+
* Used for the Create From Comopnent feature.
|
3431
|
+
* This is currently not supported for third party frameworks.
|
3432
|
+
*/
|
3433
|
+
specPattern?: '**/*.cy.ts'
|
3434
|
+
}
|
3435
|
+
|
3436
|
+
type ComponentFrameworkDefinition = Omit<ResolvedComponentFrameworkDefinition, 'dependencies'> & {
|
3437
|
+
dependencies: (bundler: 'webpack' | 'vite') => CypressComponentDependency[]
|
3438
|
+
}
|
3439
|
+
|
3440
|
+
/**
|
3441
|
+
* Certain properties are not supported for third party frameworks right now,
|
3442
|
+
* such as ones related to the "Create From" feature. This is a subset of
|
3443
|
+
* properties that are exposed for public usage.
|
3444
|
+
*/
|
3445
|
+
|
3446
|
+
type ThirdPartyComponentFrameworkDefinition = Pick<ComponentFrameworkDefinition, 'type' | 'name' | 'supportedBundlers' | 'detectors' | 'dependencies'> & {
|
3447
|
+
/**
|
3448
|
+
* @example `cypress-ct-${string} for third parties. Any string is valid internally.
|
3449
|
+
*/
|
3450
|
+
type: string
|
3451
|
+
|
3452
|
+
/**
|
3453
|
+
* Raw SVG icon that will be displayed in the Project Setup Wizard. Used for third parties that
|
3454
|
+
* want to render a custom icon.
|
3455
|
+
*/
|
3456
|
+
icon?: string
|
3457
|
+
}
|
3458
|
+
|
3247
3459
|
interface AngularDevServerProjectConfig {
|
3248
3460
|
root: string
|
3249
3461
|
sourceRoot: string
|
@@ -3530,12 +3742,49 @@ declare namespace Cypress {
|
|
3530
3742
|
action: 'select' | 'drag-drop'
|
3531
3743
|
}
|
3532
3744
|
|
3745
|
+
/**
|
3746
|
+
* Options that control how the `cy.setCookie` command
|
3747
|
+
* sets the cookie in the browser.
|
3748
|
+
* @see https://on.cypress.io/setcookie#Arguments
|
3749
|
+
*/
|
3533
3750
|
interface SetCookieOptions extends Loggable, Timeoutable {
|
3751
|
+
/**
|
3752
|
+
* The path of the cookie.
|
3753
|
+
* @default "/"
|
3754
|
+
*/
|
3534
3755
|
path: string
|
3756
|
+
/**
|
3757
|
+
* Represents the domain the cookie belongs to (e.g. "docs.cypress.io", "github.com").
|
3758
|
+
* @default location.hostname
|
3759
|
+
*/
|
3535
3760
|
domain: string
|
3761
|
+
/**
|
3762
|
+
* Whether a cookie's scope is limited to secure channels, such as HTTPS.
|
3763
|
+
* @default false
|
3764
|
+
*/
|
3536
3765
|
secure: boolean
|
3766
|
+
/**
|
3767
|
+
* Whether or not the cookie is HttpOnly, meaning the cookie is inaccessible to client-side scripts.
|
3768
|
+
* The Cypress cookie API has access to HttpOnly cookies.
|
3769
|
+
* @default false
|
3770
|
+
*/
|
3537
3771
|
httpOnly: boolean
|
3772
|
+
/**
|
3773
|
+
* Whether or not the cookie is a host-only cookie, meaning the request's host must exactly match the domain of the cookie.
|
3774
|
+
* @default false
|
3775
|
+
*/
|
3776
|
+
hostOnly: boolean
|
3777
|
+
/**
|
3778
|
+
* The cookie's expiry time, specified in seconds since Unix Epoch.
|
3779
|
+
* The default is expiry is 20 years in the future from current time.
|
3780
|
+
*/
|
3538
3781
|
expiry: number
|
3782
|
+
/**
|
3783
|
+
* The cookie's SameSite value. If set, should be one of `lax`, `strict`, or `no_restriction`.
|
3784
|
+
* `no_restriction` is the equivalent of `SameSite=None`. Pass `undefined` to use the browser's default.
|
3785
|
+
* Note: `no_restriction` can only be used if the secure flag is set to `true`.
|
3786
|
+
* @default undefined
|
3787
|
+
*/
|
3539
3788
|
sameSite: SameSiteStatus
|
3540
3789
|
}
|
3541
3790
|
|
@@ -5776,6 +6025,7 @@ declare namespace Cypress {
|
|
5776
6025
|
specPattern?: string[]
|
5777
6026
|
system: SystemDetails
|
5778
6027
|
tag?: string
|
6028
|
+
autoCancelAfterFailures?: number | false
|
5779
6029
|
}
|
5780
6030
|
|
5781
6031
|
interface DevServerConfig {
|
@@ -6064,6 +6314,7 @@ declare namespace Cypress {
|
|
6064
6314
|
value: string
|
6065
6315
|
path: string
|
6066
6316
|
domain: string
|
6317
|
+
hostOnly?: boolean
|
6067
6318
|
httpOnly: boolean
|
6068
6319
|
secure: boolean
|
6069
6320
|
expiry?: number
|
package/vue/CHANGELOG.md
CHANGED