{
  "$id": "JestRunnerSchema",
  "title": "Jest runner for build facade",
  "description": "Jest runner options",
  "properties": {
    "config": {
      "description": "Path to jest config file, or a Jest configuration object. If not specified, Jest will look for jest.config.js in the project root.",
      "type": ["string", "object"],
      "default": "jest.config.js"
    },
    "globalMocks": {
      "description": "Enabled global mocks. Only 'matchMedia' is supported in v21+.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": ["matchMedia"]
      },
      "default": ["matchMedia"]
    },
    "zoneless": {
      "description": "Use zoneless testing environment. When true (default), configures Jest for Angular 21+ zoneless applications. When false, configures Jest for applications that require zone.js change detection.",
      "type": "boolean",
      "default": true
    },
    "all": {
      "description": "The opposite of `onlyChanged`. If `onlyChanged` is set by default, running jest with `--all` will force Jest to run all tests instead of running only tests related to changed files."
    },
    "automock": {
      "description": "Automock all files by default.",
      "type": "boolean"
    },
    "bail": {
      "alias": "b",
      "description": "Exit the test suite immediately upon the first failing test.",
      "type": "boolean"
    },
    "cache": {
      "description": "Whether to use the transform cache. Disable the cache using --no-cache.",
      "type": "boolean"
    },
    "cacheDirectory": {
      "description": "The directory where Jest should store its cached  dependency information.",
      "type": "string"
    },
    "changedFilesWithAncestor": {
      "description": "Runs tests related to the current changes and the changes made in the last commit. Behaves similarly to `--onlyChanged`.",
      "type": "boolean"
    },
    "changedSince": {
      "description": "Runs tests related the changes since the provided branch. If the current branch has diverged from the given branch, then only changes made locally will be tested. Behaves similarly to `--onlyChanged`.",
      "nargs": 1,
      "type": "string"
    },
    "ci": {
      "default": false,
      "description": "Whether to run Jest in continuous integration (CI) mode.",
      "type": "boolean"
    },
    "clearCache": {
      "description": "Clears the configured Jest cache directory and then exits. Default directory can be found by calling jest --showConfig",
      "type": "boolean"
    },
    "clearMocks": {
      "description": "Automatically clear mock calls and instances between every test. Equivalent to calling jest.clearAllMocks() between each test.",
      "type": "boolean"
    },
    "collectCoverage": {
      "description": "Alias for --coverage.",
      "type": "boolean"
    },
    "collectCoverageFrom": {
      "description": "An array of glob patterns indicating a set of files for which coverage information should be collected. If a file matches the specified glob pattern, coverage information will be collected for it even if no tests exist for this file and it's never required in the test suite",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "color": {
      "description": "Forces test results output color highlighting (even if stdout is not a TTY). Set to false if you would like to have no colors.",
      "type": "boolean"
    },
    "colors": {
      "description": "Alias for `--color`.",
      "type": "boolean"
    },
    "coverage": {
      "description": "Indicates that test coverage information should be collected and reported in the output.",
      "type": "boolean"
    },
    "coverageDirectory": {
      "description": "The directory where Jest should output its coverage files.",
      "type": "string"
    },
    "coveragePathIgnorePatterns": {
      "description": "An array of regexp pattern strings that are matched against all file paths before executing the test. If the file pathmatches any of the patterns, coverage information will be skipped.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "coverageReporters": {
      "description": "A list of reporter names that Jest uses when writing coverage reports. Any istanbul reporter can be used.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "coverageThreshold": {
      "description": "A JSON string with which will be used to configure minimum threshold enforcement for coverage results",
      "type": "string"
    },
    "coverageProvider": {
      "description": "Select between Babel and V8 to collect coverage.",
      "type": "string",
      "enum": ["babel", "v8"]
    },
    "debug": {
      "description": "Print debugging info about your jest config.",
      "type": "boolean"
    },
    "detectLeaks": {
      "default": false,
      "description": "**EXPERIMENTAL**: Detect memory leaks in tests. After executing a test, it will try to garbage collect the global object used, and fail if it was leaked",
      "type": "boolean"
    },
    "detectOpenHandles": {
      "default": false,
      "description": "Print out remaining open handles preventing Jest from exiting at the end of a test run.",
      "type": "boolean"
    },
    "env": {
      "description": "The test environment used for all tests. This can point to any file or node module. Examples: `jsdom`, `node` or `path/to/my-environment.js`",
      "type": "string"
    },
    "errorOnDeprecated": {
      "default": false,
      "description": "Make calling deprecated APIs throw helpful error messages.",
      "type": "boolean"
    },
    "expand": {
      "alias": "e",
      "description": "Use this flag to show full diffs instead of a patch.",
      "type": "boolean"
    },
    "filter": {
      "description": "Path to a module exporting a filtering function. This method receives a list of tests which can be manipulated to exclude tests from running. Especially useful when used in conjunction with a testing infrastructure to filter known broken tests.",
      "type": "string"
    },
    "findRelatedTests": {
      "description": "Find related tests for a list of source files that were passed in as arguments. Useful for pre-commit hook integration to run the minimal amount of tests necessary.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "forceExit": {
      "description": "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.",
      "type": "boolean"
    },
    "globalSetup": {
      "description": "The path to a module that runs before All Tests.",
      "type": "string"
    },
    "globalTeardown": {
      "description": "The path to a module that runs after All Tests.",
      "type": "string"
    },
    "globals": {
      "description": "A JSON string with map of global variables that need to be available in all test environments.",
      "type": "string"
    },
    "haste": {
      "description": "A JSON string with map of variables for the haste module system",
      "type": "string"
    },
    "ignoreProjects": {
      "description": "Ignore the tests of the specified projects. Jest uses the attribute `displayName` in the configuration to identify each project.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "injectGlobals": {
      "description": "Should Jest inject global variables or not.",
      "type": "boolean"
    },
    "json": {
      "description": "Prints the test results in JSON. This mode will send all other test output and user messages to stderr.",
      "type": "boolean"
    },
    "lastCommit": {
      "description": "Run all tests affected by file changes in the last commit made. Behaves similarly to `--onlyChanged`.",
      "type": "boolean"
    },
    "listTests": {
      "default": false,
      "description": "Lists all tests Jest will run given the arguments and exits. Most useful in a CI system together with `--findRelatedTests` to determine the tests Jest will run based on specific files",
      "type": "boolean"
    },
    "logHeapUsage": {
      "description": "Logs the heap usage after every test. Useful to debug memory leaks. Use together with `--runInBand` and `--expose-gc` in node.",
      "type": "boolean"
    },
    "maxConcurrency": {
      "description": "Specifies the maximum number of tests that are allowed to run concurrently. This only affects tests using `test.concurrent`.",
      "type": "number"
    },
    "maxWorkers": {
      "alias": "w",
      "description": "Specifies the maximum number of workers the worker-pool will spawn for running tests. This defaults to the number of the cores available on your machine. (its usually best not to override this default)",
      "type": ["integer", "string"]
    },
    "moduleDirectories": {
      "description": "An array of directory names to be searched recursively up from the requiring module's location.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "moduleFileExtensions": {
      "description": "An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. ",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "moduleNameMapper": {
      "description": "A JSON string with a map from regular expressions to module names that allow to stub out resources, like images or styles with a single module",
      "type": "string"
    },
    "modulePathIgnorePatterns": {
      "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.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "modulePaths": {
      "description": "An alternative API to setting the NODE_PATH env variable, modulePaths is an array of absolute paths to additional locations to search when resolving modules.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "noStackTrace": {
      "description": "Disables stack trace in test results output",
      "type": "boolean"
    },
    "notify": {
      "description": "Activates notifications for test results.",
      "type": "boolean"
    },
    "notifyMode": {
      "default": "failure-change",
      "description": "Specifies when notifications will appear for test results.",
      "type": "string"
    },
    "onlyChanged": {
      "alias": "o",
      "description": "Attempts to identify which tests to run based on which files have changed in the current repository. Only works if you're running tests in a git or hg repository at the moment.",
      "type": "boolean"
    },
    "onlyFailures": {
      "alias": "f",
      "description": "Run tests that failed in the previous execution.",
      "type": "boolean"
    },
    "openHandlesTimeout": {
      "description": "Print a warning about probable open handles if Jest does not exit cleanly after this number of milliseconds. `0` to disable.",
      "type": "number"
    },
    "outputFile": {
      "description": "Write test results to a file when the --json option is also specified.",
      "type": "string"
    },
    "passWithNoTests": {
      "default": false,
      "description": "Will not fail if no tests are found (for example while using `--testPathPatterns`.)",
      "type": "boolean"
    },
    "preset": {
      "description": "A preset that is used as a base for Jest's configuration.",
      "type": "string"
    },
    "prettierPath": {
      "default": "prettier",
      "description": "The path to the \"prettier\" module used for inline snapshots.",
      "type": "string"
    },
    "projects": {
      "description": "A list of projects that use Jest to run all tests of all projects in a single instance of Jest.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "randomize": {
      "description": "Shuffle the order of the tests within a file. Use `--seed` to specify the seed value.",
      "type": "boolean"
    },
    "reporters": {
      "description": "A list of custom reporters for the test suite.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "resetMocks": {
      "description": "Automatically reset mock state between every test. Equivalent to calling jest.resetAllMocks() between each test.",
      "type": "boolean"
    },
    "resetModules": {
      "description": "If enabled, the module registry for every test file will be reset before running each individual test.",
      "type": "boolean"
    },
    "resolver": {
      "description": "A JSON string which allows the use of a custom resolver.",
      "type": "string"
    },
    "restoreMocks": {
      "description": "Automatically restore mock state and implementation between every test. Equivalent to calling jest.restoreAllMocks() between each test.",
      "type": "boolean"
    },
    "rootDir": {
      "description": "The root directory that Jest should scan for tests and modules within.",
      "type": "string"
    },
    "roots": {
      "description": "A list of paths to directories that Jest should use to search for files in.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "runInBand": {
      "alias": "i",
      "description": "Run all tests serially in the current process (rather than creating a worker pool of child processes that run tests). This is sometimes useful for debugging, but such use cases are pretty rare.",
      "type": "boolean"
    },
    "runTestsByPath": {
      "default": false,
      "description": "Used when provided patterns are exact file paths. This avoids converting them into a regular expression and matching it against every single file.",
      "type": "boolean"
    },
    "runner": {
      "description": "Allows to use a custom runner instead of Jest's default test runner.",
      "type": "string"
    },
    "seed": {
      "description": "Sets a seed value that can be retrieved in a tests file via `jest.getSeed()`. The seed value must be between `-0x80000000` and `0x7fffffff` inclusive.",
      "type": "number"
    },
    "selectProjects": {
      "description": "Run the tests of the specified projects. Jest uses the attribute `displayName` in the configuration to identify each project.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "setupFiles": {
      "description": "The paths to modules that run some code to configure or set up the testing environment before each test. ",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "setupFilesAfterEnv": {
      "description": "A list of paths to modules that run some code to configure or set up the testing framework before each test.",
      "type": "string"
    },
    "showConfig": {
      "description": "Print your jest config and then exits.",
      "type": "boolean"
    },
    "showSeed": {
      "description": "Prints the seed value in the test report summary. See `--seed` for how to set this value.",
      "type": "boolean"
    },
    "silent": {
      "description": "Prevent tests from printing messages through the console.",
      "type": "boolean"
    },
    "skipFilter": {
      "description": "Disables the filter provided by --filter. Useful for CI jobs, or local enforcement when fixing tests.",
      "type": "boolean"
    },
    "snapshotSerializers": {
      "description": "A list of paths to snapshot serializer modules Jest should use for snapshot testing.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "testEnvironment": {
      "description": "Alias for --env",
      "type": "string"
    },
    "testEnvironmentOptions": {
      "description": "Test environment options that will be passed to the testEnvironment. The relevant options depend on the environment.",
      "type": "string"
    },
    "testFailureExitCode": {
      "description": "Exit code of `jest` command if the test run failed",
      "type": "string"
    },
    "testLocationInResults": {
      "default": false,
      "description": "Add `location` information to the test results",
      "type": "boolean"
    },
    "testMatch": {
      "description": "The glob patterns Jest uses to detect test files.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "testNamePattern": {
      "alias": "t",
      "description": "Run only tests with a name that matches the regex pattern.",
      "type": "string"
    },
    "testPathIgnorePatterns": {
      "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.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "testPathPatterns": {
      "description": "Regexp pattern strings matched against test paths. Pass multiple patterns separated by spaces or repeat the flag.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "testRegex": {
      "description": "A string or array of string regexp patterns that Jest uses to detect test files.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "testResultsProcessor": {
      "description": "Allows the use of a custom results processor. This processor must be a node module that exports a function expecting as the first argument the result object.",
      "type": "string"
    },
    "testRunner": {
      "description": "Allows to specify a custom test runner. The default is `jest-circus/runner`. A path to a custom test runner can be provided: `<rootDir>/path/to/testRunner.js`.",
      "type": "string"
    },
    "testSequencer": {
      "description": "Allows to specify a custom test sequencer. The default is `@jest/test-sequencer`. A path to a custom test sequencer can be provided: `<rootDir>/path/to/testSequencer.js`.",
      "type": "string"
    },
    "testTimeout": {
      "description": "This option sets the default timeouts of test cases.",
      "type": "number"
    },
    "transform": {
      "description": "A JSON string which maps from regular expressions to paths to transformers.",
      "type": "string"
    },
    "transformIgnorePatterns": {
      "description": "An array of regexp pattern strings that are matched against all source file paths before transformation.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "unmockedModulePathPatterns": {
      "description": "An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "updateSnapshot": {
      "alias": "u",
      "description": "Use this flag to re-record snapshots. Can be used together with a test suite pattern or with `--testNamePattern` to re-record snapshot for test matching the pattern",
      "type": "boolean"
    },
    "useStderr": {
      "description": "Divert all output to stderr.",
      "type": "boolean"
    },
    "verbose": {
      "description": "Display individual test results with the test suite hierarchy.",
      "type": "boolean"
    },
    "version": {
      "alias": "v",
      "description": "Print the version and exit",
      "type": "boolean"
    },
    "watch": {
      "description": "Watch files for changes and rerun tests related to changed files. If you want to re-run all tests when a file has changed, use the `--watchAll` option.",
      "type": "boolean"
    },
    "watchAll": {
      "description": "Watch files for changes and rerun all tests. If you want to re-run only the tests related to the changed files, use the `--watch` option.",
      "type": "boolean"
    },
    "watchPathIgnorePatterns": {
      "description": "An array of regexp pattern strings that are matched against all paths before trigger test re-run in watch mode. If the test path matches any of the patterns, it will be skipped.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "watchman": {
      "description": "Whether to use watchman for file crawling. Disable using --no-watchman.",
      "type": "boolean"
    },
    "waitForUnhandledRejections": {
      "description": "Gives one event loop turn to handle `rejectionHandled`, `uncaughtException` or `unhandledRejection`.",
      "type": "boolean"
    },
    "workerThreads": {
      "description": "Whether to use worker threads for parallelization. Child processes are used by default.",
      "type": "boolean"
    },
    "tsConfig": {
      "description": "The path to the TypeScript configuration file.",
      "type": "string"
    },
    "shard": {
      "description": "The test suite shard to execute in a format of (?<shardIndex>\\d+)/(?<shardCount>\\d+).\n\nshardIndex describes which shard to select while shardCount controls the number of shards the suite should be split into.\n\nshardIndex and shardCount have to be 1-based, positive numbers, and shardIndex has to be lower than or equal to shardCount.\n\nWhen shard is specified the configured testSequencer has to implement a shard method.\n\nFor example, to split the suite into three shards, each running one third of the tests:",
      "type": "string"
    }
  },
  "additionalProperties": { "type": "array", "items": { "type": "string" } }
}
