Registry / testing / power-assert-context-formatter

power-assert-context-formatter

JSON →
library1.2.0jsnpmunverified

Create function to format powerAssertContext object provided by power-assert at runtime. Version 1.2.0 is stable. Part of the power-assert-runtime ecosystem. Replaces legacy format function with configurable renderers. Allows custom renderer arrays, reducers, output offset, and line separator. Supports legacy renderer compatibility. Key differentiator: separates formatting concern from assertion, enabling detailed diff diagrams and comparison output.

npm install power-assert-context-formatter
INSTALL
IMPORT
SIG · POWER-ASSERT-CONTE
P
power-assert-context-formatter
testingjavascriptv1.2.0
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

createFormatter
var createFormatter = require('power-assert-context-formatter');
import createFormatter from 'power-assert-context-formatter';
CommonJS only; this package does not provide ESM exports.
format
var format = createFormatter({ renderers: [...] });
var format = createFormatter(); // missing renderers, will use empty array
Format function returned by createFormatter; expects powerAssertContext object.
renderers
var format = createFormatter({ renderers: [FileRenderer, AssertionRenderer] });
var format = createFormatter({ renderers: [new FileRenderer()] }); // pass constructor, not instance
Renderers are constructor functions, not instances. Options can be passed via object: { ctor: FileRenderer, options: {...} }

Demonstrates creating a formatter with file, assertion, diagram, and comparison renderers, then using it to format power-assert output.

var createFormatter = require('power-assert-context-formatter'); var FileRenderer = require('power-assert-renderer-file'); var AssertionRenderer = require('power-assert-renderer-assertion'); var DiagramRenderer = require('power-assert-renderer-diagram'); var ComparisonRenderer = require('power-assert-renderer-comparison'); var format = createFormatter({ renderers: [ FileRenderer, AssertionRenderer, DiagramRenderer, ComparisonRenderer ] }); var assert = require('assert'); var foo = 'hello'; var bar = 'world'; try { assert(foo === bar); } catch (e) { var formattedText = format(e.powerAssertContext); console.log(formattedText); }
Debug
Known issues
gotchaMissing renderers results in empty output
fix
Always provide at least one renderer in options.renderers array.
affects: >=1.0.0
deprecatedLegacy option may be removed in future major version
fix
Transition to new renderer API, avoid legacy: true if possible.
affects: >=1.0.0
breakingpowerAssertContext structure changed between power-assert versions
fix
Ensure power-assert and context-formatter versions are compatible. Check power-assert changelog for context format changes.
affects: >=1.4.0
gotchaDo not pass instances of renderers to renderers array
fix
Pass constructor functions (e.g., FileRenderer), not instances (new FileRenderer()). For options, use { ctor: FileRenderer, options: {...} }.
affects: >=1.0.0
Errors
Common errors & fixes
TypeError: format is not a function
createFormatter was not called correctly or returned undefined.
fix
Ensure you call createFormatter() and assign its return value to a variable: var format = createFormatter({...});
TypeError: Cannot read properties of undefined (reading 'forEach')
powerAssertContext is undefined or malformed.
fix
Check that the error object has a powerAssertContext property. If using power-assert properly, this should be present on assertion errors.
TypeError: renderers is not iterable
renderers option is missing or not an array.
fix
Pass an array of renderer constructor functions to createFormatter({ renderers: [...] }).
Upgrade
Version history
1.2.0latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
9 hits · last 30 days
node
8
Resources
power-assert-context-formatter — npm install power-assert-context-formatter · libregistry