@nrwl/cypress:cypress
Run Cypress for e2e, integration and component testing.
Options can be configured in project.json
when defining the executor, or when invoking it. Read more about how to configure targets and executors here: https://nx.dev/reference/project-configuration#targets.
Depending on your testing type, the Cypress executor is configured in different ways. The following are sample configurations that are created via the cypress-project and cypress-component-project generators.
"targets": {
"e2e": {
"executor": "@nrwl/cypress:cypress",
"options": {
"cypressConfig": "apps/app-e2e/cypres.config.ts",
"devServerTarget": "my-react-app:serve",
"testingType": "e2e"
}
}
}
API testing with Cypress is the same setup as e2e testing. Just change which devServerTarget
is used!
Providing a Base URL
If devServerTarget
is provided, the url returned from started the dev server will be passed to cypress as the baseUrl
option.
Defining a baseUrl
in the executor options will override the inferred baseUrl
from the devServerTarget
.
The baseUrl
defined in the Cypress config file is the last value used if no url is found in the devServerTarget
or executor options.
Static Serving
When running in CI it doesn't make sense to start up a dev server since there aren't changes to watch for.
You can use @nrwl/web:file-server
to serve the pre-built static files of your frontend project.
In some frontend application, add a 'static-serve' target.
"serve-static": {
"executor": "@nrwl/web:file-server",
"options":{
"buildTarget": "frontend:build"
}
}
In the e2e application add a configuration to change devServerTarget
to point to the static-serve
from the frontend application
"e2e": {
//...
"configurations": {
"ci": {
"devServerTarget": "frontend:serve-static"
}
}
}
The same can be done for backend node apps with @nrwl/js:node
executor
nx e2e my-app-e2e --configuration=ci
Environment Variables
Using executor configurations offers flexibility to set environment variables
"targets": {
"e2e": {
"executor": "@nrwl/cypress:cypress",
"options": {
"cypressConfig": "apps/app-e2e/cypres.config.ts",
"devServerTarget": "my-react-app:serve",
"testingType": "e2e"
},
"configurations": {
"qa": {
"env": {
"API_URL": "https://api.qa.company.com"
}
},
"dev": {
"env": {
"API_URL": "http://locahost:3333/api"
}
}
}
}
}
Read more on different ways to use environment variables for cypress executor