Security News
The Unpaid Backbone of Open Source: Solo Maintainers Face Increasing Security Demands
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
pretty-format
Advanced tools
The pretty-format npm package is a JavaScript library that allows you to serialize any JavaScript value into a string with a human-readable format. It is particularly useful for snapshot testing, where you want to compare the expected and actual output of your test cases.
Pretty-printing of basic JavaScript types
This feature allows you to convert basic JavaScript types like objects, arrays, strings, numbers, etc., into a nicely formatted string.
const prettyFormat = require('pretty-format');
const value = { foo: 'bar', baz: 42 };
console.log(prettyFormat(value));
Customizing output with plugins
pretty-format supports plugins that can be used to customize the output for specific types of values, such as React elements.
const prettyFormat = require('pretty-format');
const ReactElementPlugin = require('pretty-format/plugins/ReactElement');
const reactElement = <div>Hello World</div>;
console.log(prettyFormat(reactElement, { plugins: [ReactElementPlugin] }));
Minimizing diff output
By using pretty-format in combination with a diffing library like jest-diff, you can minimize the output of diffs to make them easier to read and understand.
const prettyFormat = require('pretty-format');
const diff = require('jest-diff');
const oldValue = { a: 'old', b: 'values' };
const newValue = { a: 'new', b: 'values' };
const difference = diff(prettyFormat(oldValue), prettyFormat(newValue));
console.log(difference);
Chalk is a popular npm package for styling terminal strings. While it doesn't serialize objects, it can be used in conjunction with pretty-format to colorize the output, enhancing readability.
Util is a core Node.js module that provides a method called 'inspect' for printing objects in a readable format. It is similar to pretty-format but is built into Node.js and does not support plugins.
js-beautify is an npm package that can format HTML, CSS, and JavaScript code. It is more focused on formatting code rather than serializing arbitrary JavaScript values like pretty-format.
Stringify any JavaScript value.
JSON.stringify
and significantly faster than Node's util.format
)ReactTestComponent
)$ npm install pretty-format
var prettyFormat = require('pretty-format');
var obj = { property: {} };
obj.circularReference = obj;
obj[Symbol('foo')] = 'foo';
obj.map = new Map();
obj.map.set('prop', 'value');
obj.array = [1, NaN, Infinity];
console.log(prettyFormat(obj));
Result:
Object {
"property": Object {},
"circularReference": [Circular],
"map": Map {
"prop" => "value"
},
"array": Array [
1,
NaN,
Infinity
],
Symbol(foo): "foo"
}
Object
, Array
, ArrayBuffer
, DataView
, Float32Array
, Float64Array
, Int8Array
, Int16Array
, Int32Array
, Uint8Array
, Uint8ClampedArray
, Uint16Array
, Uint32Array
, arguments
, Boolean
, Date
, Error
, Function
, Infinity
, Map
, NaN
, null
, Number
, RegExp
, Set
, String
, Symbol
, undefined
, WeakMap
, WeakSet
Pretty format also supports adding plugins:
var fooPlugin = {
test: function(val) {
return val && val.hasOwnProperty('foo');
},
print: function(val, print, indent) {
return 'Foo: ' + print(val.foo);
}
};
var obj = { foo: { bar: {} } };
prettyFormat(obj, {
plugins: [fooPlugin]
});
// Foo: Object {
// "bar": Object {}
// }
ReactTestComponent
pluginvar prettyFormat = require('pretty-format');
var reactPlugin = require('pretty-format/plugins/ReactTestComponent');
var React = require('react');
var renderer = require('react/lib/ReactTestRenderer');
var jsx = React.createElement('h1', null, 'Hello World');
prettyFormat(renderer.create(jsx).toJSON(), {
plugins: [reactPlugin]
});
// <h1>
// Hello World
// </h1>
23.6.0
[jest-cli]
Add changedSince
to allowed watch mode configs (#6955)[babel-jest]
Add support for babel.config.js
added in Babel 7.0.0 (#6911)[jest-resolve]
Add support for an experimental mapper
option (Watchman crawler only) that adds virtual files to the Haste map (#6940)[jest-resolve]
Only resolve realpath once in try-catch (#6925)[expect]
Fix TypeError in toBeInstanceOf
on null
or undefined
(#6912)[jest-jasmine2]
Throw a descriptive error if the first argument supplied to a hook was not a function (#6917) and (#6931)[jest-circus]
Throw a descriptive error if the first argument supplied to a hook was not a function (#6917) and (#6931)[expect]
Fix variadic custom asymmetric matchers (#6898)[jest-cli]
Fix incorrect testEnvironmentOptions
warning (#6852)[jest-each]
Prevent done callback being supplied to describe (#6843)[jest-config]
Better error message for a case when a preset module was found, but no jest-preset.js
or jest-preset.json
at the root (#6863)[jest-haste-map]
Catch crawler error when unsuccessfully reading directories (#6761)[docs]
Add custom toMatchSnapshot matcher docs (#6837)[docs]
Improve the documentation regarding preset configuration (#6864)[docs]
Clarify usage of --projects
CLI option (#6872)[docs]
Correct failure-change
notification mode (#6878)[scripts]
Don’t remove node_modules from subdirectories of presets in e2e tests (#6948)[diff-sequences]
Double-check number of differences in tests (#6953)FAQs
Stringify any JavaScript value.
The npm package pretty-format receives a total of 68,228,628 weekly downloads. As such, pretty-format popularity was classified as popular.
We found that pretty-format demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 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
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.
Security News
A developer is accusing Tencent of violating the GPL by modifying a Python utility and changing its license to BSD, highlighting the importance of copyleft compliance.