UNPKG

cypress-plugin-snapshots

Version:
68 lines (58 loc) 1.65 kB
const { merge, cloneDeep } = require('lodash'); const applyReplace = require('../utils/text/applyReplace'); const { createDiff, formatDiff, getSnapshot, subjectToSnapshot, updateSnapshot, } = require('../utils/tasks/textSnapshots'); const getSnapshotFilename = require('../utils/text/getSnapshotFilename'); const keepKeysFromExpected = require('../utils/text/keepKeysFromExpected'); const { getConfig } = require('../config'); function matchTextSnapshot({ commandName, dataType, options, snapshotTitle, subject, testFile, } = {}) { const config = merge({}, cloneDeep(getConfig()), options); const snapshotFile = getSnapshotFilename(testFile); const expectedRaw = getSnapshot(snapshotFile, snapshotTitle, dataType); let expected = applyReplace(expectedRaw, config.replace); const actual = keepKeysFromExpected(subjectToSnapshot(subject, dataType, config), expected, config); const exists = expected !== false; const autoPassed = (config.autopassNewSnapshots && expected === false); const passed = (expected && formatDiff(expected) === formatDiff(actual)); const diff = createDiff(expected, actual, snapshotTitle); let updated = false; if ((config.updateSnapshots && !passed) || expected === false) { updateSnapshot(snapshotFile, snapshotTitle, actual, dataType); updated = true; } if (autoPassed) { expected = actual; } const result = { actual, commandName, dataType, diff, exists, expected, passed: passed || autoPassed, snapshotFile, snapshotTitle, subject, updated, }; return result; } module.exports = matchTextSnapshot;