forked from nrwl/nx
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs(testing): add docs for cypress ct in angular and react packages (n…
…rwl#12629) * docs(react): add cypress component testing example files * docs(angular): add cypress component test example files
- Loading branch information
1 parent
d6285a5
commit b20c309
Showing
10 changed files
with
256 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
{% callout type="caution" title="Can I use component testing?" %} | ||
Angular component testing with Nx requires **Cypress version 10.7.0** and up. | ||
|
||
You can migrate with to v10 via the [migrate-to-cypress-10 generator](/packages/cypress/generators/migrate-to-cypress-10). | ||
|
||
This generator is for Cypress based component testing. | ||
|
||
If you're wanting to create Cypress tests for a Storybook story, then check out the [component-cypress-spec generator docs](/packages/angular/generators/component-cypress-spec) | ||
|
||
If you're wanting to create Storybook stories for a component, then check out the [stories generator docs](/packages/angular/generators/stories) or [component-story generator docs](/packages/angular/generators/component-cypress-spec) | ||
{% /callout %} | ||
|
||
This generator is used to create a Cypress component test file for a given Angular component. | ||
|
||
```shell | ||
nx g @nrwl/angular:component-test --project=my-cool-angular-project --componentName=CoolBtnComponent --componentDir=src/cool-btn --componentFileName=cool-btn.component | ||
``` | ||
|
||
Test file are generated with the `.cy.ts` suffix. this is to prevent colliding with any existing `.spec.` files contained in the project. | ||
|
||
It's currently expected the generated `.cy.ts` file will live side by side with the component. It is also assumed the project is already setup for component testing. If it isn't, then you can run the [cypress-component-project generator](/packages/angular/generators/cypress-component-configuration) to set up the project for component testing. |
101 changes: 101 additions & 0 deletions
101
packages/angular/docs/cypress-component-configuration-examples.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
{% callout type="caution" title="Can I use component testing?" %} | ||
Angular component testing with Nx requires **Cypress version 10.7.0** and up. | ||
|
||
You can migrate with to v10 via the [migrate-to-cypress-10 generator](/packages/cypress/generators/migrate-to-cypress-10). | ||
|
||
This generator is for Cypress based component testing. | ||
|
||
If you want to test components via Storybook with Cypress, then check out the [storybook-configuration generator docs](/packages/angular/generators/storybook-configuration) | ||
{% /callout %} | ||
|
||
This generator is designed to get your Angular project up and running with Cypress Component Testing. | ||
|
||
```shell | ||
nx g @nrwl/angular:cypress-component-project --project=my-cool-angular-project | ||
``` | ||
|
||
Running this generator, adds the required files to the specified project with a preconfigured `cypress.config.ts` designed for Nx workspaces. | ||
|
||
```ts {% fileName="cypress.config.ts" %} | ||
import { defineConfig } from 'cypress'; | ||
import { nxComponentTestingPreset } from '@nrwl/angular/plugins/component-testing'; | ||
|
||
export default defineConfig({ | ||
component: nxComponentTestingPreset(__filename), | ||
}); | ||
``` | ||
|
||
Here is an example on how to add custom options to the configuration | ||
|
||
```ts {% fileName="cypress.config.ts" %} | ||
import { defineConfig } from 'cypress'; | ||
import { nxComponentTestingPreset } from '@nrwl/angular/plugins/component-testing'; | ||
|
||
export default defineConfig({ | ||
component: { | ||
...nxComponentTestingPreset(__filename), | ||
// extra options here | ||
}, | ||
}); | ||
``` | ||
|
||
## Specifying a Build Target | ||
|
||
Component testing requires a _build target_ to correctly run the component test dev server. This option can be manually specified with `--build-target=some-angular-app:build`, but Nx will infer this usage from the [project graph](/concepts/mental-model#the-project-graph) if one isn't provided. | ||
|
||
For Angular projects, the build target needs to be using the `@nrwl/angular:webpack-browser` or | ||
`@angular-devkit/build-angular:browser` executor. | ||
The generator will throw an error if a build target can't be found and suggest passing one in manually. | ||
|
||
Letting Nx infer the build target by default | ||
|
||
```shell | ||
nx g @nrwl/angular:cypress-component-project --project=my-cool-angular-project | ||
``` | ||
|
||
Manually specifying the build target | ||
|
||
```shell | ||
nx g @nrwl/angular:cypress-component-project --project=my-cool-angular-project --build-target:some-angular-app:build --generate-tests | ||
``` | ||
|
||
{% callout type="note" title="Build Target with Configuration" %} | ||
If you're wanting to use a build target with a specific configuration. i.e. `my-app:build:production`, | ||
then manually providing `--build-target=my-app:build:production` is the best way to do that. | ||
{% /callout %} | ||
|
||
## Auto Generating Tests | ||
|
||
You can optionally use the `--generate-tests` flag to generate a test file for each component in your project. | ||
|
||
```shell | ||
nx g @nrwl/angular:cypress-component-project --project=my-cool-angular-project --generate-tests | ||
``` | ||
|
||
## Running Component Tests | ||
|
||
A new `component-test` target will be added to the specified project to run your component tests. | ||
|
||
```shell | ||
nx g component-test my-cool-angular-project | ||
``` | ||
|
||
Here is an example of the project configuration that is generated. The `--build-target` option is added as the `devServerTarget` which can be changed as needed. | ||
|
||
```json {% fileName="project.json" %} | ||
{ | ||
"targets" { | ||
"component-test": { | ||
"executor": "@nrwl/cypress:cypress", | ||
"options": { | ||
"cypressConfig": "<path-to-project-root>/cypress.config.ts", | ||
"testingType": "component", | ||
"devServerTarget": "some-angular-app:build", | ||
"skipServe": true | ||
} | ||
} | ||
} | ||
} | ||
``` | ||
|
||
Nx also supports [React component testing](/packages/angular/generators/cypress-component-configuration). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{% callout type="caution" title="Can I use component testing?" %} | ||
React component testing with Nx requires **Cypress version 10** and up. | ||
|
||
You can migrate with to v10 via the [migrate-to-cypress-10 generator](/packages/cypress/generators/migrate-to-cypress-10). | ||
|
||
This generator is for Cypress based component testing. | ||
|
||
If you're wanting to create Cypress tests for a Storybook story, then check out the [component-cypress-spec generator docs](/packages/react/generators/component-cypress-spec) | ||
|
||
If you're wanting to create Storybook stories for a component, then check out the [stories generator docs](/packages/react/generators/stories) or [component-story generator docs](/packages/react/generators/component-cypress-spec) | ||
|
||
{% /callout %} | ||
|
||
This generator is used to create a Cypress component test file for a given React component. | ||
|
||
```shell | ||
nx g @nrwl/react:component-test --project=my-cool-react-project --componentPath=src/my-fancy-button.tsx | ||
``` | ||
|
||
Test file are generated with the `.cy.` suffix. this is to prevent colliding with any existing `.spec.` files contained in the project. | ||
|
||
It's currently expected the generated `.cy.` file will live side by side with the component. It is also assumed the project is already setup for component testing. If it isn't, then you can run the [cypress-component-project generator](/packages/react/generators/cypress-component-configuration) to set up the project for component testing. |
Oops, something went wrong.