jest-validate
Advanced tools
Weekly downloads
Changelog
29.5.0
[jest-changed-files]
Support Sapling (#13941)[jest-circus, @jest/cli, jest-config]
Add feature to randomize order of tests via CLI flag or through the config file(#12922)[jest-cli, jest-config, @jest/core, jest-haste-map, @jest/reporters, jest-runner, jest-runtime, @jest/types]
Add workerThreads
configuration option to allow using worker threads for parallelization (#13939)[jest-cli]
Export yargsOptions
(#13970)[jest-config]
Add openHandlesTimeout
option to configure possible open handles warning. (#13875)[@jest/create-cache-key-function]
Allow passing length
argument to createCacheKey()
function and set its default value to 16
on Windows (#13827)[jest-message-util]
Add support for AggregateError (#13946 & #13947)[jest-message-util]
Add support for Error causes in test
and it
(#13935 & #13966)[jest-reporters]
Add summaryThreshold
option to summary reporter to allow overriding the internal threshold that is used to print the summary of all failed tests when the number of test suites surpasses it (#13895)[jest-runtime]
Expose @sinonjs/fake-timers
async APIs functions advanceTimersByTimeAsync(msToRun)
(tickAsync(msToRun)
), advanceTimersToNextTimerAsync(steps)
(nextAsync
), runAllTimersAsync
(runAllAsync
), and runOnlyPendingTimersAsync
(runToLastAsync
) (#13981)[jest-runtime, @jest/transform]
Allow V8 coverage provider to collect coverage from files which were not loaded explicitly (#13974)[jest-snapshot]
Add support to cts
and mts
TypeScript files to inline snapshots (#13975)[jest-worker]
Add start
method to worker farms (#13937)[jest-worker]
Support passing a URL as path to worker (#13982)[babel-plugin-jest-hoist]
Fix unwanted hoisting of nested jest
usages (#13952)[jest-circus]
Send test case results for todo
tests (#13915)[jest-circus]
Update message printed on test timeout (#13830)[jest-circus]
Avoid creating the word "testfalse" when takesDoneCallback
is false
in the message printed on test timeout AND updated timeouts test (#13954)[jest-environment-jsdom]
Stop setting document
to null
on teardown (#13972)[@jest/expect-utils]
Update toStrictEqual()
to be able to check jest.fn().mock.calls
(#13960)[@jest/test-result]
Allow TestResultsProcessor
type to return a Promise (#13950)[jest-snapshot]
Remove dependency on jest-haste-map
(#13977)Readme
Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.
npm install --save jest-validate
import {validate} from 'jest-validate';
validate(config, validationOptions); // => {hasDeprecationWarnings: boolean, isValid: boolean}
Where ValidationOptions
are:
type ValidationOptions = {
comment?: string;
condition?: (option: unknown, validOption: unknown) => boolean;
deprecate?: (
config: Record<string, unknown>,
option: string,
deprecatedOptions: DeprecatedOptions,
options: ValidationOptions,
) => boolean;
deprecatedConfig?: DeprecatedOptions;
error?: (
option: string,
received: unknown,
defaultValue: unknown,
options: ValidationOptions,
path?: Array<string>,
) => void;
exampleConfig: Record<string, unknown>;
recursive?: boolean;
recursiveBlacklist?: Array<string>;
recursiveDenylist?: Array<string>;
title?: Title;
unknown?: (
config: Record<string, unknown>,
exampleConfig: Record<string, unknown>,
option: string,
options: ValidationOptions,
path?: Array<string>,
) => void;
};
type Title = {
deprecation?: string;
error?: string;
warning?: string;
};
exampleConfig
is the only option required.
By default jest-validate
will print generic warning and error messages. You can however customize this behavior by providing options: ValidationOptions
object as a second argument:
Almost anything can be overwritten to suite your needs.
recursiveDenylist
– optional array of string keyPaths that should be excluded from deep (recursive) validation.comment
– optional string to be rendered below error/warning message.condition
– an optional function with validation condition.deprecate
, error
, unknown
– optional functions responsible for displaying warning and error messages.deprecatedConfig
– optional object with deprecated config keys.exampleConfig
– the only required option with configuration against which you'd like to test.recursive
- optional boolean determining whether recursively compare exampleConfig
to config
(default: true
).title
– optional object of titles for errors and messages.You will find examples of condition
, deprecate
, error
, unknown
, and deprecatedConfig
inside source of this repository, named respectively.
exampleConfig
should be an object with key/value pairs that contain an example of a valid value for each key. A configuration value is considered valid when:
string
, number
, array
, boolean
, function
, or object
null
or undefined
MultipleValidOptions(...)
The last condition is a special syntax that allows validating where more than one type is permissible; see example below. It's acceptable to have multiple values of the same type in the example, so you can also use this syntax to provide more than one example. When a validation failure occurs, the error message will show all other values in the array as examples.
Minimal example:
validate(config, {exampleConfig});
Example with slight modifications:
validate(config, {
comment: ' Documentation: http://custom-docs.com',
deprecatedConfig,
exampleConfig,
title: {
deprecation: 'Custom Deprecation',
// leaving 'error' and 'warning' as default
},
});
This will output:
● Validation Warning:
Unknown option transformx with value "<rootDir>/node_modules/babel-jest" was found.
This is either a typing error or a user mistake. Fixing it will remove this message.
Documentation: http://custom-docs.com
● Validation Error:
Option transform must be of type:
object
but instead received:
string
Example:
{
"transform": {
"\\.js$": "<rootDir>/preprocessor.js"
}
}
Documentation: http://custom-docs.com
import {multipleValidOptions} from 'jest-validate';
validate(config, {
// `bar` will accept either a string or a number
bar: multipleValidOptions('string is ok', 2),
});
● Validation Error:
Option foo must be of type:
string or number
but instead received:
array
Example:
{
"bar": "string is ok"
}
or
{
"bar": 2
}
Documentation: http://custom-docs.com
Based on deprecatedConfig
object with proper deprecation messages. Note custom title:
Custom Deprecation:
Option scriptPreprocessor was replaced by transform, which support multiple preprocessors.
Jest now treats your current configuration as:
{
"transform": {".*": "xxx"}
}
Please update your configuration.
Documentation: http://custom-docs.com
FAQs
Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.
The npm package jest-validate receives a total of 21,828,597 weekly downloads. As such, jest-validate popularity was classified as popular.
We found that jest-validate demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.