cypress 10.10.0 → 11.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/angular/CHANGELOG.md +27 -0
- package/angular/dist/index.d.ts +124 -1
- package/angular/dist/index.js +59 -59
- package/lib/cli.js +15 -1
- package/lib/tasks/download.js +3 -7
- package/lib/util.js +2 -2
- package/mount-utils/CHANGELOG.md +7 -63
- package/mount-utils/README.md +5 -23
- package/mount-utils/dist/index.d.ts +25 -39
- package/mount-utils/dist/index.js +33 -112
- package/mount-utils/package.json +1 -0
- package/package.json +5 -4
- package/react/CHANGELOG.md +12 -55
- package/react/README.md +2 -22
- package/react/dist/cypress-react.cjs.js +92 -219
- package/react/dist/cypress-react.esm-bundler.js +92 -220
- package/react/dist/index.d.ts +111 -4
- package/react18/CHANGELOG.md +6 -106
- package/react18/dist/cypress-react.cjs.js +117 -180
- package/react18/dist/cypress-react.esm-bundler.js +103 -167
- package/react18/dist/index.d.ts +78 -6
- package/react18/package.json +1 -0
- package/svelte/CHANGELOG.md +20 -0
- package/svelte/dist/cypress-svelte.cjs.js +19 -114
- package/svelte/dist/cypress-svelte.esm-bundler.js +19 -114
- package/svelte/dist/index.d.ts +201 -1
- package/types/cypress-npm-api.d.ts +1 -1
- package/types/cypress.d.ts +43 -21
- package/vue/CHANGELOG.md +13 -101
- package/vue/README.md +4 -8
- package/vue/dist/cypress-vue.cjs.js +70 -153
- package/vue/dist/cypress-vue.esm-bundler.js +70 -153
- package/vue/dist/index.d.ts +1352 -104
- package/vue/package.json +1 -1
- package/vue2/CHANGELOG.md +15 -50
- package/vue2/README.md +3 -7
- package/vue2/dist/cypress-vue2.cjs.js +87 -211
- package/vue2/dist/cypress-vue2.esm-bundler.js +86 -210
- package/vue2/dist/index.d.ts +341 -172
- package/vue2/package.json +1 -3
- package/angular/dist/mount.d.ts +0 -112
- package/react/dist/createMount.d.ts +0 -31
- package/react/dist/getDisplayName.d.ts +0 -8
- package/react/dist/mount.d.ts +0 -8
- package/react/dist/mountHook.d.ts +0 -12
- package/react/dist/types.d.ts +0 -45
- package/svelte/dist/mount.d.ts +0 -30
- package/vue/dist/@vue/test-utils/baseWrapper.d.ts +0 -63
- package/vue/dist/@vue/test-utils/components/RouterLinkStub.d.ts +0 -21
- package/vue/dist/@vue/test-utils/config.d.ts +0 -30
- package/vue/dist/@vue/test-utils/constants/dom-events.d.ts +0 -900
- package/vue/dist/@vue/test-utils/createDomEvent.d.ts +0 -9
- package/vue/dist/@vue/test-utils/domWrapper.d.ts +0 -18
- package/vue/dist/@vue/test-utils/emit.d.ts +0 -5
- package/vue/dist/@vue/test-utils/errorWrapper.d.ts +0 -1
- package/vue/dist/@vue/test-utils/index.d.ts +0 -11
- package/vue/dist/@vue/test-utils/interfaces/wrapperLike.d.ts +0 -56
- package/vue/dist/@vue/test-utils/mount.d.ts +0 -35
- package/vue/dist/@vue/test-utils/stubs.d.ts +0 -22
- package/vue/dist/@vue/test-utils/types.d.ts +0 -125
- package/vue/dist/@vue/test-utils/utils/autoUnmount.d.ts +0 -5
- package/vue/dist/@vue/test-utils/utils/compileSlots.d.ts +0 -2
- package/vue/dist/@vue/test-utils/utils/componentName.d.ts +0 -4
- package/vue/dist/@vue/test-utils/utils/find.d.ts +0 -10
- package/vue/dist/@vue/test-utils/utils/flushPromises.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/getRootNodes.d.ts +0 -2
- package/vue/dist/@vue/test-utils/utils/isElement.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/isElementVisible.d.ts +0 -6
- package/vue/dist/@vue/test-utils/utils/matchName.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/stringifyNode.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/vueCompatSupport.d.ts +0 -8
- package/vue/dist/@vue/test-utils/utils/vueShared.d.ts +0 -3
- package/vue/dist/@vue/test-utils/utils.d.ts +0 -13
- package/vue/dist/@vue/test-utils/vueWrapper.d.ts +0 -35
- package/vue/dist/@vue/test-utils/wrapperFactory.d.ts +0 -14
@@ -1,4 +1,9 @@
|
|
1
1
|
export const ROOT_SELECTOR = '[data-cy-root]';
|
2
|
+
/**
|
3
|
+
* Gets the root element used to mount the component.
|
4
|
+
* @returns {HTMLElement} The root element
|
5
|
+
* @throws {Error} If the root element is not found
|
6
|
+
*/
|
2
7
|
export const getContainerEl = () => {
|
3
8
|
const el = document.querySelector(ROOT_SELECTOR);
|
4
9
|
if (el) {
|
@@ -6,122 +11,19 @@ export const getContainerEl = () => {
|
|
6
11
|
}
|
7
12
|
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.`);
|
8
13
|
};
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
*/
|
14
|
-
export function cleanupStyles() {
|
15
|
-
const styles = document.body.querySelectorAll('[data-cy=injected-style-tag]');
|
16
|
-
styles.forEach((styleElement) => {
|
17
|
-
if (styleElement.parentElement) {
|
18
|
-
styleElement.parentElement.removeChild(styleElement);
|
14
|
+
export function checkForRemovedStyleOptions(mountingOptions) {
|
15
|
+
for (const key of ['cssFile', 'cssFiles', 'style', 'styles', 'stylesheet', 'stylesheets']) {
|
16
|
+
if (mountingOptions[key]) {
|
17
|
+
Cypress.utils.throwErrByPath('mount.removed_style_mounting_options', key);
|
19
18
|
}
|
20
|
-
}
|
21
|
-
const links = document.body.querySelectorAll('[data-cy=injected-stylesheet]');
|
22
|
-
links.forEach((link) => {
|
23
|
-
if (link.parentElement) {
|
24
|
-
link.parentElement.removeChild(link);
|
25
|
-
}
|
26
|
-
});
|
27
|
-
}
|
28
|
-
/**
|
29
|
-
* Insert links to external style resources.
|
30
|
-
*/
|
31
|
-
function insertStylesheets(stylesheets, document, el) {
|
32
|
-
stylesheets.forEach((href) => {
|
33
|
-
const link = document.createElement('link');
|
34
|
-
link.type = 'text/css';
|
35
|
-
link.rel = 'stylesheet';
|
36
|
-
link.href = href;
|
37
|
-
link.dataset.cy = 'injected-stylesheet';
|
38
|
-
document.body.insertBefore(link, el);
|
39
|
-
});
|
40
|
-
}
|
41
|
-
/**
|
42
|
-
* Inserts a single stylesheet element
|
43
|
-
*/
|
44
|
-
function insertStyles(styles, document, el) {
|
45
|
-
styles.forEach((style) => {
|
46
|
-
const styleElement = document.createElement('style');
|
47
|
-
styleElement.dataset.cy = 'injected-style-tag';
|
48
|
-
styleElement.appendChild(document.createTextNode(style));
|
49
|
-
document.body.insertBefore(styleElement, el);
|
50
|
-
});
|
51
|
-
}
|
52
|
-
function insertSingleCssFile(cssFilename, document, el, log) {
|
53
|
-
return cy.readFile(cssFilename, { log }).then((css) => {
|
54
|
-
const style = document.createElement('style');
|
55
|
-
style.appendChild(document.createTextNode(css));
|
56
|
-
document.body.insertBefore(style, el);
|
57
|
-
});
|
58
|
-
}
|
59
|
-
/**
|
60
|
-
* Reads the given CSS file from local file system
|
61
|
-
* and adds the loaded style text as an element.
|
62
|
-
*/
|
63
|
-
function insertLocalCssFiles(cssFilenames, document, el, log) {
|
64
|
-
return Cypress.Promise.mapSeries(cssFilenames, (cssFilename) => {
|
65
|
-
return insertSingleCssFile(cssFilename, document, el, log);
|
66
|
-
});
|
19
|
+
}
|
67
20
|
}
|
68
21
|
/**
|
69
|
-
*
|
70
|
-
*
|
22
|
+
* Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
|
23
|
+
* @param optionalCallback Callback to be called before the next test runs
|
71
24
|
*/
|
72
|
-
export const injectStylesBeforeElement = (options, document, el) => {
|
73
|
-
if (!el)
|
74
|
-
return;
|
75
|
-
// first insert all stylesheets as Link elements
|
76
|
-
let stylesheets = [];
|
77
|
-
if (typeof options.stylesheet === 'string') {
|
78
|
-
stylesheets.push(options.stylesheet);
|
79
|
-
}
|
80
|
-
else if (Array.isArray(options.stylesheet)) {
|
81
|
-
stylesheets = stylesheets.concat(options.stylesheet);
|
82
|
-
}
|
83
|
-
if (typeof options.stylesheets === 'string') {
|
84
|
-
options.stylesheets = [options.stylesheets];
|
85
|
-
}
|
86
|
-
if (options.stylesheets) {
|
87
|
-
stylesheets = stylesheets.concat(options.stylesheets);
|
88
|
-
}
|
89
|
-
insertStylesheets(stylesheets, document, el);
|
90
|
-
// insert any styles as <style>...</style> elements
|
91
|
-
let styles = [];
|
92
|
-
if (typeof options.style === 'string') {
|
93
|
-
styles.push(options.style);
|
94
|
-
}
|
95
|
-
else if (Array.isArray(options.style)) {
|
96
|
-
styles = styles.concat(options.style);
|
97
|
-
}
|
98
|
-
if (typeof options.styles === 'string') {
|
99
|
-
styles.push(options.styles);
|
100
|
-
}
|
101
|
-
else if (Array.isArray(options.styles)) {
|
102
|
-
styles = styles.concat(options.styles);
|
103
|
-
}
|
104
|
-
insertStyles(styles, document, el);
|
105
|
-
// now load any css files by path and add their content
|
106
|
-
// as <style>...</style> elements
|
107
|
-
let cssFiles = [];
|
108
|
-
if (typeof options.cssFile === 'string') {
|
109
|
-
cssFiles.push(options.cssFile);
|
110
|
-
}
|
111
|
-
else if (Array.isArray(options.cssFile)) {
|
112
|
-
cssFiles = cssFiles.concat(options.cssFile);
|
113
|
-
}
|
114
|
-
if (typeof options.cssFiles === 'string') {
|
115
|
-
cssFiles.push(options.cssFiles);
|
116
|
-
}
|
117
|
-
else if (Array.isArray(options.cssFiles)) {
|
118
|
-
cssFiles = cssFiles.concat(options.cssFiles);
|
119
|
-
}
|
120
|
-
return insertLocalCssFiles(cssFiles, document, el, options.log);
|
121
|
-
};
|
122
25
|
export function setupHooks(optionalCallback) {
|
123
|
-
//
|
124
|
-
// file that is imported by e2e and component support files by default. We don't want CT side effects to run when e2e
|
26
|
+
// We don't want CT side effects to run when e2e
|
125
27
|
// testing so we early return.
|
126
28
|
// System test to verify CT side effects do not pollute e2e: system-tests/test/e2e_with_mount_import_spec.ts
|
127
29
|
if (Cypress.testingType !== 'component') {
|
@@ -136,6 +38,25 @@ export function setupHooks(optionalCallback) {
|
|
136
38
|
// @ts-ignore
|
137
39
|
Cypress.on('test:before:run', () => {
|
138
40
|
optionalCallback === null || optionalCallback === void 0 ? void 0 : optionalCallback();
|
139
|
-
cleanupStyles();
|
140
41
|
});
|
141
42
|
}
|
43
|
+
/**
|
44
|
+
* Remove any style or extra link elements from the iframe placeholder
|
45
|
+
* left from any previous test
|
46
|
+
*
|
47
|
+
* Removed as of Cypress 11.0.0
|
48
|
+
* @see https://on.cypress.io/migration-11-0-0-component-testing-updates
|
49
|
+
*/
|
50
|
+
export function cleanupStyles() {
|
51
|
+
Cypress.utils.throwErrByPath('mount.cleanup_styles');
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* Injects custom style text or CSS file or 3rd party style resources
|
55
|
+
* into the given document.
|
56
|
+
*
|
57
|
+
* Removed as of Cypress 11.0.0.
|
58
|
+
* @see https://on.cypress.io/migration-11-0-0-component-testing-updates
|
59
|
+
*/
|
60
|
+
export const injectStylesBeforeElement = (options, document, el) => {
|
61
|
+
Cypress.utils.throwErrByPath('mount.inject_styles_before_element');
|
62
|
+
};
|
package/mount-utils/package.json
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "cypress",
|
3
|
-
"version": "
|
3
|
+
"version": "11.0.0",
|
4
4
|
"main": "index.js",
|
5
5
|
"scripts": {
|
6
6
|
"postinstall": "node index.js --exec install",
|
@@ -118,11 +118,11 @@
|
|
118
118
|
},
|
119
119
|
"buildInfo": {
|
120
120
|
"commitBranch": "develop",
|
121
|
-
"commitSha": "
|
122
|
-
"commitDate": "2022-
|
121
|
+
"commitSha": "2513beac307e95267ab736a93a39cd1cd1280506",
|
122
|
+
"commitDate": "2022-11-08T20:29:47.000Z",
|
123
123
|
"stable": true
|
124
124
|
},
|
125
|
-
"description": "Cypress
|
125
|
+
"description": "Cypress is a next generation front end testing tool built for the modern web",
|
126
126
|
"homepage": "https://github.com/cypress-io/cypress",
|
127
127
|
"license": "MIT",
|
128
128
|
"bugs": {
|
@@ -140,6 +140,7 @@
|
|
140
140
|
"e2e",
|
141
141
|
"end-to-end",
|
142
142
|
"integration",
|
143
|
+
"component",
|
143
144
|
"mocks",
|
144
145
|
"runner",
|
145
146
|
"spies",
|
package/react/CHANGELOG.md
CHANGED
@@ -1,72 +1,29 @@
|
|
1
|
-
# [@cypress/react-
|
1
|
+
# [@cypress/react-v7.0.1](https://github.com/cypress-io/cypress/compare/@cypress/react-v7.0.0...@cypress/react-v7.0.1) (2022-11-08)
|
2
2
|
|
3
3
|
|
4
|
-
###
|
5
|
-
|
6
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
7
|
-
|
8
|
-
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-10-06)
|
9
|
-
|
10
|
-
|
11
|
-
### Features
|
12
|
-
|
13
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
14
|
-
|
15
|
-
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-10-04)
|
16
|
-
|
17
|
-
|
18
|
-
### Features
|
19
|
-
|
20
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
21
|
-
|
22
|
-
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-10-04)
|
23
|
-
|
24
|
-
|
25
|
-
### Features
|
26
|
-
|
27
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
28
|
-
|
29
|
-
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-10-03)
|
30
|
-
|
31
|
-
|
32
|
-
### Features
|
33
|
-
|
34
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
35
|
-
|
36
|
-
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-10-01)
|
37
|
-
|
38
|
-
|
39
|
-
### Features
|
40
|
-
|
41
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
42
|
-
|
43
|
-
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-09-30)
|
44
|
-
|
45
|
-
|
46
|
-
### Features
|
47
|
-
|
48
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
4
|
+
### Bug Fixes
|
49
5
|
|
50
|
-
|
6
|
+
* make component derived info not throw ([#24571](https://github.com/cypress-io/cypress/issues/24571)) ([838dd4f](https://github.com/cypress-io/cypress/commit/838dd4fa2e0ec56633d0af2faf10a47d190b5594))
|
51
7
|
|
8
|
+
# [@cypress/react-v7.0.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.2.1...@cypress/react-v7.0.0) (2022-11-07)
|
52
9
|
|
53
|
-
### Features
|
54
10
|
|
55
|
-
|
11
|
+
### Bug Fixes
|
56
12
|
|
57
|
-
|
13
|
+
* remove last mounted component upon subsequent mount calls ([#24470](https://github.com/cypress-io/cypress/issues/24470)) ([f39eb1c](https://github.com/cypress-io/cypress/commit/f39eb1c19e0923bda7ae263168fc6448da942d54))
|
14
|
+
* remove some CT functions and props ([#24419](https://github.com/cypress-io/cypress/issues/24419)) ([294985f](https://github.com/cypress-io/cypress/commit/294985f8b3e0fa00ed66d25f88c8814603766074))
|
58
15
|
|
59
16
|
|
60
|
-
###
|
17
|
+
### BREAKING CHANGES
|
61
18
|
|
62
|
-
*
|
19
|
+
* remove last mounted component upon subsequent mount calls of mount
|
63
20
|
|
64
|
-
# [@cypress/react-v6.2.
|
21
|
+
# [@cypress/react-v6.2.1](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.2.0...@cypress/react-v6.2.1) (2022-11-01)
|
65
22
|
|
66
23
|
|
67
|
-
###
|
24
|
+
### Bug Fixes
|
68
25
|
|
69
|
-
*
|
26
|
+
* Hovering over mount in command log does not show component in AUT ([#24346](https://github.com/cypress-io/cypress/issues/24346)) ([355d210](https://github.com/cypress-io/cypress/commit/355d2101d38ea4d1e93b9c571cf77babab2bbbfc))
|
70
27
|
|
71
28
|
# [@cypress/react-v6.2.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v6.1.1...@cypress/react-v6.2.0) (2022-08-30)
|
72
29
|
|
package/react/README.md
CHANGED
@@ -31,8 +31,6 @@ For more information, please check the official docs for [running Cypress](https
|
|
31
31
|
|
32
32
|
- `mount` is the most important function, allows to mount a given React component as a mini web application and interact with it using Cypress commands
|
33
33
|
- `createMount` factory function that creates new `mount` function with default options
|
34
|
-
- `unmount` removes previously mounted component, mostly useful to test how the component cleans up after itself
|
35
|
-
- `mountHook` mounts a given React Hook in a test component for full testing, see `hooks` example
|
36
34
|
|
37
35
|
## Examples
|
38
36
|
|
@@ -65,20 +63,7 @@ it('looks right', () => {
|
|
65
63
|
})
|
66
64
|
```
|
67
65
|
|
68
|
-
|
69
|
-
|
70
|
-
You can pass additional styles, css files and external stylesheets to load, see [docs/styles.md](./docs/styles.md) for the full list of options.
|
71
|
-
|
72
|
-
```js
|
73
|
-
const todo = {
|
74
|
-
id: '123',
|
75
|
-
title: 'Write more tests',
|
76
|
-
}
|
77
|
-
mount(<Todo todo={todo} />, {
|
78
|
-
stylesheets: [
|
79
|
-
'https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.css',
|
80
|
-
],
|
81
|
-
})
|
66
|
+
See [docs/styles.md](./docs/styles.md) for full list of options.
|
82
67
|
```
|
83
68
|
|
84
69
|
You may also specify the `ReactDOM` package to use. This can be useful in complex monorepo setups that have different versions of React and React DOM installed. If you see an error relating to [mismatching versions of React or React DOM](https://reactjs.org/warnings/invalid-hook-call-warning.html#mismatching-versions-of-react-and-react-dom), this may be the solution. You can do this using the `ReactDom` option:
|
@@ -87,12 +72,7 @@ You may also specify the `ReactDOM` package to use. This can be useful in comple
|
|
87
72
|
// if you have multiple versions of ReactDom in your monorepo
|
88
73
|
import ReactDom from 'react-dom'
|
89
74
|
|
90
|
-
mount(<Todo todo={todo} />, {
|
91
|
-
stylesheets: [
|
92
|
-
'https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.css',
|
93
|
-
],
|
94
|
-
ReactDom
|
95
|
-
})
|
75
|
+
mount(<Todo todo={todo} />, { reactDom: ReactDom })
|
96
76
|
```
|
97
77
|
|
98
78
|
## Compatibility
|