cypress 13.16.1 → 14.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. package/angular/README.md +5 -0
  2. package/angular/angular/README.md +5 -0
  3. package/angular/angular/dist/index.d.ts +11 -2
  4. package/angular/angular/dist/index.js +944 -4
  5. package/angular/angular/package.json +16 -9
  6. package/angular/dist/index.d.ts +11 -2
  7. package/angular/dist/index.js +944 -4
  8. package/angular/package.json +16 -9
  9. package/lib/cli.js +1 -30
  10. package/lib/exec/spawn.js +17 -7
  11. package/mount-utils/dist/index.d.ts +0 -28
  12. package/mount-utils/dist/index.js +0 -27
  13. package/mount-utils/mount-utils/dist/index.d.ts +0 -28
  14. package/mount-utils/mount-utils/dist/index.js +0 -27
  15. package/package.json +5 -23
  16. package/react/README.md +5 -0
  17. package/react/dist/cypress-react.cjs.js +21 -676
  18. package/react/dist/cypress-react.esm-bundler.js +22 -676
  19. package/react/dist/index.d.ts +13 -30
  20. package/react/package.json +13 -15
  21. package/react/react/README.md +5 -0
  22. package/react/react/dist/cypress-react.cjs.js +21 -676
  23. package/react/react/dist/cypress-react.esm-bundler.js +22 -676
  24. package/react/react/dist/index.d.ts +13 -30
  25. package/react/react/package.json +13 -15
  26. package/svelte/README.md +6 -2
  27. package/svelte/dist/cypress-svelte.cjs.js +12 -12
  28. package/svelte/dist/cypress-svelte.esm-bundler.js +12 -12
  29. package/svelte/dist/index.d.ts +8 -179
  30. package/svelte/package.json +2 -2
  31. package/svelte/svelte/README.md +6 -2
  32. package/svelte/svelte/dist/cypress-svelte.cjs.js +12 -12
  33. package/svelte/svelte/dist/cypress-svelte.esm-bundler.js +12 -12
  34. package/svelte/svelte/dist/index.d.ts +8 -179
  35. package/svelte/svelte/package.json +2 -2
  36. package/types/cypress.d.ts +32 -49
  37. package/types/net-stubbing.d.ts +2 -7
  38. package/vue/dist/cypress-vue.cjs.js +380 -275
  39. package/vue/dist/cypress-vue.esm-bundler.js +382 -276
  40. package/vue/dist/index.d.ts +61 -78
  41. package/vue/package.json +2 -5
  42. package/vue/vue/dist/cypress-vue.cjs.js +380 -275
  43. package/vue/vue/dist/cypress-vue.esm-bundler.js +382 -276
  44. package/vue/vue/dist/index.d.ts +61 -78
  45. package/vue/vue/package.json +2 -5
  46. package/angular-signals/README.md +0 -11
  47. package/angular-signals/angular-signals/README.md +0 -11
  48. package/angular-signals/angular-signals/dist/index.d.ts +0 -136
  49. package/angular-signals/angular-signals/dist/index.js +0 -1861
  50. package/angular-signals/angular-signals/package.json +0 -74
  51. package/angular-signals/dist/index.d.ts +0 -136
  52. package/angular-signals/dist/index.js +0 -1861
  53. package/angular-signals/package.json +0 -74
  54. package/react18/README.md +0 -7
  55. package/react18/dist/cypress-react.cjs.js +0 -597
  56. package/react18/dist/cypress-react.esm-bundler.js +0 -574
  57. package/react18/dist/index.d.ts +0 -78
  58. package/react18/package.json +0 -71
  59. package/react18/react18/README.md +0 -7
  60. package/react18/react18/dist/cypress-react.cjs.js +0 -597
  61. package/react18/react18/dist/cypress-react.esm-bundler.js +0 -574
  62. package/react18/react18/dist/index.d.ts +0 -78
  63. package/react18/react18/package.json +0 -71
  64. package/vue2/README.md +0 -7
  65. package/vue2/dist/cypress-vue2.cjs.js +0 -20045
  66. package/vue2/dist/cypress-vue2.esm-bundler.js +0 -20042
  67. package/vue2/dist/index.d.ts +0 -207
  68. package/vue2/package.json +0 -65
  69. package/vue2/vue2/README.md +0 -7
  70. package/vue2/vue2/dist/cypress-vue2.cjs.js +0 -20045
  71. package/vue2/vue2/dist/cypress-vue2.esm-bundler.js +0 -20042
  72. package/vue2/vue2/dist/index.d.ts +0 -207
  73. package/vue2/vue2/package.json +0 -65
