Security News
NIST Misses 2024 Deadline to Clear NVD Backlog
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.
jest-validate
Advanced tools
Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.
The jest-validate package is a utility for validating and ensuring that configurations passed to Jest, the JavaScript testing framework, are correct. It checks if the provided configuration object adheres to Jest's expected configurations and provides warnings or errors for any invalid or unknown options. This helps developers to quickly identify issues with their Jest setup.
Validation of configuration objects
This feature allows developers to validate their Jest configuration objects against a schema. It ensures that the configuration provided matches the expected format and values that Jest can work with.
{"validateConfig": require('jest-validate').validateConfig, "config": { "verbose": true }, "exampleConfig": { "verbose": false }}
Customization of validation messages
Developers can provide custom messages for unknown or deprecated options. This helps in guiding the user to correct their configuration with helpful feedback.
{"validateConfig": require('jest-validate').validateConfig, "config": { "unknownOption": true }, "exampleConfig": { "verbose": false }, "options": { "comment": "A custom message for unknownOption" }}
Deprecation warnings
jest-validate can warn users about deprecated configuration options. It provides a mechanism to inform users about the new options they should use instead.
{"validateConfig": require('jest-validate').validateConfig, "config": { "scriptPreprocessor": "<rootDir>/preprocessor.js" }, "exampleConfig": { "transform": {"^.+\\.js$": "<rootDir>/preprocessor.js"} }, "deprecatedConfig": { "scriptPreprocessor": "Please use `transform` instead" }}
Convict is a configuration management library for Node.js that includes schema validation. It is similar to jest-validate in that it validates configuration objects, but it is more general-purpose and not tied to a specific framework like Jest.
Joi is a powerful schema description language and data validator for JavaScript. Unlike jest-validate, which is tailored for Jest configurations, Joi can be used for validating any kind of data structures and is often used for validating API input.
Yup is a JavaScript schema builder for value parsing and validation. Similar to Joi, it defines a schema to validate objects against. It is less verbose and more expressive in some cases compared to Joi and is not specific to Jest configurations.
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
27.0.0
[babel-jest]
Add async transformation (#11192)[jest-changed-files]
Use '--' to separate paths from revisions (#11160)[jest-circus]
[BREAKING] Fail tests when multiple done()
calls are made (#10624)[jest-circus, jest-jasmine2]
[BREAKING] Fail the test instead of just warning when describe returns a value (#10947)[jest-config]
[BREAKING] Default to Node testing environment instead of browser (JSDOM) (#9874)[jest-config]
[BREAKING] Use jest-circus
as default test runner (#10686)[jest-config]
Add support for preset
written in ESM (#11200)[jest-config, jest-runtime]
Support ESM for files other than .js
and .mjs
(#10823)[jest-config, jest-runtime]
[BREAKING] Use "modern" implementation as default for fake timers (#10874 & #11197)[jest-config
Allow passing forceNodeFilesystemAPI
through to jest-haste-map
(#11264)[jest-config, jest-haste-map, jest-resolve, jest-runner, jest-runtime, jest-test-sequencer, jest-transform, jest-types]
[BREAKING] Add custom HasteMap class implementation config option (#11107)[jest-core]
make TestWatcher
extend emittery
(#10324)[jest-core]
Run failed tests interactively the same way we do with snapshots (#10858)[jest-core]
more TestSequencer
methods can be async (#10980)[jest-core]
Add support for testSequencer
written in ESM (#11207)[jest-core]
Add support for globalSetup
and globalTeardown
written in ESM (#11267)[jest-core]
Add support for watchPlugins
written in ESM (#11315)[jest-core]
Add support for runner
written in ESM (#11232)[jest-core]
Add support for reporters
written in ESM (#11427)[jest-each]
Add support for interpolation with object properties (#11388)[jest-environment-node]
Add AbortController to globals (#11182)[@jest/fake-timers]
Update to @sinonjs/fake-timers
to v7 (#11198)[jest-haste-map]
Handle injected scm clocks (#10966)[jest-haste-map]
Add enableSymlinks
configuration option to follow symlinks for test files (#9351)[jest-repl, jest-runner]
[BREAKING] Run transforms over environment (#8751)[jest-repl]
Add support for testEnvironment
written in ESM (#11232)[jest-reporters]
Add static filepath property to all reporters (#11015)[jest-runner]
[BREAKING] set exit code to 1 if test logs after teardown (#10728)[jest-runner]
[BREAKING] Run transforms over runner
(#8823)[jest-runner]
[BREAKING] Run transforms over testRunner
(#8823)[jest-runner]
Possibility to use ESM for test environment (11033)[jest-runner]
Add support for testRunner
written in ESM (#11232)[jest-runtime]
Detect reexports from CJS as named exports in ESM (#10988)[jest-runtime]
Support for async code transformations (#11191 & #11220)[jest-snapshot]
[BREAKING] Make prettier optional for inline snapshots - fall back to string replacement (#7792 & #11192)[jest-snapshot]
[BREAKING] Run transforms over snapshotResolver
(#8829)[jest-transform]
Pass config options defined in Jest's config to transformer's process
and getCacheKey
functions (#10926)[jest-transform]
Add support for transformers written in ESM (#11163)[jest-transform]
[BREAKING] Do not export ScriptTransformer
class, instead export the async function createScriptTransformer
(#11163)[jest-transform]
Async code transformations (#9889)[jest-transform]
Support transpiled transformers (#11193)[jest-transform]
[BREAKING] requireAndTranspileModule
always return a Promise
, and the third parameter type is changed to RequireAndTranspileModuleOptions
which accept applyInteropRequireDefault
option (#11232)[jest-transform]
[BREAKING] createTranspilingRequire
return function which return a Promise
now (#11232)[jest-util]
add requireOrImportModule for importing CJS or ESM (#11199)[jest-util]
add applyInteropRequireDefault
option on requireOrImportModule
(#11232)[jest-watcher]
Added support for clearing the line when <C-u>
is pressed in a watch mode pattern prompt (#11358)[jest-worker]
Add support for custom task queues and adds a PriorityQueue
implementation. (#10921)[jest-worker]
Add in-order scheduling policy to jest worker (10902)[pretty-format]
Better print for sparse arrays (11326)[pretty-print]
Add option printBasicPrototype
which determines whether or not the prototype should be printed for raw objects or arrays (#11441)[babel-plugin-jest-hoist]
Add __dirname
and __filename
to whitelisted globals (#10903)[expect]
[BREAKING] Revise expect.not.objectContaining()
to be the inverse of expect.objectContaining()
, as documented. (#10708)[expect]
[BREAKING] Make toContain
more strict with the received type (#10119 & #10929)[expect]
[BREAKING] matcherResult
on JestAssertionError
are now strings rather than functions (#10989)[jest-circus]
Fixed the issue of beforeAll & afterAll hooks getting executed even if it is inside a skipped describe
block (#10806)[jest-circus]
Fix testLocation
on Windows when using test.each
(#10871)[jest-cli]
Use testFailureExitCode when bailing from a failed test (#10958)[jest-cli]
Print custom error if error thrown from global hooks is not an error already (#11003)[jest-cli]
Allow running multiple "projects" from programmatic API (#11307)[jest-cli]
Fix missing collectCoverage after init (#11353)[jest-cli, jest-config, jest-types]
Move all default values into jest-config
(#9924)[jest-config]
[BREAKING] Change default file extension order by moving json behind ts and tsx (10572)[jest-console]
console.dir
now respects the second argument correctly (#10638)[jest-core]
Don't report PerformanceObserver as open handle (#11123)[jest-core]
Use WeakRef
to hold timers when detecting open handles (#11277)[jest-core]
Correctly detect open handles that were created in test functions using done
callbacks (#11382)[jest-core]
Do not collect RANDOMBYTESREQUEST
as open handles (#11278)[jest-core]
Wait briefly for open handles to close before flagging them when using --detectOpenHandles
(#11429)[jest-diff]
[BREAKING] Use only named exports (#11371)[jest-each]
[BREAKING] Ignore excess words in headings (#8766)[jest-each]
Support array index with template strings (#10763)[jest-each]
Interpolate %%
correctly (#11364)[jest-each]
Fix wrong interpolation when the value of array contains multiple %
(#11364)[jest-environment]
[BREAKING] Drop support for runScript
for test environments (#11155)[jest-environment-jsdom]
Use inner realm’s ArrayBuffer
constructor (#10885)[jest-environment-jsdom]
[BREAKING] Remove Node globals setImmediate
and clearImmediate
(#11222)[jest-get-type]
[BREAKING] Convert to ES Module (#11359)[jest-globals]
[BREAKING] Disallow return values other than a Promise
from hooks and tests (#10512)[jest-globals]
[BREAKING] Disallow mixing a done callback and returning a Promise
from hooks and tests (#10512)[jest-haste-map]
Vendor NodeWatcher
from sane
(#10919)[jest-jasmine2]
Fixed the issue of beforeAll
& afterAll
hooks getting executed even if it is inside a skipped describe
block when it has child tests
marked as either only
or todo
(#10806)[jest-jasmine2]
Fixed the issues of child tests
marked with only
or todo
getting executed even if it is inside a skipped parent describe
block (#10806)[jest-jasmine2]
Wrap all test functions so they open handles that were created in test functions using done
callbacks can be detected (#11382)[jest-reporter]
Handle empty files when reporting code coverage with V8 (#10819)[jest-resolve]
Replace read-pkg-up with escalade package (#10781)[jest-resolve]
Disable jest-pnp-resolver
for Yarn 2 (#10847)[jest-runtime]
[BREAKING] Do not inject global
variable into module wrapper (#10644)[jest-runtime]
[BREAKING] remove long-deprecated jest.addMatchers
, jest.resetModuleRegistry
, and jest.runTimersToTime
(#9853)[jest-runtime]
Fix stack overflow and promise deadlock when importing mutual dependant ES module (#10892)[jest-runtime]
Prevent global module registry from leaking into isolateModules
registry (#10963)[jest-runtime]
Refactor to prevent race condition when linking and evaluating ES Modules (#11150)[jest-runtime]
Throw correct error when attempting to load ESM via require
(#11260)[jest-runtime]
Do not cache modules that throw during evaluation (#11263)[jest-transform]
Show enhanced SyntaxError
message for all SyntaxError
s (#10749)[jest-transform]
[BREAKING] Refactor API to pass an options bag around rather than multiple boolean options (#10753)[jest-transform]
[BREAKING] Refactor API of transformers to pass an options bag rather than separate config
and other options (#10834)[jest-types]
Fix Config.ts
projects
types (#11285)[jest-util]
Replace micromatch with picomatch to fix issues with negated globs (#11287)[jest-validate]
Use en-US
locale to avoid case conversion problems while validating CLI options on machines with some certain locales(e.g. Turkish) set as default locale. (#11412)[jest-worker]
[BREAKING] Use named exports (#10623)[jest-worker]
Do not swallow errors during serialization (#10984)[jest-worker]
Handle ERR_IPC_CHANNEL_CLOSED
errors properly (#11143)[pretty-format]
[BREAKING] Convert to ES Modules (#10515)[pretty-format]
Only call hasAttribute
if it's a function (#11000)[pretty-format]
Handle jsdom attributes properly (#11189)[pretty-format]
Import pretty-format using named imports (#11360)[*]
[BREAKING] Only support Node LTS releases and Node 15 (#10685)[*]
[BREAKING] Add exports
field to all package.json
s (#9921)[*]
Make it easier for Jest's packages to use the VM escape hatch (#10824)[*]
[BREAKING] Remove deprecated mapCoverage
(#9968)[babel-jest]
[BREAKING] Migrate to ESM (#11193)[docs]
Correct example using browser-resolve
(#11140)[docs]
Clarify timers
configuration property (#11376)[jest, jest-core]
[BREAKING] Replace TestScheduler
export with createTestScheduler
(#11427)[jest-config]
[BREAKING] Remove enabledTestsMap
config, use filter
instead (#10787)[jest-console]
[BREAKING] Move root
into config
and take GlobalConfig
as mandatory parameter for getConsoleOutput
(#10126)[jest-console]
Export LogEntry (#11017)[jest-fake-timers]
Clarify global behavior of jest.useFakeTimers
and jest.useRealTimers
(#10867)[jest-haste-map]
[BREAKING] Migrate to ESM (#10875)[jest-haste-map]
[BREAKING] Remove support for deprecated option ignorePattern
as function (#10348)[jest-jasmine2]
[BREAKING] Migrate to ESM (#10906)[jest-jasmine2]
[BREAKING] Remove unused options argument from Env
constructor (#10240)[jest-repl, jest-runtime]
[BREAKING] Move the jest-runtime
CLI into jest-repl
(#10016 & #10925)[jest-resolve]
[BREAKING] Migrate to ESM (#10688)[jest-resolve-dependencies]
[BREAKING] Migrate to ESM (#10876)[jest-mock]
[BREAKING] Migrate to ESM (#10887)[jest-reporters]
[BREAKING] Make node-notifier
a peer dependency (#10977)[jest-resolve, jest-runtime]
[BREAKING] Use Map
s instead of objects for all cached resources (#10968)[jest-runner]
[BREAKING] Migrate to ESM (#10900)[jest-runtime]
[BREAKING] Remove deprecated and unused getSourceMapInfo
from Runtime (#9969)[jest-transformer]
[BREAKING] Remove unused isCoreModule
option (#11166)[jest-util]
No longer checking enumerable
when adding process.domain
(#10862)[jest-validate]
[BREAKING] Remove recursiveBlacklist
option in favor of previously introduced recursiveDenylist
(#10650)[website]
Replace 'Github' with 'GitHub' (#11279)[website]
Remove a language code from the link to the Node.js website (#11282)[website]
Remove a duplicated word (#11281)[website]
Add french to website (#11361)[jest-resolve]
Cache reading and parsing of package.json
s (#11076)[jest-runtime, jest-transform]
share cacheFS
between runtime and transformer (#10901)[jest-runtime]
Load chalk
only once per worker (#10864)[jest-worker]
Fix memory leak of previous task arguments while no new task is scheduled (#11187)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 25,565,101 weekly downloads. As such, jest-validate popularity was classified as popular.
We found that jest-validate demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.