Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
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: Object,
options: ValidationOptions,
); // => {hasDeprecationWarnings: boolean, isValid: boolean}
Where ValidationOptions
are:
type ValidationOptions = {
comment?: string,
condition?: (option: any, validOption: any) => boolean,
deprecate?: (
config: Object,
option: string,
deprecatedOptions: Object,
options: ValidationOptions
) => true,
deprecatedConfig?: {[key: string]: Function},
error?: (
option: string,
received: any,
defaultValue: any,
options: ValidationOptions,
) => void,
exampleConfig: Object,
title?: Title,
unknown?: (
config: Object,
exampleConfig: Object,
option: string,
options: ValidationOptions
) => 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.
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.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.
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
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
jest 21.0.0
Add --changedFilesWithAncestor (#4070)
Add --findRelatedFiles (#4131)
Add --onlyChanged tests (#3977)
Add contextLines
option to jest-diff (#4152)
Add alternative serialize API for pretty-format plugins (#4114)
Add displayName to MPR (#4327)
Add displayName to TestResult (#4408)
Add es5 build of pretty-format (#4075)
Add extra info to no tests for changed files message (#4188)
Add fake chalk in browser builds in order to support IE10 (#4367)
Add jest.requireActual (#4260)
Add maxWorkers to globalConfig (#4005)
Add skipped tests support for jest-editor-support (#4346)
Add source map support for better debugging experience (#3738)
Add support for Error objects in toMatchObject (#4339)
Add support for Immutable.Record in pretty-format (#3678)
Add tests for extract_requires on export types (#4080)
Add that toMatchObject can match arrays (#3994)
Add watchPathIgnorePatterns to exclude paths to trigger test re-run in watch mode (#4331)
Adding ancestorTitles property to JSON test output (#4293)
Allow custom resolver to be used with[out] moduleNameMapper (#4174)
Avoid parsing .require(…)
method calls (#3777)
Avoid unnecessary function declarations and call in pretty-format (#3962)
Avoid writing to stdout in default reporter if --json is enabled. Fixes #3941 (#3945)
Better error handling for --config (#4230)
Call consistent pretty-format plugins within Jest (#3800)
Change babel-core to peerDependency for compatibility with Babel 7 (#4162)
Change Promise detection code in jest-circus to support non-global Promise implementations (#4375)
Changed files eager loading (#3979)
Check whether we should output to stdout or stderr (#3953)
Clarify what objects toContain and toContainEqual can be used on (#4307)
Clean up resolve() logic. Provide useful names for variables and functions. Test that a directory exists before attempting to resolve files within it. (#4325)
cleanupStackTrace (#3696)
compare objects with Symbol keys (#3437)
Complain if expect is passed multiple arguments (#4237)
Completes nodeCrawl with empty roots (#3776)
Consistent naming of files (#3798)
Convert code base to ESM import (#3778)
Correct summary message for flag --findRelatedTests. (#4309)
Coverage thresholds can be set up for individual files (#4185)
custom reporter error handling (#4051)
Define separate type for pretty-format plugin Options (#3802)
Delete confusing async keyword (#3679)
Delete redundant branch in ReactElement and HTMLElement plugins (#3731)
Don't format node assert errors when there's no 'assert' module (#4376)
Don't print test summary in --silent (#4106)
Don't try to build ghost packages (#3934)
Escape double quotes in attribute values in HTMLElement plugin (#3797)
Explain how to clear the cache (#4232)
Factor out common code for collections in pretty-format (#4184)
Factor out common code for markup in React plugins (#4171)
Feature/internal resolve (#4315)
Fix --logHeapUsage (#4176)
Fix --showConfig to show all project configs (#4078)
Fix --watchAll (#4254)
Fix bug when setTimeout is mocked (#3769)
Fix changedFilesWithAncestor (#4193)
Fix colors for expected/stored snapshot message (#3702)
Fix concurrent test failure (#4159)
Fix for 4286: Compare Maps and Sets by value rather than order (#4303)
fix forceExit (#4105)
Fix grammar in React Native docs (#3838)
Fix inconsistent name of complex values in pretty-format (#4001)
Fix issue mocking bound method (#3805)
Fix jest-circus (#4290)
Fix lint warning in main
(#4132)
Fix linting (#3946)
fix merge conflict (#4144)
Fix minor typo (#3729)
fix missing console.log messages (#3895)
fix mock return value (#3933)
Fix mocking for modules with folders on windows (#4238)
Fix NODE_PATH resolving for relative paths (#3616)
Fix options.moduleNameMapper override order with preset (#3565 (#3689)
Fix React PropTypes warning in tests for Immutable plugin (#4412)
Fix regression in mockReturnValueOnce (#3857)
Fix sample code of mock class constructors (#4115)
Fix setup-test-framework-test (#3773)
fix typescript jest test crash (#4363)
Fix watch mode (#4084)
Fix Watchman on windows (#4018)
Fix(babel): Handle ignored files in babel v7 (#4393)
Fix(babel): Support upcoming beta (#4403)
Fixed object matcher (#3799)
Fixes #3820 use extractExpectedAssertionsErrors in jasmine setup
Flow upgrade (#4355)
Force message in matchers to always be a function (#3972)
Format describe
and use test
instead of it
alias (#3792)
global_config.js for multi-project runner (#4023)
Handle async errors (#4016)
Hard-fail if hasteImpl is throwing an error during initialization. (#3812)
Ignore import type for extract_requires (#4079)
Ignore indentation of data structures in jest-diff (#3429)
Implement 'jest.requireMock' (#4292)
Improve Jest phabricator plugin (#4195)
Improve Seq and remove newline from non-min empty in Immutable plugin (#4241)
Improved the jest reporter with snapshot info per test. (#3660)
Include fullName in formattedAssertion (#4273)
Integrated with Yarn workspaces (#3906)
jest --all (#4020)
jest-circus test failures (#3770)
jest-circus Timeouts (#3760)
jest-haste-map: add test case for broken handling of ignore pattern (#4047)
jest-haste-map: add test+fix for broken platform module support (#3885)
jest-haste-map: deprecate functional ignorePattern and use it in cache key (#4063)
jest-haste-map: mock 'fs' with more idiomatic jest.mock() (#4046)
jest-haste-map: only file IO errors should be silently ignored (#3816)
jest-haste-map: throw when trying to get a duplicated module (#3976)
jest-haste-map: watchman crawler: normalize paths (#3887)
jest-runtime: atomic cache write, and check validity of data (#4088)
Join lines with newline in jest-diff (#4314)
Keep ARGV only in CLI files (#4012)
let transformers adjust cache key based on mapCoverage (#4187)
Lift requires (#3780)
Log stack when reporting errors in jest-runtime (#3833)
Make --listTests return a new line separated list when not using --json (#4229)
Make build script printing small-terminals-friendly (#3892)
Make error messages more explicit for toBeCalledWith assertions (#3913)
Make jest-matcher-utils use ESM exports (#4342)
Make jest-runner a standalone package. (#4236)
Make Jest’s Test Runner configurable. (#4240)
Make listTests always print to console.log (#4391)
Make providesModuleNodeModules ignore nested node_modules directories
Make sure function mocks match original arity (#4170)
Make sure runAllTimers also clears all ticks (#3915)
Make toBe matcher error message more helpful for objects and arrays (#4277)
Make useRealTimers play well with timers: fake (#3858)
Move getType from jest-matcher-utils to separate package (#3559)
Multiroot jest-change-files (#3969)
Output created snapshot when using --ci option (#3693)
Point out you can use matchers in .toMatchObject (#3796)
Prevent babelrc package import failure on relative current path (#3723)
Print RDP details for windows builds (#4017)
Provide better error checking for transformed content (#3807)
Provide printText and printComment in markup.js for HTMLElement plugin (#4344)
Provide regex visualization for testRegex (#3758)
Refactor CLI (#3862)
Refactor names and delimiters of complex values in pretty-format (#3986)
Replace concat(Immutable) with Immutable as item of plugins array (#4207)
Replace Jasmine with jest-circus (#3668)
Replace match with test and omit redundant String conversion (#4311)
Replace print with serialize in AsymmetricMatcher plugin (#4173)
Replace print with serialize in ConvertAnsi plugin (#4225)
Replace print with serialize in HTMLElement plugin (#4215)
Replace print with serialize in Immutable plugins (#4189)
Replace unchanging args with one config arg within pretty-format (#4076)
Return UNDEFINED for undefined type in ReactElement plugin (#4360)
Rewrite some read bumps in pretty-format (#4093)
Run update method before installing JRE on Circle (#4318)
Separated the snapshot summary creation from the printing to improve testability. (#4373)
Set coverageDirectory during normalize phase (#3966)
Setup custom reporters after default reporters (#4053)
Setup for Circle 2 (#4149)
Simplify readme (#3790)
Simplify snapshots definition (#3791)
skipNodeResolution config option (#3987)
Small fixes to toHaveProperty docs (#3878)
Sort attributes by name in HTMLElement plugin (#3783)
Specify watchPathIgnorePatterns will only be available in Jest 21+ (#4398)
Split TestRunner off of TestScheduler (#4233)
Strict and explicit config resolution logic (#4122)
Support maxDepth option in React plugins (#4208)
Support SVG elements in HTMLElement plugin (#4335)
Test empty Immutable collections with {min: false} option (#4121)
test to debug travis failure in main (#4145)
testPathPattern message test (#4006)
Throw Error When Using Nested It Specs (#4039)
Throw when moduleNameMapper points to inexistent module (#3567)
Unified 'no tests found' message for non-verbose MPR (#4354)
Update migration guide with jest-codemods transformers (#4306)
Use "inputSourceMap" for coverage re-mapping. (#4009)
Use "verbose" no test found message when there is only one project (#4378)
Use babel transform to inline all requires (#4340)
Use eslint plugins to run prettier (#3971)
Use iterableEquality in spy matchers (#3651)
Use modern HTML5 <!DOCTYPE> (#3937)
Wrap Error.captureStackTrace
in a try (#4035)
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
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.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.