Skip to content

Commit b5e6fd6

Browse files
committed
Merge branch 'master' into develop
2 parents 7f2522f + 02e5b24 commit b5e6fd6

File tree

5 files changed

+108
-127
lines changed

5 files changed

+108
-127
lines changed

npm/angular/CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
132
# @cypress/angular-v1.0.0 (2022-08-04)
233

334

npm/angular/README.md

Lines changed: 43 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -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
22

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+**
44

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.
66
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
388

39-
## Blog posts
9+
- Requires Cypress v7.0.0 or later
10+
- Requires [Node](https://nodejs.org/en/) version 12 or above
4011

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+
```
4215

43-
## Install
16+
## Run
4417

45-
Requires [Node](https://nodejs.org/en/) version 12 or above.
18+
Open cypress test runner
19+
```
20+
npx cypress open --component
21+
```
4622

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
4926
```
5027

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).
5129

5230
## API
5331

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.
5535

5636
## Examples
5737

@@ -68,87 +48,38 @@ describe('HelloWorldComponent', () => {
6848
})
6949
```
7050

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'
10054

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+
})
10764
```
10865

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.
11267

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).
11468

115-
## Common problems
69+
## Compatibility
11670

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 |
12174

12275
## Development
12376

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.
14178

142-
[Changelog](./CHANGELOG.md)
79+
## License
14380

144-
## Related tools
81+
[![license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/cypress-io/cypress/blob/master/LICENSE)
14582

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).
14784

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)

npm/angular/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "@cypress/angular",
33
"version": "0.0.0-development",
44
"description": "Test Angular Components using Cypress",
5-
"private": true,
65
"main": "dist/index.js",
76
"scripts": {
87
"prebuild": "rimraf dist",

npm/cypress-schematic/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [@cypress/schematic-v2.0.3](https://github.com/cypress-io/cypress/compare/@cypress/schematic-v2.0.2...@cypress/schematic-v2.0.3) (2022-08-17)
2+
3+
4+
### Bug Fixes
5+
6+
* cypress-schematic add exception for nguniversal ssr dev server ([#23348](https://github.com/cypress-io/cypress/issues/23348)) ([1f05ff0](https://github.com/cypress-io/cypress/commit/1f05ff0fd75db2d02a777bd497b30179b4b407f5))
7+
18
# [@cypress/schematic-v2.0.2](https://github.com/cypress-io/cypress/compare/@cypress/schematic-v2.0.1...@cypress/schematic-v2.0.2) (2022-08-10)
29

310

npm/cypress-schematic/src/builders/cypress/index.ts

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import { CypressBuilderOptions } from './cypressBuilderOptions'
1616
type CypressOptions = Partial<CypressCommandLine.CypressRunOptions> &
1717
Partial<CypressCommandLine.CypressOpenOptions>;
1818

19-
type StartDevServerProps = {
19+
type CypressStartDevServerProps = {
2020
devServerTarget: string
2121
watch: boolean
22-
context: any
22+
context: BuilderContext
2323
}
2424

2525
function runCypress (
@@ -102,20 +102,33 @@ function initCypress (userOptions: CypressBuilderOptions): Observable<BuilderOut
102102
export function startDevServer ({
103103
devServerTarget,
104104
watch,
105-
context }: StartDevServerProps): Observable<string> {
106-
const overrides = {
107-
watch,
108-
}
109-
110-
//@ts-ignore
111-
return scheduleTargetAndForget(context, targetFromTargetString(devServerTarget), overrides).pipe(
112-
//@ts-ignore
113-
map((output: any) => {
114-
if (!output.success && !watch) {
115-
throw new Error('Could not compile application files')
105+
context }: CypressStartDevServerProps): Observable<string> {
106+
const buildTarget = targetFromTargetString(devServerTarget)
107+
108+
return from(context.getBuilderNameForTarget(buildTarget)).pipe(
109+
switchMap((builderName) => {
110+
let overrides = {}
111+
112+
// @NOTE: Do not forward watch option if not supported by the target dev server,
113+
// this is relevant for running Cypress against dev server target that does not support this option,
114+
// for instance @nguniversal/builders:ssr-dev-server.
115+
// see https://github.com/nrwl/nx/blob/f930117ed6ab13dccc40725c7e9551be081cc83d/packages/cypress/src/executors/cypress/cypress.impl.ts
116+
if (builderName !== '@nguniversal/builders:ssr-dev-server') {
117+
console.info(`Passing watch mode to DevServer - watch mode is ${watch}`)
118+
overrides = {
119+
watch,
120+
}
116121
}
117122

118-
return output.baseUrl as string
123+
return scheduleTargetAndForget(context, targetFromTargetString(devServerTarget), overrides).pipe(
124+
map((output: any) => {
125+
if (!output.success && !watch) {
126+
throw new Error('Could not compile application files')
127+
}
128+
129+
return output.baseUrl as string
130+
}),
131+
)
119132
}),
120133
)
121134
}

0 commit comments

Comments
 (0)