Node.js ApprovalTests
Installation
npm install approvalsQuick Start
Jest
import { verify, verifyAsJson } from 'approvals/lib/Providers/Jest/JestApprovals';
describe('Reports', () => {
it('generates report', () => {
const result = generateReport();
verify(result);
});
});Mocha
require('approvals').mocha();
describe('Reports', function() {
it('generates report', function() {
this.verify(generateReport());
});
});First run: Test fails, .received file created. Review it, approve it (copy to .approved), rerun.
Common Imports
Jest
import { verify, verifyAsJson, verifyAll } from 'approvals/lib/Providers/Jest/JestApprovals';
import { verifyAllCombinations2 } from 'approvals/lib/Providers/Jest/CombinationApprovals';
import { Options } from 'approvals/lib/Core/Options';Mocha/Other
const approvals = require('approvals');Core Patterns
verify() - Basic verification
verify(result);
approvals.verify(__dirname, 'test_name', result);verifyAsJson() - Objects as formatted JSON
verifyAsJson(user);
approvals.verifyAsJSON(__dirname, 'test_name', user);verifyAll() - Collections with labels
verifyAll('Users', users, (u) => `${u.name}: ${u.email}`);Scrubbing
approvals.verifyAndScrub(
__dirname, 'test_name', result,
(text) => text.replace(/\d{4}-\d{2}-\d{2}/, '<DATE>')
);State Progressions (Storyboard pattern)
No built-in class, but implement via string building:
let story = '';
story += 'Initial:\n' + game.toString() + '\n\n';
game.advance();
story += 'After move:\n' + game.toString() + '\n\n';
game.pickUp('sword');
story += 'After pickup:\n' + game.toString();
verify(story);Node.js-Specific Notes
__dirname required - Mocha/raw API needs directory path for file location.
Jest integration - Cleaner API without __dirname, auto-detects test name.
TypeScript - Full type definitions included.
Git Setup
*.received.*Commit all .approved.* files.
Reference Files
- api.md - All verify functions, Options, combinations, Namer/Writer interfaces
- scrubbers.md - GUIDs, dates, regex patterns, combining scrubbers
- reporters.md - Diff tools, MultiReporter, custom reporters
- setup.md - Mocha/Jest setup, CI config
- inline.md - Not supported; alternatives (Jest snapshots, assertions)