Best JavaScript code snippet using backstopjs
dmpWorker.js
Source:dmpWorker.js
1'use strict'2// external modules3var DiffMatchPatch = require('diff-match-patch')4var dmp = new DiffMatchPatch()5// core6var config = require('../config')7var logger = require('../logger')8process.on('message', function (data) {9 if (!data || !data.msg || !data.cacheKey) {10 return logger.error('dmp worker error: not enough data')11 }12 switch (data.msg) {13 case 'create patch':14 if (!data.hasOwnProperty('lastDoc') || !data.hasOwnProperty('currDoc')) {15 return logger.error('dmp worker error: not enough data on create patch')16 }17 try {18 var patch = createPatch(data.lastDoc, data.currDoc)19 process.send({20 msg: 'check',21 result: patch,22 cacheKey: data.cacheKey23 })24 } catch (err) {25 logger.error('dmp worker error', err)26 process.send({27 msg: 'error',28 error: err,29 cacheKey: data.cacheKey30 })31 }32 break33 case 'get revision':34 if (!data.hasOwnProperty('revisions') || !data.hasOwnProperty('count')) {35 return logger.error('dmp worker error: not enough data on get revision')36 }37 try {38 var result = getRevision(data.revisions, data.count)39 process.send({40 msg: 'check',41 result: result,42 cacheKey: data.cacheKey43 })44 } catch (err) {45 logger.error('dmp worker error', err)46 process.send({47 msg: 'error',48 error: err,49 cacheKey: data.cacheKey50 })51 }52 break53 }54})55function createPatch (lastDoc, currDoc) {56 var msStart = (new Date()).getTime()57 var diff = dmp.diff_main(lastDoc, currDoc)58 var patch = dmp.patch_make(lastDoc, diff)59 patch = dmp.patch_toText(patch)60 var msEnd = (new Date()).getTime()61 if (config.debug) {62 logger.info(patch)63 logger.info((msEnd - msStart) + 'ms')64 }65 return patch66}67function getRevision (revisions, count) {68 var msStart = (new Date()).getTime()69 var startContent = null70 var lastPatch = []71 var applyPatches = []72 var authorship = []73 if (count <= Math.round(revisions.length / 2)) {74 // start from top to target75 for (let i = 0; i < count; i++) {76 let revision = revisions[i]77 if (i === 0) {78 startContent = revision.content || revision.lastContent79 }80 if (i !== count - 1) {81 let patch = dmp.patch_fromText(revision.patch)82 applyPatches = applyPatches.concat(patch)83 }84 lastPatch = revision.patch85 authorship = revision.authorship86 }87 // swap DIFF_INSERT and DIFF_DELETE to achieve unpatching88 for (let i = 0, l = applyPatches.length; i < l; i++) {89 for (let j = 0, m = applyPatches[i].diffs.length; j < m; j++) {90 var diff = applyPatches[i].diffs[j]91 if (diff[0] === DiffMatchPatch.DIFF_INSERT) { diff[0] = DiffMatchPatch.DIFF_DELETE } else if (diff[0] === DiffMatchPatch.DIFF_DELETE) { diff[0] = DiffMatchPatch.DIFF_INSERT }92 }93 }94 } else {95 // start from bottom to target96 var l = revisions.length - 197 for (var i = l; i >= count - 1; i--) {98 let revision = revisions[i]99 if (i === l) {100 startContent = revision.lastContent101 authorship = revision.authorship102 }103 if (revision.patch) {104 const patch = dmp.patch_fromText(revision.patch)105 applyPatches = applyPatches.concat(patch)106 }107 lastPatch = revision.patch108 authorship = revision.authorship109 }110 }111 try {112 var finalContent = dmp.patch_apply(applyPatches, startContent)[0]113 } catch (err) {114 throw new Error(err)115 }116 var data = {117 content: finalContent,118 patch: dmp.patch_fromText(lastPatch),119 authorship: authorship120 }121 var msEnd = (new Date()).getTime()122 if (config.debug) {123 logger.info((msEnd - msStart) + 'ms')124 }125 return data126}127// log uncaught exception128process.on('uncaughtException', function (err) {129 logger.error('An uncaught exception has occured.')130 logger.error(err)131 logger.error('Process will exit now.')132 process.exit(1)...
Using AI Code Generation
1var backstop = require('backstopjs');2var config = require('./backstop.json');3backstop('reference', { config: config }).then(function () {4 console.log('Reference Complete');5 backstop('test', { config: config }).then(function () {6 console.log('Test Complete');7 }).catch(function (err) {8 console.log(err);9 });10}).catch(function (err) {11 console.log(err);12});13{14 {15 },16 {17 },18 {19 }20 {21 }22 "paths": {23 },24 "engineOptions": {25 },26}27module.exports = async (page, scenario) => {28 console.log('SCENARIO
Using AI Code Generation
1var backstop = require('backstopjs');2var fs = require('fs');3var config = JSON.parse(fs.readFileSync('./backstop.json'));4backstop('reference', { config: config })5 .then(function() {6 return backstop('test', { config: config });7 })8 .then(function() {9 return backstop('approve', { config: config });10 })11 .then(function() {12 return backstop('openReport', { config: config });13 })14 .catch(function(e) {15 console.log(e);16 });
Using AI Code Generation
1const backstop = require('backstopjs');2const config = require('./backstopConfig.js');3backstop('test', {config: config})4 .then(() => {5 console.log('Test completed');6 })7 .catch((error) => {8 console.log(error);9 });
Using AI Code Generation
1var backstop = require('backstopjs');2var config = require('./backstop.json');3backstop('test', { config: config })4.then(function () {5 console.log('Done with backstopjs test!');6})7.catch(function (err) {8 console.log(err);9});10{11 {12 },13 {14 },15 {16 },17 {18 }19 {20 }21 "paths": {22 },23 "engineOptions": {24 },
Using AI Code Generation
1var backstopjs = require('backstopjs');2var config = require('./backstop.json');3var scenario = require('./scenario.json');4config.scenarios.push(scenario);5backstopjs('test', {6})7 .then(function (result) {8 console.log(result);9 })10 .catch(function (error) {11 console.log(error);12 });13{14}15{16 {17 },18 {19 },20 {21 }22 "paths": {23 },24 "engineOptions": {25 },26}
Using AI Code Generation
1var backstop = require('backstopjs');2var config = require('./backstop.json');3backstop('test', {config: config, filter: 'myScenarioName'})4 .then(function () {5 console.log('done');6 })7 .catch(function (error) {8 console.error(error);9 });
Using AI Code Generation
1const fs = require('fs');2const path = require('path');3const backstop = require('backstopjs');4const { exec } = require('child_process');5const referenceImagesDir = path.resolve(__dirname, 'reference_images');6const testImagesDir = path.resolve(__dirname, 'test_images');7const diffImagesDir = path.resolve(__dirname, 'diff_images');8const backstopConfigPath = path.resolve(__dirname, 'backstop.json');9const backstopDataPath = path.resolve(__dirname, 'backstop_data');10const backstopBitmapsTestPath = path.resolve(11);12const backstopBitmapsReferencePath = path.resolve(13);14const backstopBitmapsDiffPath = path.resolve(15);16const backstopEngineScriptsPath = path.resolve(17);18const backstopHtmlReportPath = path.resolve(19);20const backstopCiReportPath = path.resolve(21);22const backstopBitmapsTestPath = path.resolve(23);24const backstopBitmapsReferencePath = path.resolve(25);26const backstopBitmapsDiffPath = path.resolve(27);
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!