@@ -1,29 +1,32 @@
1
1
  {
2
2
  "name": "@cypress/angular",
3
3
  "version": "0.0.0-development",
4
- "description": "Test Angular Components using Cypress",
4
+ "description": "Test Angular Components with Cypress",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "prebuild": "rimraf dist",
8
8
  "build": "rollup -c rollup.config.mjs",
9
9
  "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js",
10
10
  "check-ts": "tsc --noEmit",
11
+ "dev": "rollup -c rollup.config.mjs -w",
11
12
  "lint": "eslint --ext .js,.ts,.json, ."
12
13
  },
13
14
  "dependencies": {},
14
15
  "devDependencies": {
15
- "@angular/common": "^14.2.0",
16
- "@angular/core": "^14.2.0",
17
- "@angular/platform-browser-dynamic": "^14.2.0",
16
+ "@angular/common": "^17.2.0",
17
+ "@angular/core": "^17.2.0",
18
+ "@angular/platform-browser-dynamic": "^17.2.0",
18
19
  "@cypress/mount-utils": "0.0.0-development",
20
+ "rollup": "^4.24.4",
19
21
  "typescript": "~5.4.5",
20
- "zone.js": "~0.11.4"
22
+ "zone.js": "~0.14.6"
21
23
  },
22
24
  "peerDependencies": {
23
- "@angular/common": ">=13",
24
- "@angular/core": ">=13",
25
- "@angular/platform-browser-dynamic": ">=13",
26
- "zone.js": ">=0.11.0"
25
+ "@angular/common": ">=17.2",
26
+ "@angular/core": ">=17.2",
27
+ "@angular/platform-browser-dynamic": ">=17.2",
28
+ "rxjs": ">=7.5.0",
29
+ "zone.js": ">=0.13.0"
27
30
  },
28
31
  "files": [
29
32
  "dist"
@@ -44,6 +47,10 @@
44
47
  "testing"
45
48
  ],
