{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/jest.json",
  "additionalProperties": true,
  "properties": {
    "automock": {
      "type": "boolean",
      "default": false,
      "description": "Whether all imported modules in your tests should be mocked automatically. All modules used in your tests will have a replacement implementation, keeping the API surface."
    },
    "bail": {
      "type": ["boolean", "number"],
      "default": 0,
      "description": "How many failures until jest stops running. Value of `true` is equivalent to 1."
    },
    "cacheDirectory": {
      "type": "string",
      "description": "The directory where Jest should store its cached dependency information."
    },
    "clearMocks": {
      "type": "boolean",
      "default": false,
      "description": "Whether to automatically clear mock calls and instances between every test."
    },
    "collectCoverage": {
      "type": "boolean",
      "default": false,
      "description": "Whether to collect coverage information while executing the test"
    },
    "collectCoverageFrom": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of glob patterns indicating a set of files for which coverage information should be collected."
    },
    "coverageDirectory": {
      "type": "string",
      "description": "The directory where Jest should output its coverage files."
    },
    "coveragePathIgnorePatterns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["/node_modules/"],
      "description": "An array of regexp pattern strings that will be ignored when calculating coverage"
    },
    "coverageProvider": {
      "type": "string",
      "enum": ["babel", "v8"],
      "default": "babel",
      "description": "Indicates which provider should be used to instrument code for coverage."
    },
    "coverageReporters": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": [
              {
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          }
        ]
      },
      "default": ["clover", "json", "lcov", "text"],
      "description": "A list of reporter names that Jest uses when writing coverage reports."
    },
    "coverageThreshold": {
      "type": "object",
      "description": "An object that configures minimum threshold enforcement for coverage results."
    },
    "dependencyExtractor": {
      "type": "string",
      "description": "Enable the use of a custom dependency extractor."
    },
    "displayName": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      ],
      "description": "A custom label that is printed alongside a test while it is running."
    },
    "errorOnDeprecated": {
      "type": "boolean",
      "default": false,
      "description": "Whether calling deprecated APIs should throw an error."
    },
    "extensionsToTreatAsEsm": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "Files extensions that Jest should treat as ESM."
    },
    "fakeTimers": {
      "type": "object",
      "default": {},
      "description": "Customize the behavior of fake timers."
    },
    "forceCoverageMatch": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [""],
      "description": "A list of regexp strings are added to code coverage; this overrides any previous ignored file patterns"
    },
    "globals": {
      "type": "object",
      "default": {},
      "description": "A set of global variables that need to be available in all test environments."
    },
    "globalSetup": {
      "type": "string",
      "description": "Use a custom global setup module to setup the global environment."
    },
    "globalTeardown": {
      "type": "string",
      "description": "Use a custom global teardown module to teardown the global environment."
    },
    "haste": {
      "type": "object",
      "properties": {
        "computeSha1": {
          "type": "boolean",
          "description": "Whether to hash functions using SHA1"
        },
        "defaultPlatform": {
          "type": ["string", "null"],
          "description": "The default platform"
        },
        "forceNodeFilesystemAPI": {
          "type": "boolean",
          "description": "Whether to use Node's filesystem API instead of shelling out to `find`"
        },
        "enableSymlinks": {
          "type": "boolean",
          "description": "Whether to follow symlinks when crawling the filesystem. This option cannot be used in projects that use watachman."
        },
        "hasteImplModulePath": {
          "type": "string",
          "description": "Path to a custom implementation of Haste."
        },
        "platforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of platforms to target."
        },
        "throwOnModuleCollision": {
          "type": "boolean",
          "description": "Whether to throw an error on module collision"
        },
        "hasteMapModulePath": {
          "type": "string",
          "description": "Path to a custom implementation of HasteMap."
        },
        "retainAllFiles": {
          "type": "boolean",
          "description": "Whether to retain all files, allowing e.g. search for tests in `node_modules`."
        }
      },
      "description": "Customize `jest-haste-map`, Jest's internal file crawler/cache system"
    },
    "injectGlobals": {
      "type": "boolean",
      "default": true,
      "description": "Whether to inject global variables into the global environment. Only supported if using the default `jest-circus` test runner."
    },
    "maxConcurrency": {
      "type": "number",
      "default": 5,
      "description": "A number limiting the number of tests that are allowed to run at the same time when using `test.concurrent`. Any test above this limit will be queued and executed once a slot is released."
    },
    "maxWorkers": {
      "type": ["number", "string"],
      "description": "Specifies the maximum number of workers the worker-pool will spawn for running tests."
    },
    "moduleDirectories": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["node_modules"],
      "description": "An array of directory names to be searched recursively up from the requiring module's location."
    },
    "moduleFileExtensions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["js", "mjs", "cjs", "jsx", "ts", "tsx", "json", "node"],
      "description": "An array of file extensions your modules use."
    },
    "moduleNameMapper": {
      "type": "object",
      "description": "A map from regular expressions to module names that allow to stub out resources, like images or styles with a single module."
    },
    "modulePathIgnorePatterns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "An array of regexp pattern strings that are matched against all module paths before those paths are to be considered 'visible' to the module loader."
    },
    "modulePaths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "An array of directory names that should be used when resolving modules. This is an alternative API to `NODE_PATH`."
    },
    "notify": {
      "type": "boolean",
      "default": false,
      "description": "Whether to use native OS notifications for test results. This requires the installation of the `node-notifier` package"
    },
    "notifyMode": {
      "type": "string",
      "enum": [
        "always",
        "failure",
        "success",
        "change",
        "success-change",
        "failure-change"
      ],
      "enumDescriptions": [
        "Always send a notification.",
        "Send a notification when tests fail.",
        "Send a notification when tests pass.",
        "Send a notification when the status changed.",
        "Send a notification when tests pass or once when it fails.",
        "Send a notification when tests fail or once when it passes."
      ],
      "default": "failure",
      "description": "Specifies when notifications should be triggered."
    },
    "openHandlesTimeout": {
      "type": "number",
      "default": 1000,
      "description": "Print a warning indicating that there are probable open handles if Jest does not exit cleanly this number of milliseconds after it completes. Use `0` to disable the warning."
    },
    "preset": {
      "type": "string",
      "description": "A preset that is used as a base for Jest's configuration."
    },
    "prettierPath": {
      "type": ["string", "null"],
      "description": "The path to a module that exports an object with a `format` method."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Jest will run tests in all of these specified projects at the same time."
    },
    "randomize": {
      "type": "boolean",
      "default": false,
      "description": "Whether to randomize the order of the tests in a file."
    },
    "reporters": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": [
              {
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          }
        ]
      },
      "default": ["default"],
      "description": "A list of reporter names (and configuration) that Jest can use."
    },
    "resetMocks": {
      "type": "boolean",
      "default": false,
      "description": "Automatically reset mock state before every test."
    },
    "resetModules": {
      "type": "boolean",
      "default": false,
      "description": "By default, each test file gets its own independent module registry. Setting this option to `true` resets the module registry before running each individual tes"
    },
    "resolver": {
      "type": "string",
      "description": "Use a custom resolver."
    },
    "restoreMocks": {
      "type": "boolean",
      "default": false,
      "description": "Automatically restore mock state and implementation before every test."
    },
    "rootDir": {
      "type": "string",
      "description": "The root directory that Jest should scan for tests and modules within."
    },
    "roots": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["<rootDir>"],
      "description": "A list of paths to directories that Jest should use to search for files in."
    },
    "runner": {
      "type": "string",
      "default": "jest-runner",
      "examples": [
        "jest-runner-eslint",
        "jest-runner-mocha",
        "jest-runner-tsc",
        "jest-runner-prettier"
      ],
      "description": "The test environment that will be used for testing."
    },
    "extraGlobals": {
      "description": "DEPRECATED. Renamed to `sandboxInjectedGlobals` in Jest 28",
      "deprecated": true
    },
    "sandboxInjectedGlobals": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of extra properties to be defined in the vm for faster lookups."
    },
    "setupFiles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "A list of paths to modules that run some code to configure or set up the testing environment."
    },
    "setupFilesAfterEnv": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "A list of paths to modules that run some code to configure or set up the testing framework before each test file in the suite is executed."
    },
    "showSeed": {
      "type": "boolean",
      "default": false,
      "description": "Whether to print the seed in the test report summary."
    },
    "slowTestThreshold": {
      "type": "number",
      "default": 5,
      "description": "The number of seconds after which a test is considered as slow and reported as such in the results."
    },
    "snapshotFormat": {
      "type": "object",
      "default": { "escapeString": false, "printBasicPrototype": false },
      "description": "Allows overriding specific snapshot formatting options documented in the `pretty-format readme`."
    },
    "snapshotResolver": {
      "type": "string",
      "description": "The path to a module that can resolve test<->snapshot path. This config option lets you customize where Jest stores snapshot files on disk."
    },
    "snapshotSerializers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "A list of paths to snapshot serializer modules Jest should use for snapshot testing."
    },
    "testEnvironment": {
      "type": "string",
      "default": "node",
      "description": "The test environment that will be used for testing."
    },
    "testEnvironmentOptions": {
      "type": "object",
      "default": {},
      "description": "Options that will be passed to the `testEnvironment`."
    },
    "testFailureExitCode": {
      "type": "number",
      "default": 1,
      "description": "Exit code of `jest` command if the test run failed."
    },
    "testMatch": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [
        "**/__tests__/**/*.[jt]s?(x)",
        "**/?(*.)+(spec|test).[jt]s?(x)"
      ],
      "description": "The glob patterns Jest uses to detect test files."
    },
    "testPathIgnorePatterns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["/node_modules/"],
      "description": "An array of regexp pattern strings that are matched against all test paths before executing the test. If the test path matches any of the patterns, it will be skipped."
    },
    "testRegex": {
      "type": "string",
      "default": "(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$",
      "description": "The pattern or patterns Jest uses to detect test files."
    },
    "testResultsProcessor": {
      "type": "string",
      "description": "Use a custom results processor."
    },
    "testRunner": {
      "type": "string",
      "default": "jest-circus/runner",
      "description": "Use a custom test runner. "
    },
    "testSequencer": {
      "type": "string",
      "default": "@jest/test-sequencer",
      "description": "Use a custom test sequencer."
    },
    "testTimeout": {
      "type": "number",
      "default": 5000,
      "description": "Default timeout of a test in milliseconds."
    },
    "transform": {
      "type": "object",
      "description": "A map from regular expressions to paths to transformers."
    },
    "transformIgnorePatterns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["/node_modules/", "\\.pnp\\.[^\\\/]+$"],
      "description": "An array of regexp pattern strings that are matched against all source file paths before transformation. If the file path matches any of the patterns, it will not be transformed."
    },
    "unmockedModulePathPatterns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them. If a module's path matches any of the patterns in this list, it will not be automatically mocked by the module loader."
    },
    "verbose": {
      "type": "boolean",
      "description": "Indicates whether each individual test should be reported during the run. All errors will also still be shown on the bottom after execution."
    },
    "watchPathIgnorePatterns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "An array of RegExp patterns that are matched against all source file paths before re-running tests in watch mode. If the file path matches any of the patterns, when it is updated, it will not trigger a re-run of tests."
    },
    "watchPlugins": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "examples": [
        ["jest-watch-master"],
        ["jest-watch-select-projects"],
        ["jest-watch-suspend"],
        ["jest-watch-typeahead"],
        ["jest-watch-yarn-workspaces"]
      ],
      "description": "Enable custom watch plugins"
    },
    "watchman": {
      "type": "boolean",
      "default": true,
      "description": "Whether to use `watchman` for file crawling."
    },
    "workerIdleMemoryLimit": {
      "type": ["number", "string"],
      "description": "Specifies the memory limit for workers before they are recycled."
    },
    "//": {
      "type": "string",
      "description": "Comment"
    },
    "workerThreads": {
      "type": "boolean",
      "default": false,
      "description": "Whether to use worker threads for parallelization. Child processes are used by default."
    }
  },
  "type": "object"
}
