'use strict'; var util = require('util'); var path = require('path'); var fs = require('fs'); var chalk = require('chalk'); var unescapeStr = (str) => str.replace(/\\\|/g, '\|').replace(/\\\\/g, '\\'); module.exports = function (expected, actual) { let headers = expected.raw()[0]; let expected_keys = expected.hashes(); let diff = []; let hasErrors = false; var good = 0, bad = 0; expected_keys.forEach((row, i) => { var rowError = false; for (var j in row) { if (unescapeStr(row[j]) != actual[i][j]) { rowError = true; hasErrors = true; break; } } if (rowError) { bad++; diff.push(Object.assign({}, row, {c_status: 'undefined'})); diff.push(Object.assign({}, actual[i], {c_status: 'comment'})); } else { good++; diff.push(row); } }); if (!hasErrors) return null; var s = ['Tables were not identical:']; s.push(headers.map(key => ' ' + key).join(' | ')); diff.forEach((row) => { var rowString = '| '; headers.forEach((header) => { if (!row.c_status) rowString += chalk.green(' ' + row[header] + ' | '); else if (row.c_status === 'undefined') rowString += chalk.yellow('(-) ' + row[header] + ' | '); else rowString += chalk.red('(+) ' + row[header] + ' | '); }); s.push(rowString); }); return s.join('\n') + '\nTODO this is a temp workaround waiting for https://github.com/cucumber/cucumber-js/issues/534'; };