46
49
  "contributors": [
50
+ {
51
+ "name": "Bill Glesias",
52
+ "social": "@atofstryker"
53
+ },
47
54
  {
48
55
  "name": "Jordan Powell",
49
56
  "social": "@jordanpowell88"
package/lib/cli.js CHANGED
@@ -118,7 +118,7 @@ const descriptions = {
118
118
  tag: 'named tag(s) for recorded runs in Cypress Cloud',
119
119
  version: 'prints Cypress version'
120
120
  };
121
- const knownCommands = ['cache', 'help', '-h', '--help', 'install', 'open', 'run', 'open-ct', 'run-ct', 'verify', '-v', '--version', 'version', 'info'];
121
+ const knownCommands = ['cache', 'help', '-h', '--help', 'install', 'open', 'run', 'verify', '-v', '--version', 'version', 'info'];
122
122
  const text = description => {
123
123
  if (!descriptions[description]) {
124
124
  throw new Error(`Could not find description for: ${description}`);
@@ -334,35 +334,6 @@ module.exports = {
334
334
  debug('running Cypress with args %o', fnArgs);
335
335
  require('./exec/run').start(parseVariableOpts(fnArgs, args)).then(util.exit).catch(util.logErrorExit1);
336
336
  });
337
- program.command('open-ct').usage('[options]').description('Opens Cypress component testing interactive mode. Deprecated: use "open --component"').option('-b, --browser <browser-path>', text('browser')).option('-c, --config <config>', text('config')).option('-C, --config-file <config-file>', text('configFile')).option('-d, --detached [bool]', text('detached'), coerceFalse).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).action(opts => {
338
- debug('opening Cypress');
339
- const msg = `
340
- ${logSymbols.warning} Warning: open-ct is deprecated and will be removed in a future release.
341
-
342
- Use \`cypress open --component\` instead.
343
- `;
344
- logger.warn();
345
- logger.warn(stripIndent(msg));
346
- logger.warn();
347
- require('./exec/open').start({
348
- ...util.parseOpts(opts),
349
- testingType: 'component'
350
- }).then(util.exit).catch(util.logErrorExit1);
351
- });
352
- program.command('run-ct').usage('[options]').description('Runs all Cypress component testing suites. Deprecated: use "run --component"').option('-b, --browser <browser-name-or-path>', text('browser')).option('--ci-build-id <id>', text('ciBuildId')).option('-c, --config <config>', text('config')).option('-C, --config-file <config-file>', text('configFile')).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).action(opts => {
353
- debug('running Cypress run-ct');
354
- const msg = `
355
- ${logSymbols.warning} Warning: run-ct is deprecated and will be removed in a future release.
356
- Use \`cypress run --component\` instead.
357
- `;
358
- logger.warn();
359
- logger.warn(stripIndent(msg));
360
- logger.warn();
361
- require('./exec/run').start({
362
- ...util.parseOpts(opts),
363
- testingType: 'component'
364
- }).then(util.exit).catch(util.logErrorExit1);
365
- });
366
337
  program.command('install').usage('[options]').description('Installs the Cypress executable matching this package\'s version').option('-f, --force', text('forceInstall')).action(opts => {
367
338
  require('./tasks/install').start(util.parseOpts(opts)).catch(util.logErrorExit1);
368
339
  });
package/lib/exec/spawn.js CHANGED
@@ -39,12 +39,6 @@ const isDbusWarning = /Failed to connect to the bus:/;
39
39
  // ERROR: No matching issuer found
40
40
  const isCertVerifyProcBuiltin = /(^\[.*ERROR:cert_verify_proc_builtin\.cc|^----- Certificate i=0 \(OU=Cypress Proxy|^ERROR: No matching issuer found$)/;
41
41
 
42
- // Electron logs a benign warning about WebSwapCGLLayer on MacOS v12 and Electron v18 due to a naming collision in shared libraries.
43
- // Once this is fixed upstream this regex can be removed: https://github.com/electron/electron/issues/33685
44
- // Sample:
45
- // objc[60540]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffa5a006318) and /{path/to/app}/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib (0x10f8a89c8). One of the two will be used. Which one is undefined.
46
- const isMacOSElectronWebSwapCGLLayerWarning = /^objc\[\d+\]: Class WebSwapCGLLayer is implemented in both.*Which one is undefined\./;
47
-
48
42
  /**
49
43
  * Electron logs benign warnings about Vulkan when run on hosts that do not have a GPU. This is coming from the primary Electron process,
50
44
  * and not the browser being used for tests.
@@ -72,7 +66,23 @@ const isHostVulkanDriverWarning = /^Warning:.+(#LDP_DRIVER_7|VK_LAYER_MESA_devic
72
66
 
73
67
  const isContainerVulkanDriverWarning = /^Warning: vkCreateInstance/;
74
68
  const isContainerVulkanStack = /^\s*at (CheckVkSuccessImpl|CreateVkInstance|Initialize|Create|operator).+(VulkanError|BackendVk).cpp/;
75
- const GARBAGE_WARNINGS = [isXlibOrLibudevRe, isHighSierraWarningRe, isRenderWorkerRe, isDbusWarning, isCertVerifyProcBuiltin, isMacOSElectronWebSwapCGLLayerWarning, isHostVulkanDriverWarning, isContainerVulkanDriverWarning, isContainerVulkanStack];
69
+
70
+ /**
71
+ * In Electron 32.0.0 a new debug scenario log message started appearing when iframes navigate to about:blank. This is a benign message.
72
+ * https://github.com/electron/electron/issues/44368
73
+ * Sample:
74
+ * [78887:1023/114920.074882:ERROR:debug_utils.cc(14)] Hit debug scenario: 4
75
+ */
76
+ const isDebugScenario4 = /^\[[^\]]+debug_utils\.cc[^\]]+\] Hit debug scenario: 4/;
77
+
78
+ /**
79
+ * In Electron 32.0.0 a new EGL driver message started appearing when running on Linux. This is a benign message.
80
+ * https://github.com/electron/electron/issues/43415
81
+ * Sample:
82
+ * [78887:1023/114920.074882:ERROR:gl_display.cc(14)] EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
83
+ */
84
+ const isEGLDriverMessage = /^\[[^\]]+gl_display\.cc[^\]]+\] EGL Driver message \(Error\) eglQueryDeviceAttribEXT: Bad attribute\./;
85
+ const GARBAGE_WARNINGS = [isXlibOrLibudevRe, isHighSierraWarningRe, isRenderWorkerRe, isDbusWarning, isCertVerifyProcBuiltin, isHostVulkanDriverWarning, isContainerVulkanDriverWarning, isContainerVulkanStack, isDebugScenario4, isEGLDriverMessage];
76
86
  const isGarbageLineWarning = str => {
77
87
  return _.some(GARBAGE_WARNINGS, re => {
78
88
  return re.test(str);
@@ -5,36 +5,8 @@ export declare const ROOT_SELECTOR = "[data-cy-root]";
5
5
  * @throws {Error} If the root element is not found
6
6
  */
7
7
  export declare const getContainerEl: () => HTMLElement;
8
- export declare function checkForRemovedStyleOptions(mountingOptions: Record<string, any>): void;
9
8
  /**
10
9
  * Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
11
10
  * @param optionalCallback Callback to be called before the next test runs
12
11
  */
13
12
  export declare function setupHooks(optionalCallback?: Function): void;
14
- /**
15
- * Remove any style or extra link elements from the iframe placeholder
16
- * left from any previous test
17
- *
18
- * Removed as of Cypress 11.0.0
19
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
20
- */
21
- export declare function cleanupStyles(): void;
22
- /**
23
- * Additional styles to inject into the document.
24
- * A component might need 3rd party libraries from CDN,
25
- * local CSS files and custom styles.
26
- *
27
- * Removed as of Cypress 11.0.0.
28
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
29
- */
30
- export type StyleOptions = unknown;
31
- /**
32
- * Injects custom style text or CSS file or 3rd party style resources
33
- * into the given document.
34
- *
35
- * Removed as of Cypress 11.0.0.
36
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
37
- */
38
- export declare const injectStylesBeforeElement: (options: Partial<StyleOptions & {
39
- log: boolean;
40
- }>, document: Document, el: HTMLElement | null) => void;
@@ -11,13 +11,6 @@ export const getContainerEl = () => {
11
11
  }
12
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.`);
13
13
  };
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);
18
- }
19
- }
20
- }
21
14
  /**
22
15
  * Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
23
16
  * @param optionalCallback Callback to be called before the next test runs
@@ -46,23 +39,3 @@ export function setupHooks(optionalCallback) {
46
39
  optionalCallback === null || optionalCallback === void 0 ? void 0 : optionalCallback();
47
40
  });
48
41
  }
49
- /**
50
- * Remove any style or extra link elements from the iframe placeholder
51
- * left from any previous test
52
- *
53
- * Removed as of Cypress 11.0.0
54
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
55
- */
56
- export function cleanupStyles() {
57
- Cypress.utils.throwErrByPath('mount.cleanup_styles');
58
- }
59
- /**
60
- * Injects custom style text or CSS file or 3rd party style resources
61
- * into the given document.
62
- *
63
- * Removed as of Cypress 11.0.0.
64
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
65
- */
66
- export const injectStylesBeforeElement = (options, document, el) => {
67
- Cypress.utils.throwErrByPath('mount.inject_styles_before_element');
68
- };
@@ -5,36 +5,8 @@ export declare const ROOT_SELECTOR = "[data-cy-root]";
5
5
  * @throws {Error} If the root element is not found
6
6
  */
7
7
  export declare const getContainerEl: () => HTMLElement;
8
- export declare function checkForRemovedStyleOptions(mountingOptions: Record<string, any>): void;
9
8
  /**
10
9
  * Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
11
10
  * @param optionalCallback Callback to be called before the next test runs
12
11
  */
13
12
  export declare function setupHooks(optionalCallback?: Function): void;
14
- /**
15
- * Remove any style or extra link elements from the iframe placeholder
16
- * left from any previous test
17
- *
18
- * Removed as of Cypress 11.0.0
19
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
20
- */
21
- export declare function cleanupStyles(): void;
22
- /**
23
- * Additional styles to inject into the document.
24
- * A component might need 3rd party libraries from CDN,
25
- * local CSS files and custom styles.
26
- *
27
- * Removed as of Cypress 11.0.0.
28
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
29
- */
30
- export type StyleOptions = unknown;
31
- /**
32
- * Injects custom style text or CSS file or 3rd party style resources
33
- * into the given document.
34
- *
35
- * Removed as of Cypress 11.0.0.
36
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
37
- */
38
- export declare const injectStylesBeforeElement: (options: Partial<StyleOptions & {
39
- log: boolean;
40
- }>, document: Document, el: HTMLElement | null) => void;
@@ -11,13 +11,6 @@ export const getContainerEl = () => {
11
11
  }
12
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.`);
13
13
  };
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);
18
- }
19
- }
20
- }
21
14
  /**
22
15
  * Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
23
16
  * @param optionalCallback Callback to be called before the next test runs
@@ -46,23 +39,3 @@ export function setupHooks(optionalCallback) {
46
39
  optionalCallback === null || optionalCallback === void 0 ? void 0 : optionalCallback();
47
40
  });
48
41
  }
49
- /**
50
- * Remove any style or extra link elements from the iframe placeholder
51
- * left from any previous test
52
- *
53
- * Removed as of Cypress 11.0.0
54
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
55
- */
56
- export function cleanupStyles() {
57
- Cypress.utils.throwErrByPath('mount.cleanup_styles');
58
- }
59
- /**
60
- * Injects custom style text or CSS file or 3rd party style resources
61
- * into the given document.
62
- *
63
- * Removed as of Cypress 11.0.0.
64
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
65
- */
66
- export const injectStylesBeforeElement = (options, document, el) => {
67
- Cypress.utils.throwErrByPath('mount.inject_styles_before_element');
68
- };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cypress",
3
- "version": "13.16.1",
3
+ "version": "14.0.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "postinstall": "node index.js --exec install",
@@ -60,17 +60,14 @@
60
60
  "mount-utils",
