Skip to content

Commit

Permalink
feat(testing): renamed cypress-e2e-configuration to configuration to …
Browse files Browse the repository at this point in the history
…maintain consistency between plugins (#17998)
  • Loading branch information
jaysoo authored Jul 7, 2023
1 parent d0c3772 commit 9940a0c
Show file tree
Hide file tree
Showing 37 changed files with 222 additions and 65 deletions.
12 changes: 6 additions & 6 deletions docs/generated/manifests/menus.json
Original file line number Diff line number Diff line change
Expand Up @@ -4647,17 +4647,17 @@
"disableCollapsible": false
},
{
"id": "cypress-e2e-configuration",
"path": "/packages/cypress/generators/cypress-e2e-configuration",
"name": "cypress-e2e-configuration",
"id": "configuration",
"path": "/packages/cypress/generators/configuration",
"name": "configuration",
"children": [],
"isExternal": false,
"disableCollapsible": false
},
{
"id": "cypress-component-configuration",
"path": "/packages/cypress/generators/cypress-component-configuration",
"name": "cypress-component-configuration",
"id": "component-configuration",
"path": "/packages/cypress/generators/component-configuration",
"name": "component-configuration",
"children": [],
"isExternal": false,
"disableCollapsible": false
Expand Down
20 changes: 10 additions & 10 deletions docs/generated/manifests/packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -483,22 +483,22 @@
"path": "/packages/cypress/generators/cypress-project",
"type": "generator"
},
"/packages/cypress/generators/cypress-e2e-configuration": {
"/packages/cypress/generators/configuration": {
"description": "Add a Cypress E2E Configuration to an existing project.",
"file": "generated/packages/cypress/generators/cypress-e2e-configuration.json",
"file": "generated/packages/cypress/generators/configuration.json",
"hidden": false,
"name": "cypress-e2e-configuration",
"originalFilePath": "/packages/cypress/src/generators/cypress-e2e-configuration/schema.json",
"path": "/packages/cypress/generators/cypress-e2e-configuration",
"name": "configuration",
"originalFilePath": "/packages/cypress/src/generators/configuration/schema.json",
"path": "/packages/cypress/generators/configuration",
"type": "generator"
},
"/packages/cypress/generators/cypress-component-configuration": {
"/packages/cypress/generators/component-configuration": {
"description": "Set up Cypress Component Test for a project",
"file": "generated/packages/cypress/generators/cypress-component-configuration.json",
"file": "generated/packages/cypress/generators/component-configuration.json",
"hidden": true,
"name": "cypress-component-configuration",
"originalFilePath": "/packages/cypress/src/generators/cypress-component-configuration/schema.json",
"path": "/packages/cypress/generators/cypress-component-configuration",
"name": "component-configuration",
"originalFilePath": "/packages/cypress/src/generators/component-configuration/schema.json",
"path": "/packages/cypress/generators/component-configuration",
"type": "generator"
},
"/packages/cypress/generators/migrate-to-cypress-11": {
Expand Down
16 changes: 8 additions & 8 deletions docs/generated/packages-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -477,20 +477,20 @@
},
{
"description": "Add a Cypress E2E Configuration to an existing project.",
"file": "generated/packages/cypress/generators/cypress-e2e-configuration.json",
"file": "generated/packages/cypress/generators/configuration.json",
"hidden": false,
"name": "cypress-e2e-configuration",
"originalFilePath": "/packages/cypress/src/generators/cypress-e2e-configuration/schema.json",
"path": "cypress/generators/cypress-e2e-configuration",
"name": "configuration",
"originalFilePath": "/packages/cypress/src/generators/configuration/schema.json",
"path": "cypress/generators/configuration",
"type": "generator"
},
{
"description": "Set up Cypress Component Test for a project",
"file": "generated/packages/cypress/generators/cypress-component-configuration.json",
"file": "generated/packages/cypress/generators/component-configuration.json",
"hidden": true,
"name": "cypress-component-configuration",
"originalFilePath": "/packages/cypress/src/generators/cypress-component-configuration/schema.json",
"path": "cypress/generators/cypress-component-configuration",
"name": "component-configuration",
"originalFilePath": "/packages/cypress/src/generators/component-configuration/schema.json",
"path": "cypress/generators/component-configuration",
"type": "generator"
},
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"name": "component-configuration",
"aliases": ["cypress-component-configuration"],
"factory": "./src/generators/component-configuration/component-configuration",
"schema": {
"$schema": "http://json-schema.org/schema",
"$id": "NxCypressComponentConfiguration",
"cli": "nx",
"title": "Set up Cypress component testing for a project",
"description": "Set up Cypress component test for a project.",
"type": "object",
"examples": [
{
"command": "nx g @nx/cypress:component-configuration --project=my-cool-lib ",
"description": "Add cypress component testing to an existing project named my-cool-lib"
}
],
"properties": {
"project": {
"type": "string",
"description": "The name of the project to add cypress component testing to",
"$default": { "$source": "projectName" },
"x-prompt": "What project should we add Cypress component testing to?"
},
"bundler": {
"description": "The Cypress bundler to use.",
"type": "string",
"enum": ["vite", "webpack"],
"x-prompt": "Which Cypress bundler do you want to use for the dev-server?",
"default": "webpack"
},
"directory": {
"type": "string",
"description": "A directory where the project is placed relative from the project root",
"default": "cypress"
}
},
"required": ["project"],
"examplesFile": "This is a framework-agnostic generator for adding component testing to a project.\n\n```bash\nnx g cypress-component-configuration --project=my-cool-project\n```\n\nRunning this generator, adds the required files to the specified project without any configurations for Cypress. It's best to use the framework specific generator, instead `cypress-component-configuration` directly\n\n- [React component testing](/packages/react/generators/cypress-component-configuration)\n- [Angular component testing](/packages/angular/generators/cypress-component-configuration)\n\nA new `component-test` target will be added to the specified project.\n\n```bash\nnx g component-test my-cool-project\n```\n\nRead more about [Cypress Component Testing](/cypress/cypress-component-testing)\n",
"presets": []
},
"description": "Set up Cypress Component Test for a project",
"hidden": true,
"implementation": "/packages/cypress/src/generators/component-configuration/component-configuration.ts",
"path": "/packages/cypress/src/generators/component-configuration/schema.json",
"type": "generator"
}
95 changes: 95 additions & 0 deletions docs/generated/packages/cypress/generators/configuration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
{
"name": "configuration",
"aliases": ["cypress-e2e-configuration", "e2e", "e2e-config"],
"factory": "./src/generators/configuration/configuration",
"schema": {
"$schema": "http://json-schema.org/schema",
"$id": "NxCypressE2EConfigGenerator",
"cli": "nx",
"title": "Add a Cypress Configuration.",
"description": "Add a Cypress configuration to an existing project.",
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The project to add a Cypress configuration to",
"$default": { "$source": "projectName" },
"x-priority": "important",
"x-prompt": "What project do you want to add Cypress to?"
},
"devServerTarget": {
"type": "string",
"description": "A devServerTarget,'<projectName>:<targetName>[:<configName>], that will be used to run tests against. This is usually the app this project will be used in. Pass --baseUrl if you wish to not use a devServerTarget.",
"x-priority": "important"
},
"port": {
"oneOf": [
{ "type": "string", "enum": ["cypress-auto"] },
{ "type": "number" }
],
"description": "Set the 'port' option on the e2e target. It's recommend to set a different port so you can run tests e2e targets in parallel. Most dev servers support using '0' to automatically find a free port. The value 'cypress-auto' can be used if the underlying dev server does not support automatically finding a free port.",
"x-priority": "important"
},
"baseUrl": {
"type": "string",
"description": "The address (with the port) which your application is running on. If you wish to start your application when running the e2e target, then use --devServerTarget instead."
},
"directory": {
"type": "string",
"description": "A directory where the project is placed relative from the project root",
"x-priority": "important",
"default": "cypress"
},
"linter": {
"description": "The tool to use for running lint checks.",
"type": "string",
"enum": ["eslint", "none"],
"default": "eslint"
},
"js": {
"description": "Generate JavaScript files rather than TypeScript files.",
"type": "boolean",
"default": false
},
"skipFormat": {
"description": "Skip formatting files.",
"type": "boolean",
"default": false,
"x-priority": "internal"
},
"setParserOptionsProject": {
"type": "boolean",
"description": "Whether or not to configure the ESLint `parserOptions.project` option. We do not do this by default for lint performance reasons.",
"default": false
},
"skipPackageJson": {
"type": "boolean",
"default": false,
"description": "Do not add dependencies to `package.json`.",
"x-priority": "internal"
},
"rootProject": {
"description": "Create a application at the root of the workspace",
"type": "boolean",
"default": false,
"hidden": true,
"x-priority": "internal"
},
"bundler": {
"description": "The Cypress bundler to use.",
"type": "string",
"enum": ["vite", "webpack", "none"],
"x-prompt": "Which Cypress bundler do you want to use?",
"default": "webpack"
}
},
"required": ["project"],
"examplesFile": "This is a generator to add a cypress e2e configuration to an existing project.\n\n```bash\nnx g @nx/cypress:configuration --project=my-cool-project --devServerTarget=some-app:serve\n```\n\nRunning this generator, adds the required files to run cypress tests for a project,\nMainly a `cypress.config.ts` file and default files in the `<project-root>/cypress/` directory.\nTests will be located in `<project-root>/cypress/e2e/*` by default.\n\nYou can customize the directory used via the `--directory` flag, the value is relative to the project root.\n\nFor example if you wanted to place the files inside an `e2e` folder\n\n```bash\nnx g @nx/cypress:configuration --project=my-cool-project --devServerTarget=some-app:serve --directory=e2e\n```\n\nProviding a `--devServerTarget` is optional if you provide a `--baseUrl` or the project you're adding the configuration to has a `serve` target already.\nOtherwise, a `--devServerTarget` is recommend for the `@nx/cypress:cypress` executor to spin up the dev server for you automatically when needed.\n\n## Feature Based Testing\n\nThis generator helps in creating feature based e2e/integration testing setups where you can place the feature tests in the same project as the feature library.\nThis differs from creating a separate e2e project that contained all tests for an application which can easily cause more tests to run than is strictly necessary.\n\nTake the following workspace where the `feature-cart` project is affected.\n\n{% graph height=\"450px\" %}\n\n```json\n{\n \"projects\": [\n {\n \"type\": \"app\",\n \"name\": \"fancy-app\",\n \"data\": {\n \"tags\": []\n }\n },\n {\n \"type\": \"app\",\n \"name\": \"fancy-app-e2e\",\n \"data\": {\n \"tags\": []\n }\n },\n {\n \"type\": \"lib\",\n \"name\": \"feature-user\",\n \"data\": {\n \"tags\": []\n }\n },\n {\n \"type\": \"lib\",\n \"name\": \"feature-dashboard\",\n \"data\": {\n \"tags\": []\n }\n },\n {\n \"type\": \"lib\",\n \"name\": \"feature-cart\",\n \"data\": {\n \"tags\": []\n }\n }\n ],\n \"groupByFolder\": false,\n \"workspaceLayout\": {\n \"appsDir\": \"apps\",\n \"libsDir\": \"libs\"\n },\n \"dependencies\": {\n \"fancy-app\": [\n {\n \"target\": \"feature-user\",\n \"source\": \"fancy-app\",\n \"type\": \"static\"\n },\n {\n \"target\": \"feature-cart\",\n \"source\": \"fancy-app\",\n \"type\": \"static\"\n }\n ],\n \"fancy-app-e2e\": [\n {\n \"target\": \"fancy-app\",\n \"source\": \"fancy-app-e2e\",\n \"type\": \"implicit\"\n }\n ],\n \"feature-user\": [\n {\n \"target\": \"feature-dashboard\",\n \"source\": \"feature-user\",\n \"type\": \"direct\"\n }\n ],\n \"feature-cart\": [],\n \"feature-dashboard\": []\n },\n \"affectedProjectIds\": [\"feature-cart\", \"fancy-app\", \"fancy-app-e2e\"]\n}\n```\n\n{% /graph %}\n\nIn this case, if tests for the all the `feature-*` projects where contained in the `fancy-app-e2e` project, then all of those features will be tested in the app, when only the `feature-cart` tests need to run.\n\nRunning these e2e/integration tests more often than they should results in longer CI times.\n\nBrining those e2e test closer to each feature can result is lowering CI times since we don't need to test those features if they did not change.\n\nBuilding this way leaves the `fancy-app-e2e` for mostly smoke type testing instead of more in-depth feature testing.\n\nUsing the `@nx/cypress:configuration` generator can help you accomplish this in your workspace.\n\n```bash\nnx g @nx/cypress:configuration --project=feature-cart --devServerTarget=fancy-app:serve\nnx g @nx/cypress:configuration --project=feature-user --devServerTarget=fancy-app:serve\nnx g @nx/cypress:configuration --project=feature-dashboard --devServerTarget=fancy-app:serve\n```\n\nEach project will now get their own `e2e` target, where the feature project is only concerned with itself. This allows for more focused tests without worrying about forcing unrelated tests to also run.\n\nIt's important to remember that these feature tests are still going to be leveraging the same app to run the tests against so if you plan to run in parallel, you can leverage using a file server and the ability for `@nx/cypress:cypress` executor to pass through a port or find a free port to allow running tests in parallel. Read more [about the --port flag](/packages/cypress/executors/cypress#port)\n",
"presets": []
},
"description": "Add a Cypress E2E Configuration to an existing project.",
"implementation": "/packages/cypress/src/generators/configuration/configuration.ts",
"hidden": false,
"path": "/packages/cypress/src/generators/configuration/schema.json",
"type": "generator"
}
4 changes: 2 additions & 2 deletions docs/shared/reference/sitemap.md
Original file line number Diff line number Diff line change
Expand Up @@ -330,8 +330,8 @@
- [generators](/packages/cypress/generators)
- [init](/packages/cypress/generators/init)
- [cypress-project](/packages/cypress/generators/cypress-project)
- [cypress-e2e-configuration](/packages/cypress/generators/cypress-e2e-configuration)
- [cypress-component-configuration](/packages/cypress/generators/cypress-component-configuration)
- [configuration](/packages/cypress/generators/configuration)
- [component-configuration](/packages/cypress/generators/component-configuration)
- [migrate-to-cypress-11](/packages/cypress/generators/migrate-to-cypress-11)
- [detox](/packages/detox)
- [documents](/packages/detox/documents)
Expand Down
4 changes: 4 additions & 0 deletions nx-dev/nx-dev/redirect-rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,10 @@ const schemaUrls = {
'/react-native/start': '/packages/react-native/executors/start',
'/react-native/storybook': '/packages/react-native/executors/storybook',
'/react-native/sync-deps': '/packages/react-native/executors/sync-deps',
'/packages/cypress/generators/cypress-e2e-configuration':
'/packages/cypress/generators/configuration',
'/packages/cypress/generators/cypress-component-configuration':
'/packages/cypress/generators/component-configuration',
'/packages/nx-plugin/generators/executor':
'/packages/plugin/generators/executor',
'/packages/nx-plugin/generators/migration':
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { cypressComponentConfiguration as baseCyCTConfig } from '@nx/cypress';
import { componentConfigurationGenerator as baseCyCTConfig } from '@nx/cypress';
import {
addDefaultCTConfig,
addMountDefinition,
Expand Down
12 changes: 6 additions & 6 deletions packages/cypress/docs/cypress-e2e-config-examples.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
This is a generator to add a cypress e2e configuration to an existing project.

```bash
nx g cypress-e2e-configuration --project=my-cool-project --devServerTarget=some-app:serve
nx g @nx/cypress:configuration --project=my-cool-project --devServerTarget=some-app:serve
```

Running this generator, adds the required files to run cypress tests for a project,
Expand All @@ -13,7 +13,7 @@ You can customize the directory used via the `--directory` flag, the value is re
For example if you wanted to place the files inside an `e2e` folder

```bash
nx g cypress-e2e-configuration --project=my-cool-project --devServerTarget=some-app:serve --directory=e2e
nx g @nx/cypress:configuration --project=my-cool-project --devServerTarget=some-app:serve --directory=e2e
```

Providing a `--devServerTarget` is optional if you provide a `--baseUrl` or the project you're adding the configuration to has a `serve` target already.
Expand Down Expand Up @@ -116,12 +116,12 @@ Brining those e2e test closer to each feature can result is lowering CI times si

Building this way leaves the `fancy-app-e2e` for mostly smoke type testing instead of more in-depth feature testing.

Using the `cypress-e2e-configuration` generator can help you accomplish this in your workspace.
Using the `@nx/cypress:configuration` generator can help you accomplish this in your workspace.

```bash
nx g cypress-e2e-configuration --project=feature-cart --devServerTarget=fancy-app:serve
nx g cypress-e2e-configuration --project=feature-user --devServerTarget=fancy-app:serve
nx g cypress-e2e-configuration --project=feature-dashboard --devServerTarget=fancy-app:serve
nx g @nx/cypress:configuration --project=feature-cart --devServerTarget=fancy-app:serve
nx g @nx/cypress:configuration --project=feature-user --devServerTarget=fancy-app:serve
nx g @nx/cypress:configuration --project=feature-dashboard --devServerTarget=fancy-app:serve
```

Each project will now get their own `e2e` target, where the feature project is only concerned with itself. This allows for more focused tests without worrying about forcing unrelated tests to also run.
Expand Down
Loading

1 comment on commit 9940a0c

@vercel
Copy link

@vercel vercel bot commented on 9940a0c Jul 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

nx-dev – ./

nx-five.vercel.app
nx.dev
nx-dev-git-master-nrwl.vercel.app
nx-dev-nrwl.vercel.app

Please sign in to comment.