cypress 10.6.0 → 10.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.
@@ -1,3 +1,34 @@
1
+ # @cypress/angular-v1.0.0 (2022-08-17)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **angular:** set rxjs versions > 6.6.0 as dependency ([#16676](https://github.com/cypress-io/cypress/issues/16676)) ([46de81e](https://github.com/cypress-io/cypress/commit/46de81e75fd18bc37cb884e9a751106fff4d08ad))
7
+ * remove dependency causing semantic-release to fail ([#23142](https://github.com/cypress-io/cypress/issues/23142)) ([20f89bf](https://github.com/cypress-io/cypress/commit/20f89bfa32636baa8922896e719962c703129abd))
8
+ * scaffold correct config file ([#19776](https://github.com/cypress-io/cypress/issues/19776)) ([8f32960](https://github.com/cypress-io/cypress/commit/8f32960ef803f539f065d41f01fff33bfe33ed5d))
9
+ * scope config to current testing type ([#20677](https://github.com/cypress-io/cypress/issues/20677)) ([61f7cfc](https://github.com/cypress-io/cypress/commit/61f7cfc59284a2938e0a1c15d74ee75215ba5f8b))
10
+ * terminal error message for non migrated config ([#21467](https://github.com/cypress-io/cypress/issues/21467)) ([3274da7](https://github.com/cypress-io/cypress/commit/3274da7842f5ef1ddad62b1c630d0ff9120e4289))
11
+ * update scaffold template to use correct path ([#20047](https://github.com/cypress-io/cypress/issues/20047)) ([6e80359](https://github.com/cypress-io/cypress/commit/6e803597a379222cf936e5977c8314d693ee1912))
12
+
13
+
14
+ ### Features
15
+
16
+ * add devServer to config file ([#18962](https://github.com/cypress-io/cypress/issues/18962)) ([2573375](https://github.com/cypress-io/cypress/commit/2573375b5b6616efd2d213a94cd55fd8e0385864))
17
+ * add template support, teardown & standalone ([#23117](https://github.com/cypress-io/cypress/issues/23117)) ([d201b37](https://github.com/cypress-io/cypress/commit/d201b37b3d6b1e37a15a8d21d853acca47bfc666))
18
+ * **angular:** angular mount ([#22858](https://github.com/cypress-io/cypress/issues/22858)) ([4131b1f](https://github.com/cypress-io/cypress/commit/4131b1fa8482ae08113bef337965baa1ac12f66c))
19
+ * Deprecate run-ct / open-ct, and update all examples to use --ct instead ([#18422](https://github.com/cypress-io/cypress/issues/18422)) ([196e8f6](https://github.com/cypress-io/cypress/commit/196e8f62cc6d27974f235945cb5700624b3dae41))
20
+ * enable Angular CT support ([#23089](https://github.com/cypress-io/cypress/issues/23089)) ([94e78eb](https://github.com/cypress-io/cypress/commit/94e78eba0430eae97529058c40611e5f24dbf140))
21
+ * ProjectLifecycleManager & general launchpad cleanup ([#19347](https://github.com/cypress-io/cypress/issues/19347)) ([4626f74](https://github.com/cypress-io/cypress/commit/4626f7481c9904fec484aa167a02e0197a3095c4))
22
+ * remove testFiles reference ([#20565](https://github.com/cypress-io/cypress/issues/20565)) ([5670344](https://github.com/cypress-io/cypress/commit/567034459089d9d53dfab5556cb9369fb335c3db))
23
+ * support specPattern, deprecate integrationFolder and componentFolder ([#19319](https://github.com/cypress-io/cypress/issues/19319)) ([792980a](https://github.com/cypress-io/cypress/commit/792980ac12746ef47b9c944ebe4c6c353a187ab2))
24
+ * support webpack-dev-server v4 ([#17918](https://github.com/cypress-io/cypress/issues/17918)) ([16e4759](https://github.com/cypress-io/cypress/commit/16e4759e0196f68c5f0525efb020211337748f94))
25
+ * swap the #__cy_root id selector to become data-cy-root for component mounting ([#20951](https://github.com/cypress-io/cypress/issues/20951)) ([0e7b555](https://github.com/cypress-io/cypress/commit/0e7b555f93fb403f431c5de4a07ae7ad6ac89ba2))
26
+ * Use .config files ([#18578](https://github.com/cypress-io/cypress/issues/18578)) ([081dd19](https://github.com/cypress-io/cypress/commit/081dd19cc6da3da229a7af9c84f62730c85a5cd6))
27
+ * use devServer instad of startDevServer ([#20092](https://github.com/cypress-io/cypress/issues/20092)) ([8a6768f](https://github.com/cypress-io/cypress/commit/8a6768fee6f46b908c5a9daf23da8b804a6c627f))
28
+ * use hoisted yarn install in binary build ([#17285](https://github.com/cypress-io/cypress/issues/17285)) ([e4f5b10](https://github.com/cypress-io/cypress/commit/e4f5b106d49d6ac0857c5fdac886f83b99558c88))
29
+ * Use plugins on config files ([#18798](https://github.com/cypress-io/cypress/issues/18798)) ([bb8251b](https://github.com/cypress-io/cypress/commit/bb8251b752ac44f1184f9160194cf12d41fc867f))
30
+ * use supportFile by testingType ([#19364](https://github.com/cypress-io/cypress/issues/19364)) ([0366d4f](https://github.com/cypress-io/cypress/commit/0366d4fa8971e5e5189c6fd6450cc3c8d72dcfe1))
31
+
1
32
  # @cypress/angular-v1.0.0 (2022-08-04)
2
33
 
3
34
 
package/angular/README.md CHANGED
@@ -1,57 +1,37 @@
1
- > A little helper to unit test React components in the open source [Cypress.io](https://www.cypress.io/) test runner **v7.0.0+**
1
+ # @cypress/angular
2
2
 
3
- **Jump to:** [Comparison](#comparison), [Blog posts](#blog-posts), [Install](#install), Examples: [basic](#basic-examples), [advanced](#advanced-examples), [full](#full-examples), [external](#external-examples), [Style options](#options), [Code coverage](#code-coverage), [Visual testing](#visual-testing), [Common problems](#common-problems), [Chat](#chat)
3
+ Mount Angular components in the open source [Cypress.io](https://www.cypress.io/) test runner **v7.0.0+**
4
4
 
5
- ## TLDR
5
+ > **Note:** This package is bundled with the `cypress` package and should not need to be installed separately. See the [Angular Component Testing Docs](https://docs.cypress.io/guides/component-testing/quickstart-angular#Configuring-Component-Testing) for mounting Angular components. Installing and importing `mount` from `@cypress/angular` should only be used for advanced use-cases.
6
6
 
7
- - What is this? This package allows you to use [Cypress](https://www.cypress.io/) test runner to unit test your Angular components with zero effort. Here is a typical component testing, notice there is not external URL shown, since it is mounting the component directly.
8
-
9
- ![Example component test](images/dynamic.gif)
10
-
11
- - How is this different from [Angular Testing](https://angular.io/guide/testing) or [ATL](https://testing-library.com/docs/angular-testing-library/intro/)? It is similar in functionality BUT runs the component in the real browser with full power of Cypress E2E test runner: [live GUI, full API, screen recording, CI support, cross-platform](https://www.cypress.io/features/), and [visual testing](https://on.cypress.io/visual-testing).
12
- - Read [My Vision for Component Tests in Cypress](https://glebbahmutov.com/blog/my-vision-for-component-tests/) by Gleb Bahmutov
13
-
14
- ## Comparison
15
-
16
- <!-- prettier-ignore-start -->
17
- Feature | Jest / Karma / ATL | Cypress + `@cypress/angular`
18
- --- | --- | ---
19
- Test runs in real browser | ❌ | ✅
20
- Supports shallow mount | ✅ | ❌
21
- Supports full mount | ✅ | ✅
22
- Test speed | 🏎 | [as fast as the app works in the browser](#fast-enough)
23
- Test can use additional plugins | maybe | use any [Cypress plugin](https://on.cypress.io/plugins)
24
- Test can interact with component | synthetic limited API | use any [Cypress command](https://on.cypress.io/api)
25
- Test can be debugged | via terminal and Node debugger | use browser DevTools
26
- Built-in time traveling debugger | ❌ | Cypress time traveling debugger
27
- Re-run tests on file or test change | ✅ | ✅
28
- Test output on CI | terminal | terminal, screenshots, videos
29
- Tests can be run in parallel | ✅ | ✅ via [parallelization](https://on.cypress.io/parallelization)
30
- Test against interface | if using `@testing-library/angular` | ✅ and can use `@testing-library/cypress`
31
- Spying and stubbing methods | Jest mocks | [Sinon library](https://on.cypress.io/stubs-spies-and-clocks)
32
- Stubbing imports | ✅ | ✅
33
- Stubbing clock | ✅ | ✅
34
- Code coverage | ✅ | ✅
35
- <!-- prettier-ignore-end -->
36
-
37
- If you are coming from Jest + ATL world, read [Test The Interface Not The Implementation](https://glebbahmutov.com/blog/test-the-interface/).
7
+ ## Install
38
8
 
39
- ## Blog posts
9
+ - Requires Cypress v7.0.0 or later
10
+ - Requires [Node](https://nodejs.org/en/) version 12 or above
40
11
 
41
- - [My Vision for Component Tests in Cypress](https://glebbahmutov.com/blog/my-vision-for-component-tests/)
12
+ ```sh
13
+ npm install --save-dev @cypress/angular
14
+ ```
42
15
 
43
- ## Install
16
+ ## Run
44
17
 
45
- Requires [Node](https://nodejs.org/en/) version 12 or above.
18
+ Open cypress test runner
19
+ ```
20
+ npx cypress open --component
21
+ ```
46
22
 
47
- ```sh
48
- npm install --save-dev cypress @cypress/angular @cypress/webpack-dev-server
23
+ If you need to run test in CI
24
+ ```
25
+ npx cypress run --component
49
26
  ```
50
27
 
28
+ For more information, please check the official docs for [running Cypress](https://on.cypress.io/guides/getting-started/opening-the-app#Quick-Configuration) and for [component testing](https://on.cypress.io/guides/component-testing/writing-your-first-component-test).
51
29
 
52
30
  ## API
53
31
 
54
- - `mount` allows you to mount a given Angular component as a mini web application and interact with it using Cypress commands
32
+ - `mount` is the most important function, allows to mount a given Angular component as a mini web application and interact with it using Cypress commands
33
+ - `MountConfig` Configuration used to configure your test
34
+ - `createOutputSpy` factory function that creates new EventEmitter for your component and spies on it's `emit` method.
55
35
 
56
36
  ## Examples
57
37
 
@@ -68,87 +48,38 @@ describe('HelloWorldComponent', () => {
68
48
  })
69
49
  ```
70
50
 
71
- Look at the examples in [cypress/component](cypress/component) folder. Here is the list of examples showing various testing scenarios.
72
-
73
- ### Basic examples
74
- Coming Soon...
75
-
76
-
77
- ### Advanced examples
78
- Coming Soon...
79
-
80
- ### Full examples
81
- Coming Soon...
82
-
83
- ### External examples
84
- Coming Soon...
85
-
86
- ## Options
87
-
88
-
89
- ## Code coverage
90
-
91
- In order to use code coverage you can follow the instructions from [docs](https://github.com/cypress-io/code-coverage). In most of cases you need to install 2 dependencies:
92
-
93
- ```
94
- npm i @cypress/code-coverage babel-plugin-istanbul
95
-
96
- yarn add @cypress/code-coverage babel-plugin-istanbul
97
- ```
98
-
99
- If you are using [plugins/cra-v3](plugins/cra-v3) it instruments the code on the fly using `babel-plugin-istanbul` and generates report using dependency [cypress-io/code-coverage](https://github.com/cypress-io/code-coverage) (included). If you want to disable code coverage instrumentation and reporting, use `--env coverage=false` or `CYPRESS_coverage=false` or set in your `cypress.json` file
51
+ ```ts
52
+ import { mount } from '@cypress/angular'
53
+ import { HelloWorldComponent } from './hello-world.component'
100
54
 
101
- ```json
102
- {
103
- "env": {
104
- "coverage": false
105
- }
106
- }
55
+ describe('HelloWorldComponent', () => {
56
+ it('works', () => {
57
+ mount('<app-hello-world></app-hello-world>', {
58
+ declarations: [HelloWorldComponent]
59
+ })
60
+ // now use standard Cypress commands
61
+ cy.contains('Hello World!').should('be.visible')
62
+ })
63
+ })
107
64
  ```
108
65
 
109
- ## Visual testing
110
-
111
- You can use any Cypress [Visual Testing plugin](https://on.cypress.io/plugins#visual-testing) to perform [visual testing](https://on.cypress.io/visual-testing) from the component tests. This repo has several example projects, see [visual-sudoku](examples/visual-sudoku), [visual-testing-with-percy](examples/visual-testing-with-percy), [visual-testing-with-happo](examples/visual-testing-with-happo), and [visual-testing-with-applitools](examples/visual-testing-with-applitools).
66
+ Look at the examples in [cypress-component-testing-apps](https://github.com/cypress-io/cypress-component-testing-apps) repo. Here in the `angular` and `angular-standalone` folders are the two example applications showing various testing scenarios.
112
67
 
113
- For a larger Do-It-Yourself example with an hour long list of explanation videos, see [bahmutov/sudoku](https://github.com/bahmutov/sudoku) repository. I explain how to write visual testing using open source tools in this [blog post](https://glebbahmutov.com/blog/open-source-visual-testing-of-components/), [video talk](https://www.youtube.com/watch?v=00BNExlJUU8), and [slides](https://slides.com/bahmutov/i-see-what-is-going-on).
114
68
 
115
- ## Common problems
69
+ ## Compatibility
116
70
 
117
-
118
- ## Chat
119
-
120
- Come chat with us [on discord](https://discord.gg/7ZHYhZSW) in the #component-testing channel.
71
+ | @cypress/angular | cypress |
72
+ | -------------- | ------- |
73
+ | >= v1 | >= v10.5 |
121
74
 
122
75
  ## Development
123
76
 
124
- See [docs/development.md](./docs/development.md)
125
-
126
- ## Debugging
127
-
128
- You can see verbose logs from this plugin by running with environment variable
129
-
130
- ```
131
- DEBUG=@cypress/angular
132
- ```
133
-
134
- Because finding and modifying Webpack settings while running this plugin is done by [find-webpack](https://github.com/bahmutov/find-webpack) module, you might want to enable its debug messages too.
135
-
136
- ```
137
- DEBUG=@cypress/angular,find-webpack
138
- ```
139
-
140
- ## Changelog
77
+ Run `yarn build` to compile and sync packages to the `cypress` cli package.
141
78
 
142
- [Changelog](./CHANGELOG.md)
79
+ ## License
143
80
 
144
- ## Related tools
81
+ [![license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/cypress-io/cypress/blob/master/LICENSE)
145
82
 
146
- Same feature for unit testing components from other frameworks using Cypress
83
+ This project is licensed under the terms of the [MIT license](/LICENSE).
147
84
 
148
- - [@cypress/react](https://github.com/cypress-io/cypress/tree/develop/npm/react)
149
- - [@cypress/vue](https://github.com/cypress-io/cypress/tree/develop/npm/vue)
150
- - [cypress-cycle-unit-test](https://github.com/bahmutov/cypress-cycle-unit-test)
151
- - [cypress-svelte-unit-test](https://github.com/bahmutov/cypress-svelte-unit-test)
152
- - [@cypress/angular](https://github.com/bahmutov/@cypress/angular)
153
- - [cypress-hyperapp-unit-test](https://github.com/bahmutov/cypress-hyperapp-unit-test)
154
- - [cypress-angularjs-unit-test](https://github.com/bahmutov/cypress-angularjs-unit-test)
85
+ ## [Changelog](./CHANGELOG.md)
@@ -12,7 +12,7 @@ import { Component, EventEmitter } from '@angular/core';
12
12
  import { getTestBed, TestBed } from '@angular/core/testing';
13
13
  import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
14
14
 
15
- /*! *****************************************************************************
15
+ /******************************************************************************
16
16
  Copyright (c) Microsoft Corporation.
17
17
 
18
18
  Permission to use, copy, modify, and/or distribute this software for any
@@ -128,9 +128,9 @@ function bootstrapModule(component, config) {
128
128
  function initTestBed(component, config) {
129
129
  const { providers } = config, configRest = __rest(config, ["providers"]);
130
130
  const componentFixture = createComponentFixture(component);
131
- TestBed.configureTestingModule(Object.assign({}, bootstrapModule(componentFixture, configRest)));
131
+ getTestBed().configureTestingModule(Object.assign({}, bootstrapModule(componentFixture, configRest)));
132
132
  if (providers != null) {
133
- TestBed.overrideComponent(componentFixture, {
133
+ getTestBed().overrideComponent(componentFixture, {
134
134
  add: {
135
135
  providers,
136
136
  },
@@ -151,6 +151,8 @@ WrapperComponent = __decorate([
151
151
  */
152
152
  function createComponentFixture(component) {
153
153
  if (typeof component === 'string') {
154
+ // getTestBed().overrideTemplate is available in v14+
155
+ // The static TestBed.overrideTemplate is available across versions
154
156
  TestBed.overrideTemplate(WrapperComponent, component);
155
157
  return WrapperComponent;
156
158
  }
@@ -165,7 +167,7 @@ function createComponentFixture(component) {
165
167
  * @returns {ComponentFixture<T>} ComponentFixture
166
168
  */
167
169
  function setupFixture(component, config) {
168
- const fixture = TestBed.createComponent(component);
170
+ const fixture = getTestBed().createComponent(component);
169
171
  fixture.whenStable().then(() => {
170
172
  var _a;
171
173
  fixture.autoDetectChanges((_a = config.autoDetectChanges) !== null && _a !== void 0 ? _a : true);
@@ -256,8 +258,8 @@ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDyn
256
258
  });
257
259
  setupHooks(() => {
258
260
  // Not public, we need to call this to remove the last component from the DOM
259
- TestBed['tearDownTestingModule']();
260
- TestBed.resetTestingModule();
261
+ getTestBed()['tearDownTestingModule']();
262
+ getTestBed().resetTestingModule();
261
263
  });
262
264
 
263
265
  export { createOutputSpy, mount };
@@ -1,4 +1,5 @@
1
1
  /// <reference types="cypress" />
2
+ /// <reference types="cypress" />
2
3
  import 'zone.js';
3
4
  import 'zone.js/testing';
4
5
  import { Type } from '@angular/core';
@@ -2,23 +2,21 @@
2
2
  "name": "@cypress/angular",
3
3
  "version": "0.0.0-development",
4
4
  "description": "Test Angular Components using Cypress",
5
- "private": true,
6
5
  "main": "dist/index.js",
7
6
  "scripts": {
8
7
  "prebuild": "rimraf dist",
9
- "build": "rollup -c rollup.config.js",
8
+ "build": "rollup -c rollup.config.mjs",
10
9
  "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js",
11
10
  "build-prod": "yarn build",
12
11
  "check-ts": "tsc --noEmit"
13
12
  },
14
13
  "dependencies": {},
15
14
  "devDependencies": {
16
- "@angular/common": "^14.0.6",
17
- "@angular/core": "^14.0.6",
18
- "@angular/platform-browser-dynamic": "^14.0.6",
19
- "@rollup/plugin-node-resolve": "^11.1.1",
20
- "rollup-plugin-typescript2": "^0.29.0",
21
- "typescript": "~4.2.3",
15
+ "@angular/common": "^14.2.0",
16
+ "@angular/core": "^14.2.0",
17
+ "@angular/platform-browser-dynamic": "^14.2.0",
18
+ "@cypress/mount-utils": "0.0.0-development",
19
+ "typescript": "^4.7.4",
22
20
  "zone.js": "~0.11.4"
23
21
  },
24
22
  "peerDependencies": {
@@ -12,7 +12,11 @@
12
12
  },
13
13
  "dependencies": {},
14
14
  "devDependencies": {
15
- "typescript": "^4.2.3"
15
+ "@rollup/plugin-commonjs": "^17.1.0",
16
+ "@rollup/plugin-node-resolve": "^11.1.1",
17
+ "rollup": "^2.38.5",
18
+ "rollup-plugin-typescript2": "^0.29.0",
19
+ "typescript": "^4.7.4"
16
20
  },
17
21
  "files": [
18
22
  "dist"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cypress",
3
- "version": "10.6.0",
3
+ "version": "10.7.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "postinstall": "node index.js --exec install",
@@ -61,7 +61,8 @@
61
61
  "react",
62
62
  "vue2",
63
63
  "react18",
64
- "angular"
64
+ "angular",
65
+ "svelte"
65
66
  ],
66
67
  "bin": {
67
68
  "cypress": "bin/cypress"
@@ -108,12 +109,17 @@
108
109
  "import": "./angular/dist/index.js",
109
110
  "require": "./angular/dist/index.js",
110
111
  "types": "./angular/dist/index.d.ts"
112
+ },
113
+ "./svelte": {
114
+ "import": "./svelte/dist/cypress-svelte.esm-bundler.js",
115
+ "require": "./svelte/dist/cypress-svelte.cjs.js",
116
+ "types": "./svelte/dist/index.d.ts"
111
117
  }
112
118
  },
113
119
  "buildInfo": {
114
120
  "commitBranch": "develop",
115
- "commitSha": "89839eb2e0421f7485b4544866355d8be40bd331",
116
- "commitDate": "2022-08-16T18:09:58.000Z",
121
+ "commitSha": "b5e6fd67a9080864274ffa54cef30ca6445650d1",
122
+ "commitDate": "2022-08-30T14:25:23.000Z",
117
123
  "stable": true
118
124
  },
119
125
  "description": "Cypress.io end to end testing tool",
@@ -1,4 +1,7 @@
1
1
  /// <reference types="cypress" />
2
+ /// <reference types="cypress" />
3
+ /// <reference types="cypress" />
4
+ /// <reference types="cypress" />
2
5
  import * as React from 'react';
3
6
  import type { InternalMountOptions, MountOptions, MountReturn, UnmountArgs } from './types';
4
7
  /**
@@ -10,7 +13,7 @@ import type { InternalMountOptions, MountOptions, MountReturn, UnmountArgs } fro
10
13
  * This is designed to be consumed by `npm/react{16,17,18}`, and other React adapters,
11
14
  * or people writing adapters for third-party, custom adapters.
12
15
  */
13
- export declare const makeMountFn: (type: 'mount' | 'rerender', jsx: React.ReactNode, options?: MountOptions, rerenderKey?: string | undefined, internalMountOptions?: InternalMountOptions | undefined) => globalThis.Cypress.Chainable<MountReturn>;
16
+ export declare const makeMountFn: (type: 'mount' | 'rerender', jsx: React.ReactNode, options?: MountOptions, rerenderKey?: string, internalMountOptions?: InternalMountOptions) => globalThis.Cypress.Chainable<MountReturn>;
14
17
  /**
15
18
  * Create an `unmount` function. Performs all the non-React-version specific
16
19
  * behavior related to unmounting.
@@ -20,7 +23,7 @@ export declare const makeMountFn: (type: 'mount' | 'rerender', jsx: React.ReactN
20
23
  */
21
24
  export declare const makeUnmountFn: (options: UnmountArgs) => Cypress.Chainable<undefined>;
22
25
  declare const _mount: (jsx: React.ReactNode, options?: MountOptions) => Cypress.Chainable<MountReturn>;
23
- export declare const createMount: (defaultOptions: MountOptions) => (element: React.ReactElement, options?: Partial<import("@cypress/mount-utils").StyleOptions & import("./types").MountReactComponentOptions> | undefined) => Cypress.Chainable<MountReturn>;
26
+ export declare const createMount: (defaultOptions: MountOptions) => (element: React.ReactElement, options?: MountOptions) => Cypress.Chainable<MountReturn>;
24
27
  /** @deprecated Should be removed in the next major version */
25
28
  export default _mount;
26
29
  export interface JSX extends Function {