61
61
  "vue",
62
62
  "react",
63
- "vue2",
64
- "react18",
65
63
  "angular",
66
- "svelte",
67
- "angular-signals"
64
+ "svelte"
68
65
  ],
69
66
  "bin": {
70
67
  "cypress": "bin/cypress"
71
68
  },
72
69
  "engines": {
73
- "node": "^16.0.0 || ^18.0.0 || >=20.0.0"
70
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
74
71
  },
75
72
  "types": "types",
76
73
  "exports": {
@@ -84,11 +81,6 @@
84
81
  "import": "./vue/dist/cypress-vue.esm-bundler.js",
85
82
  "require": "./vue/dist/cypress-vue.cjs.js"
86
83
  },
87
- "./vue2": {
88
- "types": "./vue2/dist/index.d.ts",
89
- "import": "./vue2/dist/cypress-vue2.esm-bundler.js",
90
- "require": "./vue2/dist/cypress-vue2.cjs.js"
91
- },
92
84
  "./package.json": {
93
85
  "import": "./package.json",
94
86
  "require": "./package.json"
@@ -98,11 +90,6 @@
98
90
  "import": "./react/dist/cypress-react.esm-bundler.js",
99
91
  "require": "./react/dist/cypress-react.cjs.js"
100
92
  },
