From ad21fe0799ca39d5b04db9c2cbeb244f456c4840 Mon Sep 17 00:00:00 2001 From: ASHUTOSH KUMAR CHOUDHARY Date: Mon, 25 Apr 2022 12:22:40 +0530 Subject: [PATCH] chore(website): add some admonitions to 25.x (#12565) --- website/versioned_docs/version-25.x/CLI.md | 42 ++++- .../version-25.x/Configuration.md | 144 +++++++++++++++--- 2 files changed, 156 insertions(+), 30 deletions(-) diff --git a/website/versioned_docs/version-25.x/CLI.md b/website/versioned_docs/version-25.x/CLI.md index 458c41a5a502..5fbd6b2f4efe 100644 --- a/website/versioned_docs/version-25.x/CLI.md +++ b/website/versioned_docs/version-25.x/CLI.md @@ -98,7 +98,11 @@ jest --update-snapshot --detectOpenHandles ## Options -_Note: CLI options take precedence over values from the [Configuration](Configuration.md)._ +:::note + +CLI options take precedence over values from the [Configuration](Configuration.md). + +::: import TOCInline from '@theme/TOCInline'; @@ -118,7 +122,13 @@ Alias: `-b`. Exit the test suite immediately upon `n` number of failing test sui ### `--cache` -Whether to use the cache. Defaults to true. Disable the cache using `--no-cache`. _Note: the cache should only be disabled if you are experiencing caching related problems. On average, disabling the cache makes Jest at least two times slower._ +Whether to use the cache. Defaults to true. Disable the cache using `--no-cache`. + +:::note + +The cache should only be disabled if you are experiencing caching related problems. On average, disabling the cache makes Jest at least two times slower. + +::: If you want to inspect the cache, use `--showConfig` and look at the `cacheDirectory` value. If you need to clear the cache, use `--clearCache`. @@ -136,7 +146,13 @@ When this option is provided, Jest will assume it is running in a CI environment ### `--clearCache` -Deletes the Jest cache directory and then exits without running tests. Will delete `cacheDirectory` if the option is passed, or Jest's default cache directory. The default cache directory can be found by calling `jest --showConfig`. _Note: clearing the cache will reduce performance._ +Deletes the Jest cache directory and then exits without running tests. Will delete `cacheDirectory` if the option is passed, or Jest's default cache directory. The default cache directory can be found by calling `jest --showConfig`. + +:::caution + +Clearing the cache will reduce performance. + +::: ### `--clearMocks` @@ -198,7 +214,13 @@ Find and run the tests that cover a space separated list of source files that we ### `--forceExit` -Force Jest to exit after all tests have completed running. This is useful when resources set up by test code cannot be adequately cleaned up. _Note: This feature is an escape-hatch. If Jest doesn't exit at the end of a test run, it means external resources are still being held on to or timers are still pending in your code. It is advised to tear down external resources after each test to make sure Jest can shut down cleanly. You can use `--detectOpenHandles` to help track it down._ +Force Jest to exit after all tests have completed running. This is useful when resources set up by test code cannot be adequately cleaned up. + +:::note + +This feature is an escape-hatch. If Jest doesn't exit at the end of a test run, it means external resources are still being held on to or timers are still pending in your code. It is advised to tear down external resources after each test to make sure Jest can shut down cleanly. You can use `--detectOpenHandles` to help track it down. + +::: ### `--help` @@ -284,7 +306,11 @@ Alias: `-i`. Run all tests serially in the current process, rather than creating Run only the tests that were specified with their exact paths. -_Note: The default regex matching works fine on small runs, but becomes slow if provided with multiple patterns and/or against a lot of tests. This option replaces the regex matching logic and by that optimizes the time it takes Jest to filter specific test files_ +:::tip + +The default regex matching works fine on small runs, but becomes slow if provided with multiple patterns and/or against a lot of tests. This option replaces the regex matching logic and by that optimizes the time it takes Jest to filter specific test files. + +::: ### `--setupFilesAfterEnv ... ` @@ -319,7 +345,11 @@ The glob patterns Jest uses to detect test files. Please refer to the [`testMatc Alias: `-t`. Run only tests with a name that matches the regex. For example, suppose you want to run only tests related to authorization which will have names like `"GET /api/posts with auth"`, then you can use `jest -t=auth`. -_Note: The regex is matched against the full name, which is a combination of the test name and all its surrounding describe blocks._ +:::note + +The regex is matched against the full name, which is a combination of the test name and all its surrounding describe blocks. + +::: ### `--testPathIgnorePatterns=|[array]` diff --git a/website/versioned_docs/version-25.x/Configuration.md b/website/versioned_docs/version-25.x/Configuration.md index 6f9a9c607b1f..546b74d6ebac 100644 --- a/website/versioned_docs/version-25.x/Configuration.md +++ b/website/versioned_docs/version-25.x/Configuration.md @@ -97,9 +97,17 @@ test('if utils mocked automatically', () => { }); ``` -_Note: Node modules are automatically mocked when you have a manual mock in place (e.g.: `__mocks__/lodash.js`). More info [here](manual-mocks#mocking-node-modules)._ +:::note -_Note: Core modules, like `fs`, are not mocked by default. They can be mocked explicitly, like `jest.mock('fs')`._ +Node modules are automatically mocked when you have a manual mock in place (e.g.: `__mocks__/lodash.js`). More info [here](manual-mocks#mocking-node-modules). + +::: + +:::note + +Core modules, like `fs`, are not mocked by default. They can be mocked explicitly, like `jest.mock('fs')`. + +::: ### `bail` \[number | boolean] @@ -153,9 +161,17 @@ Example: This will collect coverage information for all the files inside the project's `rootDir`, except the ones that match `**/node_modules/**` or `**/vendor/**`. -_Note: Each glob pattern is applied in the order they are specified in the config. (For example `["!**/__tests__/**", "**/*.js"]` will not exclude `__tests__` because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after `**/*.js`.)_ +:::note + +Each glob pattern is applied in the order they are specified in the config. (For example `["!**/__tests__/**", "**/*.js"]` will not exclude `__tests__` because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after `**/*.js`.) + +::: -_Note: This option requires `collectCoverage` to be set to true or Jest to be invoked with `--coverage`._ +:::note + +This option requires `collectCoverage` to be set to true or Jest to be invoked with `--coverage`. + +:::
Help: @@ -205,7 +221,11 @@ Default: `["clover", "json", "lcov", "text"]` A list of reporter names that Jest uses when writing coverage reports. Any [istanbul reporter](https://github.com/istanbuljs/istanbuljs/tree/master/packages/istanbul-reports/lib) can be used. -_Note: Setting this option overwrites the default values. Add `"text"` or `"text-summary"` to see a coverage summary in the console output._ +:::note + +Setting this option overwrites the default values. Add `"text"` or `"text-summary"` to see a coverage summary in the console output. + +::: Additional options can be passed using the tuple form. For example, you may hide coverage report lines for all fully-covered files: @@ -416,11 +436,23 @@ Default: `undefined` This option allows the use of a custom global setup module which exports an async function that is triggered once before all test suites. This function gets Jest's `globalConfig` object as a parameter. -_Note: A global setup module configured in a project (using multi-project runner) will be triggered only when you run at least one test from this project._ +:::note + +A global setup module configured in a project (using multi-project runner) will be triggered only when you run at least one test from this project. + +::: -_Note: Any global variables that are defined through `globalSetup` can only be read in `globalTeardown`. You cannot retrieve globals defined here in your test suites._ +:::note -_Note: While code transformation is applied to the linked setup-file, Jest will **not** transform any code in `node_modules`. This is due to the need to load the actual transformers (e.g. `babel` or `typescript`) to perform transformation._ +Any global variables that are defined through `globalSetup` can only be read in `globalTeardown`. You cannot retrieve globals defined here in your test suites. + +::: + +:::note + +While code transformation is applied to the linked setup-file, Jest will **not** transform any code in `node_modules`. This is due to the need to load the actual transformers (e.g. `babel` or `typescript`) to perform transformation. + +::: Example: @@ -445,9 +477,17 @@ Default: `undefined` This option allows the use of a custom global teardown module which exports an async function that is triggered once after all test suites. This function gets Jest's `globalConfig` object as a parameter. -_Note: A global teardown module configured in a project (using multi-project runner) will be triggered only when you run at least one test from this project._ +:::tip + +A global teardown module configured in a project (using multi-project runner) will be triggered only when you run at least one test from this project. + +::: -_Note: The same caveat concerning transformation of `node_modules` as for `globalSetup` applies to `globalTeardown`._ +:::note + +The same caveat concerning transformation of `node_modules` as for `globalSetup` applies to `globalTeardown`. + +::: ### `haste` \[object] @@ -527,7 +567,11 @@ Example: The order in which the mappings are defined matters. Patterns are checked one by one until one fits. The most specific rule should be listed first. This is true for arrays of module names as well. -_Note: If you provide module name without boundaries `^$` it may cause hard to spot errors. E.g. `relay` will replace all modules which contain `relay` as a substring in its name: `relay`, `react-relay` and `graphql-relay` will all be pointed to your stub._ +:::caution + +If you provide module name without boundaries `^$` it may cause hard to spot errors. E.g. `relay` will replace all modules which contain `relay` as a substring in its name: `relay`, `react-relay` and `graphql-relay` will all be pointed to your stub. + +::: ### `modulePathIgnorePatterns` \[array<string>] @@ -625,7 +669,11 @@ The projects feature can also be used to run multiple configurations or multiple } ``` -_Note: When using multi-project runner, it's recommended to add a `displayName` for each project. This will show the `displayName` of a project next to its tests._ +:::note + +When using multi-project runner, it's recommended to add a `displayName` for each project. This will show the `displayName` of a project next to its tests. + +::: ### `reporters` \[array<moduleName | \[moduleName, options]>] @@ -747,7 +795,11 @@ The root directory that Jest should scan for tests and modules within. If you pu Oftentimes, you'll want to set this to `'src'` or `'lib'`, corresponding to where in your repository the code is stored. -_Note that using `''` as a string token in any other path-based config settings will refer back to this value. So, for example, if you want your [`setupFiles`](#setupfiles-array) config entry to point at the `env-setup.js` file at the root of your project, you could set its value to `["/env-setup.js"]`._ +:::note + +Using `''` as a string token in any other path-based config settings will refer back to this value. So, for example, if you want your [`setupFiles`](#setupfiles-array) config entry to point at the `env-setup.js` file at the root of your project, you could set its value to `["/env-setup.js"]`. + +::: ### `roots` \[array<string>] @@ -757,9 +809,17 @@ A list of paths to directories that Jest should use to search for files in. There are times where you only want Jest to search in a single sub-directory (such as cases where you have a `src/` directory in your repo), but prevent it from accessing the rest of the repo. -_Note: While `rootDir` is mostly used as a token to be re-used in other configuration options, `roots` is used by the internals of Jest to locate **test files and source files**. This applies also when searching for manual mocks for modules from `node_modules` (`__mocks__` will need to live in one of the `roots`)._ +:::note + +While `rootDir` is mostly used as a token to be re-used in other configuration options, `roots` is used by the internals of Jest to locate **test files and source files**. This applies also when searching for manual mocks for modules from `node_modules` (`__mocks__` will need to live in one of the `roots`). + +::: + +:::note + +By default, `roots` has a single entry `` but there are cases where you may want to have multiple roots within one project, for example `roots: ["/src/", "/tests/"]`. -_Note: By default, `roots` has a single entry `` but there are cases where you may want to have multiple roots within one project, for example `roots: ["/src/", "/tests/"]`._ +::: ### `runner` \[string] @@ -772,7 +832,11 @@ This option allows you to use a custom runner instead of Jest's default test run - [`jest-runner-tsc`](https://github.com/azz/jest-runner-tsc) - [`jest-runner-prettier`](https://github.com/keplersj/jest-runner-prettier) -_Note: The `runner` property value can omit the `jest-runner-` prefix of the package name._ +:::note + +The `runner` property value can omit the `jest-runner-` prefix of the package name. + +::: To write a test-runner, export a class with which accepts `globalConfig` in the constructor, and has a `runTests` method with the signature: @@ -805,7 +869,11 @@ If you want a path to be [relative to the root directory of your project](#rootd For example, Jest ships with several plug-ins to `jasmine` that work by monkey-patching the jasmine API. If you wanted to add even more jasmine plugins to the mix (or if you wanted some custom, project-wide matchers for example), you could do so in these modules. -_Note: `setupTestFrameworkScriptFile` is deprecated in favor of `setupFilesAfterEnv`._ +:::note + +`setupTestFrameworkScriptFile` is deprecated in favor of `setupFilesAfterEnv`. + +::: Example `setupFilesAfterEnv` array in a jest.config.js: @@ -943,7 +1011,11 @@ To use this class as your custom environment, refer to it by its full path withi */ ``` -_Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment._ +:::note + +TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment. + +::: Example: @@ -1013,7 +1085,11 @@ Default: `1` The exit code Jest returns on test failure. -_Note: This does not change the exit code in the case of Jest errors (e.g. invalid configuration)._ +:::note + +This does not change the exit code in the case of Jest errors (e.g. invalid configuration). + +::: ### `testMatch` [array<string>] @@ -1025,7 +1101,11 @@ See the [micromatch](https://github.com/micromatch/micromatch) package for detai See also [`testRegex` [string | array<string>]](#testregex-string--arraystring), but note that you cannot specify both options. -_Note: Each glob pattern is applied in the order they are specified in the config. (For example `["!**/__fixtures__/**", "**/__tests__/**/*.js"]` will not exclude `__fixtures__` because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after `**/__tests__/**/*.js`.)_ +:::note + +Each glob pattern is applied in the order they are specified in the config. (For example `["!**/__fixtures__/**", "**/__tests__/**/*.js"]` will not exclude `__fixtures__` because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after `**/__tests__/**/*.js`.) + +::: ### `testPathIgnorePatterns` \[array<string>] @@ -1053,7 +1133,11 @@ The following is a visualization of the default regex: └── component.js # not test ``` -_Note: `testRegex` will try to detect test files using the **absolute file path**, therefore, having a folder with a name that matches it will run all the files as tests_ +:::note + +`testRegex` will try to detect test files using the **absolute file path**, therefore, having a folder with a name that matches it will run all the files as tests + +::: ### `testResultsProcessor` \[string] @@ -1196,9 +1280,17 @@ Examples of such compilers include: You can pass configuration to a transformer like `{filePattern: ['path-to-transformer', {options}]}` For example, to configure babel-jest for non-default behavior, `{"\\.js$": ['babel-jest', {rootMode: "upward"}]}` -_Note: a transformer is only run once per file unless the file has changed. During the development of a transformer it can be useful to run Jest with `--no-cache` to frequently [delete Jest's cache](Troubleshooting.md#caching-issues)._ +:::tip -_Note: when adding additional code transformers, this will overwrite the default config and `babel-jest` is no longer automatically loaded. If you want to use it to compile JavaScript or Typescript, it has to be explicitly defined by adding `{"\\.[jt]sx?$": "babel-jest"}` to the transform property. See [babel-jest plugin](https://github.com/facebook/jest/tree/main/packages/babel-jest#setup)_ +A transformer is only run once per file unless the file has changed. During the development of a transformer it can be useful to run Jest with `--no-cache` to frequently [delete Jest's cache](Troubleshooting.md#caching-issues). + +::: + +:::note + +When adding additional code transformers, this will overwrite the default config and `babel-jest` is no longer automatically loaded. If you want to use it to compile JavaScript or Typescript, it has to be explicitly defined by adding `{"\\.[jt]sx?$": "babel-jest"}` to the transform property. See [babel-jest plugin](https://github.com/facebook/jest/tree/main/packages/babel-jest#setup). + +::: ### `transformIgnorePatterns` \[array<string>] @@ -1271,7 +1363,11 @@ Examples of watch plugins include: - [`jest-watch-typeahead`](https://github.com/jest-community/jest-watch-typeahead) - [`jest-watch-yarn-workspaces`](https://github.com/cameronhunter/jest-watch-directories/tree/master/packages/jest-watch-yarn-workspaces) -_Note: The values in the `watchPlugins` property value can omit the `jest-watch-` prefix of the package name._ +:::note + +The values in the `watchPlugins` property value can omit the `jest-watch-` prefix of the package name. + +::: ### `watchman` \[boolean]