mochawesome-local-screenshots
Version:
A Gorgeous HTML/CSS Reporter for Mocha.js - updated with local screenshot management
583 lines (541 loc) • 47.1 kB
JavaScript
var Handlebars = require("handlebars");
var Helper = require('./templateHelper.js');
Handlebars.registerPartial("_quickSummary", Handlebars.template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
var helper, alias1=helpers.helperMissing, alias2=this.escapeExpression, alias3="function";
return "<ul class=\"list-unstyled quick-summary\">\n <li class=\"qs-item summary-duration\" title=\"Duration\">"
+ alias2((helpers.formatSummaryDuration || (depth0 && depth0.formatSummaryDuration) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"formatSummaryDuration","hash":{},"data":data}))
+ "<span>"
+ alias2((helpers.getSummaryDurationUnits || (depth0 && depth0.getSummaryDurationUnits) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"getSummaryDurationUnits","hash":{},"data":data}))
+ "</span></li>\n <li class=\"qs-item summary-suites\" title=\"Tests\">"
+ alias2(((helper = (helper = helpers.suites || (depth0 != null ? depth0.suites : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"suites","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"qs-item summary-tests\" title=\"Steps\">"
+ alias2(((helper = (helper = helpers.testsRegistered || (depth0 != null ? depth0.testsRegistered : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"testsRegistered","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"qs-item summary-passes\" title=\"Passed\" data-filter=\"passed\">"
+ alias2(((helper = (helper = helpers.passes || (depth0 != null ? depth0.passes : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"passes","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"qs-item summary-failures\" title=\"Failed\" data-filter=\"failed\">"
+ alias2(((helper = (helper = helpers.failures || (depth0 != null ? depth0.failures : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"failures","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"qs-item summary-pending\" title=\"Pending\" data-filter=\"pending\">"
+ alias2(((helper = (helper = helpers.pending || (depth0 != null ? depth0.pending : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"pending","hash":{},"data":data}) : helper)))
+ "</li>\n</ul>";
},"useData":true}));
/*global Handlebars*/
var moment = require('moment');
function getDurationObj(durationInMilliseconds) {
'use strict';
var dur = moment.duration(durationInMilliseconds, 'ms');
return {
duration: dur,
hrs: dur.get('h'),
min: dur.get('m'),
sec: dur.get('s'),
ms: dur.get('ms')
};
}
Handlebars.registerHelper('isBlank', function (context, options) {
'use strict';
return context === '' ? options.fn(this) : options.inverse(this);
});
Handlebars.registerHelper('getPlural', function (context) {
'use strict';
return context === 1 ? '' : 's';
});
Handlebars.registerHelper('formatSummaryDuration', function (context) {
'use strict';
var dur = getDurationObj(context);
if (dur.hrs < 1) {
if (dur.min < 1) {
if (dur.sec < 1) {
return context;
}
return dur.sec + '.' + dur.ms;
}
return dur.min + ':' + (dur.sec < 10 ? ('0' + dur.sec) : dur.sec);
}
return dur.hrs + ':' + (dur.min < 10 ? ('0' + dur.min) : dur.min);
});
Handlebars.registerHelper('getSummaryDurationUnits', function (context) {
'use strict';
var dur = getDurationObj(context);
if (dur.hrs < 1) {
if (dur.min < 1) {
if (dur.sec < 1) {
return 'MS';
}
return 'S';
}
return 'M';
}
return 'H';
});
Handlebars.registerHelper('formatDuration', function (context) {
'use strict';
var dur = getDurationObj(context);
if (dur.hrs < 1) {
if (dur.min < 1) {
if (dur.sec < 1) {
return context + ' ms';
}
return dur.sec + '.' + dur.ms + ' s';
}
return dur.min + ':' + (dur.sec < 10 ? ('0' + dur.sec) : dur.sec) + '.' + dur.ms + ' m';
}
return dur.hrs + ':' + (dur.min < 10 ? ('0' + dur.min) : dur.min) + ':' + (dur.sec < 10 ? ('0' + dur.sec) : dur.sec) + '.' + dur.ms + ' h';
});
Handlebars.registerHelper('dateFormat', function(context, format) {
'use strict';
if (format === 'fromNow') {
return moment(context).fromNow();
} else {
return moment(context).format(format);
}
});
exports["mochawesome"] = Handlebars.template({"1":function(depth0,helpers,partials,data) {
var stack1;
return "<style>"
+ ((stack1 = (helpers.inlineAsset || (depth0 && depth0.inlineAsset) || helpers.helperMissing).call(depth0,"styles",{"name":"inlineAsset","hash":{},"data":data})) != null ? stack1 : "")
+ "</style>";
},"3":function(depth0,helpers,partials,data) {
return "<link rel=\"stylesheet\" href=\"css/mochawesome.css\">";
},"5":function(depth0,helpers,partials,data) {
var stack1;
return ((stack1 = this.invokePartial(partials._quickSummary,depth0,{"name":"_quickSummary","data":data,"indent":" ","helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"7":function(depth0,helpers,partials,data) {
var stack1;
return ((stack1 = this.invokePartial(partials._summary,depth0,{"name":"_summary","data":data,"indent":" ","helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"9":function(depth0,helpers,partials,data) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=helpers.blockHelperMissing, buffer = "";
stack1 = ((helper = (helper = helpers.hasOther || (depth0 != null ? depth0.hasOther : depth0)) != null ? helper : alias1),(options={"name":"hasOther","hash":{},"fn":this.program(10, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasOther) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasSkipped || (depth0 != null ? depth0.hasSkipped : depth0)) != null ? helper : alias1),(options={"name":"hasSkipped","hash":{},"fn":this.program(12, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasSkipped) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer;
},"10":function(depth0,helpers,partials,data) {
return " has-failed-hooks";
},"12":function(depth0,helpers,partials,data) {
return " has-skipped-tests";
},"14":function(depth0,helpers,partials,data) {
var stack1;
return ((stack1 = this.invokePartial(partials._statusbar,depth0,{"name":"_statusbar","data":data,"indent":" ","helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"16":function(depth0,helpers,partials,data) {
var stack1;
return ((stack1 = this.invokePartial(partials._suite,depth0,{"name":"_suite","data":data,"indent":" ","helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"18":function(depth0,helpers,partials,data) {
var stack1;
return " <script type=\"text/javascript\">"
+ ((stack1 = (helpers.inlineAsset || (depth0 && depth0.inlineAsset) || helpers.helperMissing).call(depth0,"scripts",{"name":"inlineAsset","hash":{},"data":data})) != null ? stack1 : "")
+ "</script>\n";
},"20":function(depth0,helpers,partials,data) {
return " <script src=\"js/vendor.js\"></script>\n <script src=\"js/mochawesome.js\"></script>\n";
},"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=helpers.blockHelperMissing, alias4=this.escapeExpression, buffer =
"<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>Mochawesome Report Card</title>\n ";
stack1 = ((helper = (helper = helpers.inlineAssets || (depth0 != null ? depth0.inlineAssets : depth0)) != null ? helper : alias1),(options={"name":"inlineAssets","hash":{},"fn":this.program(1, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.inlineAssets) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += "\n ";
stack1 = ((helper = (helper = helpers.inlineAssets || (depth0 != null ? depth0.inlineAssets : depth0)) != null ? helper : alias1),(options={"name":"inlineAssets","hash":{},"fn":this.noop,"inverse":this.program(3, data, 0),"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.inlineAssets) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += "\n </head>\n <body>\n <!-- NAVBAR -->\n <div class=\"navbar navbar-inverse navbar-fixed-top\" role=\"navigation\">\n <div id=\"logo\"><img src=\"http://www.coxmediagroup.com/assets/images/cox-media-logo-white.png\"></div>\n <div class=\"container\">\n <div class=\"report-info-cnt\">\n <h1 class=\"report-title\">"
+ alias4(((helper = (helper = helpers.reportTitle || (depth0 != null ? depth0.reportTitle : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"reportTitle","hash":{},"data":data}) : helper)))
+ "</h1>\n <h3 class=\"report-date\">"
+ alias4((helpers.dateFormat || (depth0 && depth0.dateFormat) || alias1).call(depth0,((stack1 = (depth0 != null ? depth0.stats : depth0)) != null ? stack1.end : stack1),"dddd, MMMM D YYYY, hh:mma",{"name":"dateFormat","hash":{},"data":data}))
+ "</h3>\n </div>\n <div class=\"quick-summary-cnt\">\n";
stack1 = ((helper = (helper = helpers.stats || (depth0 != null ? depth0.stats : depth0)) != null ? helper : alias1),(options={"name":"stats","hash":{},"fn":this.program(5, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.stats) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += " </div>\n </div>\n </div>\n\n <!-- Report Summary -->\n <div class=\"summary\">\n <div class=\"container\">\n";
stack1 = ((helper = (helper = helpers.stats || (depth0 != null ? depth0.stats : depth0)) != null ? helper : alias1),(options={"name":"stats","hash":{},"fn":this.program(7, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.stats) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += " </div>\n </div>\n <div class=\"statusbar";
stack1 = ((helper = (helper = helpers.stats || (depth0 != null ? depth0.stats : depth0)) != null ? helper : alias1),(options={"name":"stats","hash":{},"fn":this.program(9, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.stats) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += "\">\n <div class=\"container\">\n";
stack1 = ((helper = (helper = helpers.stats || (depth0 != null ? depth0.stats : depth0)) != null ? helper : alias1),(options={"name":"stats","hash":{},"fn":this.program(14, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.stats) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += " </div>\n </div>\n\n <!-- Suites -->\n <div class=\"details container\">\n";
stack1 = ((helper = (helper = helpers.suites || (depth0 != null ? depth0.suites : depth0)) != null ? helper : alias1),(options={"name":"suites","hash":{},"fn":this.program(16, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.suites) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += " </div>\n\n <footer>\n <div class=\"container\">\n <p>Report generated by <a href=\"http://adamgruber.github.io/mochawesome/\" target=\"_blank\">mochawesome</a>. Designed and built by <a href=\"https://github.com/adamgruber\" target=\"_blank\">adamgruber</a>.<br/>Customized by <strong>CMG QA Automation</strong>. ©"
+ alias4(((helper = (helper = helpers.copyrightYear || (depth0 != null ? depth0.copyrightYear : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"copyrightYear","hash":{},"data":data}) : helper)))
+ ".</p>\n </div>\n </footer>\n\n <!-- Scripts -->\n";
stack1 = ((helper = (helper = helpers.inlineAssets || (depth0 != null ? depth0.inlineAssets : depth0)) != null ? helper : alias1),(options={"name":"inlineAssets","hash":{},"fn":this.program(18, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.inlineAssets) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.inlineAssets || (depth0 != null ? depth0.inlineAssets : depth0)) != null ? helper : alias1),(options={"name":"inlineAssets","hash":{},"fn":this.noop,"inverse":this.program(20, data, 0),"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.inlineAssets) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + " </body>\n</html>\n";
},"usePartial":true,"useData":true});
/*global Handlebars, __dirname*/
var moment = require('moment');
var path = require('path');
var fs = require('fs');
function getDurationObj(durationInMilliseconds) {
'use strict';
var dur = moment.duration(durationInMilliseconds, 'ms');
return {
duration: dur,
hrs: dur.get('h'),
min: dur.get('m'),
sec: dur.get('s'),
ms: dur.get('ms')
};
}
Handlebars.registerHelper('isBlank', function (context, options) {
'use strict';
return context === '' ? options.fn(this) : options.inverse(this);
});
Handlebars.registerHelper('getPlural', function (context) {
'use strict';
return context === 1 ? '' : 's';
});
Handlebars.registerHelper('formatSummaryDuration', function (context) {
'use strict';
var dur = getDurationObj(context);
if (dur.hrs < 1) {
if (dur.min < 1) {
if (dur.sec < 1) {
return context;
}
return dur.sec + '.' + dur.ms;
}
return dur.min + ':' + (dur.sec < 10 ? ('0' + dur.sec) : dur.sec);
}
return dur.hrs + ':' + (dur.min < 10 ? ('0' + dur.min) : dur.min);
});
Handlebars.registerHelper('getSummaryDurationUnits', function (context) {
'use strict';
var dur = getDurationObj(context);
if (dur.hrs < 1) {
if (dur.min < 1) {
if (dur.sec < 1) {
return 'MS';
}
return 'S';
}
return 'M';
}
return 'H';
});
Handlebars.registerHelper('formatDuration', function (context) {
'use strict';
var dur = getDurationObj(context);
if (dur.hrs < 1) {
if (dur.min < 1) {
if (dur.sec < 1) {
return context + ' ms';
}
return dur.sec + '.' + dur.ms + ' s';
}
return dur.min + ':' + (dur.sec < 10 ? ('0' + dur.sec) : dur.sec) + '.' + dur.ms + ' m';
}
return dur.hrs + ':' + (dur.min < 10 ? ('0' + dur.min) : dur.min) + ':' + (dur.sec < 10 ? ('0' + dur.sec) : dur.sec) + '.' + dur.ms + ' h';
});
Handlebars.registerHelper('dateFormat', function(context, format) {
'use strict';
if (format === 'fromNow') {
return moment(context).fromNow();
} else {
return moment(context).format(format);
}
});
Handlebars.registerHelper('inlineAsset', function(context) {
'use strict';
var distDir = path.join(__dirname, '..', 'dist');
switch (context) {
case 'styles':
return fs.readFileSync(path.join(distDir, 'css', 'mochawesome-64.css'));
case 'scripts':
var vendorScripts = fs.readFileSync(path.join(distDir, 'js', 'vendor.js'));
var mochawesomeScript = fs.readFileSync(path.join(distDir, 'js', 'mochawesome.js'));
return vendorScripts + '\n' + mochawesomeScript;
}
});
Handlebars.registerPartial("_statusbar", Handlebars.template({"1":function(depth0,helpers,partials,data) {
var helper, alias1=helpers.helperMissing, alias2=this.escapeExpression;
return " <div class=\"status-item status-item-hooks danger\">"
+ alias2(((helper = (helper = helpers.other || (depth0 != null ? depth0.other : depth0)) != null ? helper : alias1),(typeof helper === "function" ? helper.call(depth0,{"name":"other","hash":{},"data":data}) : helper)))
+ " Failed Hook"
+ alias2((helpers.getPlural || (depth0 && depth0.getPlural) || alias1).call(depth0,(depth0 != null ? depth0.other : depth0),{"name":"getPlural","hash":{},"data":data}))
+ "</div>\n";
},"3":function(depth0,helpers,partials,data) {
var helper, alias1=helpers.helperMissing, alias2=this.escapeExpression;
return " <div class=\"status-item status-item-skipped danger\">"
+ alias2(((helper = (helper = helpers.skipped || (depth0 != null ? depth0.skipped : depth0)) != null ? helper : alias1),(typeof helper === "function" ? helper.call(depth0,{"name":"skipped","hash":{},"data":data}) : helper)))
+ " Skipped Step"
+ alias2((helpers.getPlural || (depth0 && depth0.getPlural) || alias1).call(depth0,(depth0 != null ? depth0.skipped : depth0),{"name":"getPlural","hash":{},"data":data}))
+ "</div>\n";
},"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=helpers.blockHelperMissing, alias4=this.escapeExpression, buffer =
"<div class=\"row\">\n";
stack1 = ((helper = (helper = helpers.hasOther || (depth0 != null ? depth0.hasOther : depth0)) != null ? helper : alias1),(options={"name":"hasOther","hash":{},"fn":this.program(1, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasOther) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasSkipped || (depth0 != null ? depth0.hasSkipped : depth0)) != null ? helper : alias1),(options={"name":"hasSkipped","hash":{},"fn":this.program(3, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasSkipped) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + " <div class=\"status-item status-item-pending-pct\">"
+ alias4(((helper = (helper = helpers.pendingPercent || (depth0 != null ? depth0.pendingPercent : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"pendingPercent","hash":{},"data":data}) : helper)))
+ "% Pending</div>\n <div class=\"status-item status-item-passing-pct "
+ alias4(((helper = (helper = helpers.passPercentClass || (depth0 != null ? depth0.passPercentClass : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"passPercentClass","hash":{},"data":data}) : helper)))
+ "\">"
+ alias4(((helper = (helper = helpers.passPercent || (depth0 != null ? depth0.passPercent : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"passPercent","hash":{},"data":data}) : helper)))
+ "% Passing</div>\n</div>";
},"useData":true}));
Handlebars.registerPartial("_suite", Handlebars.template({"1":function(depth0,helpers,partials,data) {
var stack1, helper, options, buffer = "";
stack1 = ((helper = (helper = helpers.suites || (depth0 != null ? depth0.suites : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"suites","hash":{},"fn":this.program(2, data, 0),"inverse":this.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0,options) : helper));
if (!helpers.suites) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer;
},"2":function(depth0,helpers,partials,data) {
var stack1;
return " "
+ ((stack1 = this.invokePartial(partials._suite,depth0,{"name":"_suite","data":data,"helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"4":function(depth0,helpers,partials,data) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=helpers.blockHelperMissing, buffer =
"<section class=\"suite-wrap\">\n <div id=\""
+ this.escapeExpression(((helper = (helper = helpers.uuid || (depth0 != null ? depth0.uuid : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"uuid","hash":{},"data":data}) : helper)))
+ "\" class=\"suite";
stack1 = ((helper = (helper = helpers.root || (depth0 != null ? depth0.root : depth0)) != null ? helper : alias1),(options={"name":"root","hash":{},"fn":this.program(5, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.root) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasSuites || (depth0 != null ? depth0.hasSuites : depth0)) != null ? helper : alias1),(options={"name":"hasSuites","hash":{},"fn":this.program(7, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasSuites) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasTests || (depth0 != null ? depth0.hasTests : depth0)) != null ? helper : alias1),(options={"name":"hasTests","hash":{},"fn":this.program(9, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasTests) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasPasses || (depth0 != null ? depth0.hasPasses : depth0)) != null ? helper : alias1),(options={"name":"hasPasses","hash":{},"fn":this.program(11, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasPasses) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasFailures || (depth0 != null ? depth0.hasFailures : depth0)) != null ? helper : alias1),(options={"name":"hasFailures","hash":{},"fn":this.program(13, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasFailures) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasPending || (depth0 != null ? depth0.hasPending : depth0)) != null ? helper : alias1),(options={"name":"hasPending","hash":{},"fn":this.program(15, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasPending) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.hasSkipped || (depth0 != null ? depth0.hasSkipped : depth0)) != null ? helper : alias1),(options={"name":"hasSkipped","hash":{},"fn":this.program(17, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasSkipped) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += "\">\n <h3 class=\"suite-title\">"
+ ((stack1 = (helpers.isBlank || (depth0 && depth0.isBlank) || alias1).call(depth0,(depth0 != null ? depth0.title : depth0),{"name":"isBlank","hash":{},"fn":this.program(19, data, 0),"inverse":this.program(21, data, 0),"data":data})) != null ? stack1 : "")
+ "</h3>\n <h5 class=\"suite-filename\">"
+ ((stack1 = (helpers.isBlank || (depth0 && depth0.isBlank) || alias1).call(depth0,(depth0 != null ? depth0.file : depth0),{"name":"isBlank","hash":{},"fn":this.program(19, data, 0),"inverse":this.program(23, data, 0),"data":data})) != null ? stack1 : "")
+ "</h5>\n";
stack1 = ((helper = (helper = helpers.hasTests || (depth0 != null ? depth0.hasTests : depth0)) != null ? helper : alias1),(options={"name":"hasTests","hash":{},"fn":this.program(25, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.hasTests) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += "\n";
stack1 = ((helper = (helper = helpers.suites || (depth0 != null ? depth0.suites : depth0)) != null ? helper : alias1),(options={"name":"suites","hash":{},"fn":this.program(28, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.suites) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + "\n </div>\n</section>\n";
},"5":function(depth0,helpers,partials,data) {
return " root-suite";
},"7":function(depth0,helpers,partials,data) {
return " has-suites";
},"9":function(depth0,helpers,partials,data) {
return " has-tests";
},"11":function(depth0,helpers,partials,data) {
return " has-passed";
},"13":function(depth0,helpers,partials,data) {
return " has-failed";
},"15":function(depth0,helpers,partials,data) {
return " has-pending";
},"17":function(depth0,helpers,partials,data) {
return " has-skipped";
},"19":function(depth0,helpers,partials,data) {
return " ";
},"21":function(depth0,helpers,partials,data) {
var helper;
return this.escapeExpression(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0,{"name":"title","hash":{},"data":data}) : helper)));
},"23":function(depth0,helpers,partials,data) {
var helper;
return this.escapeExpression(((helper = (helper = helpers.file || (depth0 != null ? depth0.file : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0,{"name":"file","hash":{},"data":data}) : helper)));
},"25":function(depth0,helpers,partials,data) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=this.escapeExpression, buffer =
" <!-- Suite Chart -->\n <div class=\"suite-chart-wrap\">\n <canvas id=\""
+ alias3(((helper = (helper = helpers.uuid || (depth0 != null ? depth0.uuid : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"uuid","hash":{},"data":data}) : helper)))
+ "\" class=\"suite-chart\" width=\"50\" height=\"50\" data-total-passes=\""
+ alias3(((helper = (helper = helpers.totalPasses || (depth0 != null ? depth0.totalPasses : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalPasses","hash":{},"data":data}) : helper)))
+ "\" data-total-failures=\""
+ alias3(((helper = (helper = helpers.totalFailures || (depth0 != null ? depth0.totalFailures : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalFailures","hash":{},"data":data}) : helper)))
+ "\" data-total-pending=\""
+ alias3(((helper = (helper = helpers.totalPending || (depth0 != null ? depth0.totalPending : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalPending","hash":{},"data":data}) : helper)))
+ "\" data-total-skipped=\""
+ alias3(((helper = (helper = helpers.totalSkipped || (depth0 != null ? depth0.totalSkipped : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalSkipped","hash":{},"data":data}) : helper)))
+ "\"></canvas>\n </div>\n <div class=\"suite-data-wrap\">\n <!-- Suite Summary -->\n <ul class=\"suite-summary list-unstyled\">\n <li class=\"suite-summary-item duration\">"
+ alias3((helpers.formatDuration || (depth0 && depth0.formatDuration) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"formatDuration","hash":{},"data":data}))
+ "</li>\n <li class=\"suite-summary-item tests\">"
+ alias3(((helper = (helper = helpers.totalTests || (depth0 != null ? depth0.totalTests : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalTests","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"suite-summary-item passed\">"
+ alias3(((helper = (helper = helpers.totalPasses || (depth0 != null ? depth0.totalPasses : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalPasses","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"suite-summary-item failed\">"
+ alias3(((helper = (helper = helpers.totalFailures || (depth0 != null ? depth0.totalFailures : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalFailures","hash":{},"data":data}) : helper)))
+ "</li>\n <li class=\"suite-summary-item pending\">"
+ alias3(((helper = (helper = helpers.totalPending || (depth0 != null ? depth0.totalPending : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"totalPending","hash":{},"data":data}) : helper)))
+ "</li>\n </ul>\n <!-- Test Info -->\n <div class=\"suite-test-wrap\">\n <div class=\"suite-test-header\" data-toggle=\"collapse\" data-target=\"#"
+ alias3(((helper = (helper = helpers.uuid || (depth0 != null ? depth0.uuid : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"uuid","hash":{},"data":data}) : helper)))
+ "-test-list\">\n <h4 class=\"suite-test-header-title\">Steps</h4>\n </div>\n <div id=\""
+ alias3(((helper = (helper = helpers.uuid || (depth0 != null ? depth0.uuid : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"uuid","hash":{},"data":data}) : helper)))
+ "-test-list\" class=\"list-group test-list collapse in\">\n";
stack1 = ((helper = (helper = helpers.tests || (depth0 != null ? depth0.tests : depth0)) != null ? helper : alias1),(options={"name":"tests","hash":{},"fn":this.program(26, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.tests) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + " </div>\n </div>\n </div>\n";
},"26":function(depth0,helpers,partials,data) {
var stack1;
return " "
+ ((stack1 = this.invokePartial(partials._test,depth0,{"name":"_test","data":data,"helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"28":function(depth0,helpers,partials,data) {
var stack1;
return " "
+ ((stack1 = this.invokePartial(partials._suite,depth0,{"name":"_suite","data":data,"helpers":helpers,"partials":partials})) != null ? stack1 : "");
},"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=helpers.blockHelperMissing, buffer = "";
stack1 = ((helper = (helper = helpers.rootEmpty || (depth0 != null ? depth0.rootEmpty : depth0)) != null ? helper : alias1),(options={"name":"rootEmpty","hash":{},"fn":this.program(1, data, 0),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.rootEmpty) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.rootEmpty || (depth0 != null ? depth0.rootEmpty : depth0)) != null ? helper : alias1),(options={"name":"rootEmpty","hash":{},"fn":this.noop,"inverse":this.program(4, data, 0),"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.rootEmpty) { stack1 = alias3.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer;
},"usePartial":true,"useData":true}));
Handlebars.registerPartial("_summary", Handlebars.template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
var helper, alias1=helpers.helperMissing, alias2=this.escapeExpression, alias3="function";
return "<div class=\"row\">\n <div class=\"summary-col summary-duration\">\n <h1 class=\"summary-count\">"
+ alias2((helpers.formatSummaryDuration || (depth0 && depth0.formatSummaryDuration) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"formatSummaryDuration","hash":{},"data":data}))
+ "<span>"
+ alias2((helpers.getSummaryDurationUnits || (depth0 && depth0.getSummaryDurationUnits) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"getSummaryDurationUnits","hash":{},"data":data}))
+ "</span></h1>\n <h4 class=\"summary-label\">"
+ alias2((helpers.getSummaryDurationUnits || (depth0 && depth0.getSummaryDurationUnits) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"getSummaryDurationUnits","hash":{},"data":data}))
+ "</h4>\n </div>\n <div class=\"summary-col summary-suites\" title=\"Tests\">\n <h1 class=\"summary-count\">"
+ alias2(((helper = (helper = helpers.suites || (depth0 != null ? depth0.suites : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"suites","hash":{},"data":data}) : helper)))
+ "</h1>\n <h4 class=\"summary-label\">Test"
+ alias2((helpers.getPlural || (depth0 && depth0.getPlural) || alias1).call(depth0,(depth0 != null ? depth0.suites : depth0),{"name":"getPlural","hash":{},"data":data}))
+ "</h4>\n </div>\n <div class=\"summary-col summary-tests\" title=\"Steps\">\n <h1 class=\"summary-count\">"
+ alias2(((helper = (helper = helpers.testsRegistered || (depth0 != null ? depth0.testsRegistered : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"testsRegistered","hash":{},"data":data}) : helper)))
+ "</h1>\n <h4 class=\"summary-label\">Step"
+ alias2((helpers.getPlural || (depth0 && depth0.getPlural) || alias1).call(depth0,(depth0 != null ? depth0.testsRegistered : depth0),{"name":"getPlural","hash":{},"data":data}))
+ "</h4>\n </div>\n <div class=\"summary-col summary-passes\" data-filter=\"passed\" title=\"Passed\">\n <h1 class=\"summary-count\">"
+ alias2(((helper = (helper = helpers.passes || (depth0 != null ? depth0.passes : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"passes","hash":{},"data":data}) : helper)))
+ "</h1>\n <h4 class=\"summary-label\">Passed</h4>\n </div>\n <div class=\"summary-col summary-failures\" data-filter=\"failed\" title=\"Failed\">\n <h1 class=\"summary-count\">"
+ alias2(((helper = (helper = helpers.failures || (depth0 != null ? depth0.failures : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"failures","hash":{},"data":data}) : helper)))
+ "</h1>\n <h4 class=\"summary-label\">Failed</h4>\n </div>\n <div class=\"summary-col summary-pending\" data-filter=\"pending\" title=\"Pending\">\n <h1 class=\"summary-count\">"
+ alias2(((helper = (helper = helpers.pending || (depth0 != null ? depth0.pending : depth0)) != null ? helper : alias1),(typeof helper === alias3 ? helper.call(depth0,{"name":"pending","hash":{},"data":data}) : helper)))
+ "</h1>\n <h4 class=\"summary-label\">Pending</h4>\n </div>\n</div>";
},"useData":true}));
Handlebars.registerPartial("_test", Handlebars.template({"1":function(depth0,helpers,partials,data) {
return " passed";
},"3":function(depth0,helpers,partials,data) {
return " failed";
},"5":function(depth0,helpers,partials,data) {
return " pending";
},"7":function(depth0,helpers,partials,data) {
return " skipped";
},"9":function(depth0,helpers,partials,data) {
var helper, alias1=helpers.helperMissing, alias2="function", alias3=this.escapeExpression;
return " <div class=\"pull-right\">\n <button class=\"btn btn-link btn-sm toggle-btn toggle-code collapsed\" data-toggle=\"collapse\" data-target=\"#"
+ alias3(((helper = (helper = helpers.uuid || (depth0 != null ? depth0.uuid : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"uuid","hash":{},"data":data}) : helper)))
+ " > .test-code.collapse\">Code</button>\n <span class=\"test-duration "
+ alias3(((helper = (helper = helpers.speed || (depth0 != null ? depth0.speed : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"speed","hash":{},"data":data}) : helper)))
+ "\">"
+ alias3((helpers.formatDuration || (depth0 && depth0.formatDuration) || alias1).call(depth0,(depth0 != null ? depth0.duration : depth0),{"name":"formatDuration","hash":{},"data":data}))
+ "</span>\n </div>\n";
},"17":function(depth0,helpers,partials,data,blockParams,depths) {
var helper, alias1 = helpers.helperMissing, alias2 = "function", alias3 = this.escapeExpression;
return "\n <p class=\"test-screenshot\">"
+ "<button class=\"btn btn-link btn-sm toggle-btn toggle-stack collapsed\" data-toggle=\"collapse\" data-target=\"#"
+ alias3(this.lambda((depths[1] != null ? depths[1].uuid : depths[1]), depth0))
+ " > .test-scr.collapse\">Screenshot </button>\n </p>\n<br/>";
},"19":function(depth0,helpers) {
var stack1, helper;
return " <div class=\"test-scr collapse\">\n <pre><code class=\"hljs small\">"
+ ((stack1 = ((helper = (helper = helpers.scr || (depth0 != null ? depth0 : depth0)) != null ? helper : helpers.helperMissing), (typeof helper === "function" ? helper.call(depth0, {
"name": "scr",
"hash": {},
"data": data
}) : helper))) != null ? stack1 : "")
+ "</code></pre>\n </div>\n";
},"11":function(depth0,helpers,partials,data,blockParams,depths) {
var helper, alias1=helpers.helperMissing, alias2="function", alias3=this.escapeExpression;
return " <p class=\"test-error-message\">"
+ alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"name","hash":{},"data":data}) : helper)))
+ ": "
+ alias3(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"message","hash":{},"data":data}) : helper)))
+ "\n <button class=\"btn btn-link btn-sm toggle-btn toggle-stack collapsed\" data-toggle=\"collapse\" data-target=\"#"
+ alias3(this.lambda((depths[1] != null ? depths[1].uuid : depths[1]), depth0))
+ " > .test-error-stack.collapse\">Stack</button>\n </p>\n"
+ " <p class=\"test-error-screenshot\">"
+ "<button class=\"btn btn-link btn-sm toggle-btn toggle-stack collapsed\" data-toggle=\"collapse\" data-target=\"#"
+ alias3(this.lambda((depths[1] != null ? depths[1].uuid : depths[1]), depth0))
+ " > .test-error-scr.collapse\">Screenshot </button>\n </p>\n<br/>";
},"13":function(depth0,helpers,partials,data) {
var stack1, helper;
return " <div class=\"test-error-stack collapse\">\n <pre><code class=\"hljs small\">"
+ ((stack1 = ((helper = (helper = helpers.stack || (depth0 != null ? 'Difference between Expected(+) and Actual(-):\n' + Helper.printDifferences(depth0, false) +
'\n\nExpected:\n' + depth0.expected + '\n\nActual:\n' + depth0.actual + '\n\nStack:\n' + depth0.stack : depth0)) != null ? helper : helpers.helperMissing), (typeof helper === "function" ? helper.call(depth0, { "name": "stack", "hash": {}, "data": data }) : helper))) != null ? stack1 : "")
+ "</code></pre>\n </div>\n";
},"15":function(depth0,helpers) {
var stack1, helper;
return " <div class=\"test-error-scr collapse\">\n <pre><code class=\"hljs small\">"
+ ((stack1 = ((helper = (helper = helpers.stack || (depth0 != null ? depth0.scr: depth0)) != null ? helper : helpers.helperMissing), (typeof helper === "function" ? helper.call(depth0, { "name": "scr", "hash": {}, "data": data }) : helper))) != null ? stack1 : "")
+ "</code></pre>\n </div>\n";
},"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data,blockParams,depths) {
var stack1, helper, options, alias1=helpers.helperMissing, alias2="function", alias3=this.escapeExpression, alias4=helpers.blockHelperMissing, buffer =
"<div id=\""
+ alias3(((helper = (helper = helpers.uuid || (depth0 != null ? depth0.uuid : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"uuid","hash":{},"data":data}) : helper)))
+ "\" class=\"list-group-item test";
stack1 = ((helper = (helper = helpers.pass || (depth0 != null ? depth0.pass : depth0)) != null ? helper : alias1),(options={"name":"pass","hash":{},"fn":this.program(1, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.pass) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.fail || (depth0 != null ? depth0.fail : depth0)) != null ? helper : alias1),(options={"name":"fail","hash":{},"fn":this.program(3, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.fail) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.pending || (depth0 != null ? depth0.pending : depth0)) != null ? helper : alias1),(options={"name":"pending","hash":{},"fn":this.program(5, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.pending) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.skipped || (depth0 != null ? depth0.skipped : depth0)) != null ? helper : alias1),(options={"name":"skipped","hash":{},"fn":this.program(7, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.skipped) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += "\">\n <!-- Test Heading -->\n <div class=\"test-heading\">\n <h4 class=\"test-title\">\n <span class=\"text-muted hidden\"> it </span>\n "
+ alias3(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"title","hash":{},"data":data}) : helper)))
+ "\n </h4>\n";
stack1 = ((helper = (helper = helpers.pending || (depth0 != null ? depth0.pending : depth0)) != null ? helper : alias1),(options={"name":"pending","hash":{},"fn":this.noop,"inverse":this.program(9, data, 0, blockParams, depths),"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.pending) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += " </div>\n <!-- Test Errors -->\n";
if (!helpers.pending) { if (depth0.pass && data.root.passedScr) {
stack1 = ((helper = (helper = helpers.pending || (depth0 != null ? depth0.pending : depth0)) != null ? helper : alias1), (options = {
"name": "pending","hash": {},"fn": this.noop,"inverse": this.program(17, data, 0, blockParams, depths),"data": data}), (typeof helper === alias2 ? helper.call(depth0, options) : helper));
stack1 = alias4.call(depth0, stack1, options)
if (stack1 != null) {buffer += stack1;}
}};
stack1 = ((helper = (helper = helpers.err || (depth0 != null ? depth0.err : depth0)) != null ? helper : alias1),(options={"name":"err","hash":{},"fn":this.program(11, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.err) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
buffer += " <!-- Test Code -->\n <div class=\"test-code collapse\">\n <pre><code class=\"hljs javascript small\">"
+ ((stack1 = ((helper = (helper = helpers.code || (depth0 != null ? depth0.code : depth0)) != null ? helper : alias1),(typeof helper === alias2 ? helper.call(depth0,{"name":"code","hash":{},"data":data}) : helper))) != null ? stack1 : "")
+ "</code></pre>\n </div>\n <!-- Test Error Stack -->\n";
if (!helpers.pending) { if (depth0.pass && data.root.passedScr) {
stack1 = ((helper = (helper = helpers.scr || (depth0 != null ? depth0.scr : depth0)) != null ? helper : alias1), (options = {
"name": "scr","hash": {},"fn": this.program(19, data, 0, blockParams, depths),"inverse": this.noop,"data": data}), (typeof helper === alias2 ? helper.call(depth0, options) : helper));
stack1 = alias4.call(depth0, stack1, options)
if (stack1 != null) {buffer += stack1;}
}};
stack1 = ((helper = (helper = helpers.err || (depth0 != null ? depth0.err : depth0)) != null ? helper : alias1),(options={"name":"err","hash":{},"fn":this.program(13, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.err) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
stack1 = ((helper = (helper = helpers.err || (depth0 != null ? depth0.err : depth0)) != null ? helper : alias1),(options={"name":"err","hash":{},"fn":this.program(15, data, 0, blockParams, depths),"inverse":this.noop,"data":data}),(typeof helper === alias2 ? helper.call(depth0,options) : helper));
if (!helpers.err) { stack1 = alias4.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + "</div>";
},"useData":true,"useDepths":true}));