101
- "./react18": {
102
- "types": "./react18/dist/index.d.ts",
103
- "import": "./react18/dist/cypress-react.esm-bundler.js",
104
- "require": "./react18/dist/cypress-react.cjs.js"
105
- },
106
93
  "./mount-utils": {
107
94
  "types": "./mount-utils/dist/index.d.ts",
108
95
  "require": "./mount-utils/dist/index.js"
@@ -116,11 +103,6 @@
116
103
  "types": "./svelte/dist/index.d.ts",
117
104
  "import": "./svelte/dist/cypress-svelte.esm-bundler.js",
118
105
  "require": "./svelte/dist/cypress-svelte.cjs.js"
119
- },
120
- "./angular-signals": {
121
- "types": "./angular-signals/dist/index.d.ts",
122
- "import": "./angular-signals/dist/index.js",
123
- "require": "./angular-signals/dist/index.js"
124
106
  }
125
107
  },
126
108
  "nx": {
@@ -141,8 +123,8 @@
141
123
  },
142
124
  "buildInfo": {
143
125
  "commitBranch": "develop",
144
- "commitSha": "06aeb9dfddaffc679a4d5c55447767682855d4aa",
145
- "commitDate": "2024-12-03T18:07:34.000Z",
126
+ "commitSha": "90b017c1c19991517fcfbdc8e906db8b0cae0588",
127
+ "commitDate": "2025-01-16T13:53:56.000Z",
146
128
  "stable": true
147
129
  },
148
130
  "description": "Cypress is a next generation front end testing tool built for the modern web",
package/react/README.md CHANGED
@@ -3,6 +3,11 @@
3
3
  Mount React components in the open source [Cypress.io](https://www.cypress.io/) test runner
4
4
 
5
5
  > **Note:** This package is bundled with the `cypress` package and should not need to be installed separately. See the [React Component Testing Docs](https://docs.cypress.io/guides/component-testing/react/overview) for mounting React components. Installing and importing `mount` from `@cypress/react` should only be done for advanced use-cases.
6
+
7
+ ## Requirements
8
+
9
+ - React 18.0.0+ (Cypress 13 and under supports React 16 and 17)
10
+
6
11
  ## Development
7
12
 
8
13
  Run `yarn build` to compile and sync packages to the `cypress` cli package.