cypress 10.6.0 → 10.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 {