Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

gemini-gui

Package Overview
Dependencies
Maintainers
3
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gemini-gui - npm Package Compare versions

Comparing version 0.3.2 to 2.0.0

4

CHANGELOG.md
# Changelog
## 2.0.0 - 2015-12-20
* Switch to gemini@2.x (@j0tunn).
## 0.3.2 - 2015-11-02

@@ -4,0 +8,0 @@

5

lib/app.js

@@ -53,5 +53,4 @@ 'use strict';

return this._gemini.readTests(paths)
.then(function(rootSuite) {
_this._rootSuite = rootSuite;
_this._tests = new Tests(_this, rootSuite);
.then(function(suiteCollection) {
_this._tests = new Tests(_this, suiteCollection);
return _this._tests.data;

@@ -58,0 +57,0 @@ });

@@ -7,3 +7,3 @@ 'use strict';

COMPATIBLE_GEMINI = '1.x';
COMPATIBLE_GEMINI = '2.x';

@@ -10,0 +10,0 @@ module.exports = function findGemini() {

@@ -1,1 +0,1 @@

{"version":3,"file":"bundle.js","sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","lib/client","lib/client/section-list.js","lib/client/xhr.js","lib/views/partials/cswitcher.hbs","node_modules/hbsfy/runtime.js","lib/client/section.js","lib/common/tests-index.js","node_modules/handlebars/runtime.js","node_modules/handlebars/dist/cjs/handlebars.runtime.js","lib/views/partials/success-result.hbs","lib/views/partials/fail-result.hbs","lib/views/partials/error-result.hbs","lib/views/partials/skip-result.hbs","node_modules/handlebars/dist/cjs/handlebars/base.js","node_modules/handlebars/dist/cjs/handlebars/safe-string.js","node_modules/handlebars/dist/cjs/handlebars/exception.js","node_modules/handlebars/dist/cjs/handlebars/utils.js","node_modules/handlebars/dist/cjs/handlebars/runtime.js"],"names":["SectionList","this","_sectionsIndex","Index","_sections","map","call","document","querySelectorAll","node","parentNode","_findParentSectionNode","section","Section","_sectionForNode","add","require","Array","prototype","every","constructor","expandAll","forEach","expand","collapseAll","collapse","expandErrors","expandIfError","markAllAsQueued","status","markIfFinished","nodes","domNode","allChildrenFinished","isFinished","findSection","query","find","findParent","browserId","suite","state","name","parentSectionNode","classList","contains","path","getAttribute","module","exports","post","url","data","callback","xhr","XMLHttpRequest","open","setRequestHeader","onload","JSON","parse","responseText","Error","error","send","stringify","HandlebarsCompiler","template","Handlebars","depth0","helpers","partials","compilerInfo","merge","statusClass","getInitialStatus","sectionNode","i","statusList","length","parent","_status","_titleNode","querySelector","_bodyNode","addEventListener","toggle","bind","_parent","successTemplate","failTemplate","errorTemplate","skipTemplate","remove",{"end":{"file":"?","comments_before":[],"nlb":false,"endpos":1600,"endcol":14,"endline":58,"pos":1594,"col":8,"line":58,"value":"status","type":"name"},"start":{"file":"?","comments_before":[],"nlb":false,"endpos":1600,"endcol":14,"endline":58,"pos":1594,"col":8,"line":58,"value":"status","type":"name"},"name":"status"},"value","setAsFailure","results","innerHTML","replaceButton","updateReference","setAsSuccess","failedChild","setAsSkipped","setAsError","_this","postData","response","TestsIndex","_index","item","indexData","states","stateData","browsers","base","SafeString","Exception","Utils","runtime","create","hb","HandlebarsEnvironment","extend","VM","spec","stack1","helper","buffer","self","functionType","escapeExpression","invokePartial","cswitcher","referenceURL","hash","currentURL","diffURL","stack","registerDefaultHelpers","instance","registerHelper","arg","arguments","undefined","context","options","inverse","fn","isFunction","isArray","each","ret","createFrame","j","index","first","last","key","hasOwnProperty","conditional","includeZero","isEmpty","level","parseInt","log","obj","logger","VERSION","COMPILER_REVISION","REVISION_CHANGES",1,2,3,4,"toString","objectType","not","registerPartial","str","methodMap","DEBUG","INFO","WARN","ERROR","method","console","object","string","message","line","firstLine","firstColumn","tmp","idx","errorProps","lineNumber","column","escapeChar","chr","escape","Object","possible","test","replace","badChars","&","<",">","\"","'","`","checkRevision","compilerRevision","currentRevision","runtimeVersions","compilerVersions","templateSpec","env","invokePartialWrapper","partial","result","apply","compile","container","programs","program","programWrapper","param","common","programWithDepth","noop","namespace","args","slice","prog","concat","depth","Function"],"mappings":"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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","\"use strict\";function failAllParents(e){for(;e=sections.findParent(e);)e.status=\"fail\",e.expand()}function listenForEvents(){var e=new EventSource(\"/events\");e.addEventListener(\"beginSuite\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite});s&&\"queued\"===s.status&&(s.status=\"running\")}),e.addEventListener(\"beginState\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state});s&&\"queued\"===s.status&&(s.status=\"running\")}),e.addEventListener(\"endTest\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});t.equal?s.setAsSuccess(t):(s.setAsFailure(t),s.expand(),failAllParents(s))}),e.addEventListener(\"skipState\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});s.setAsSkipped();var n=sections.findSection({suite:t.suite,state:t.state});sections.markIfFinished(n)}),e.addEventListener(\"error\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});s.setAsError({stack:t.stack}),s.expand(),failAllParents(s)}),e.addEventListener(\"endState\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state});sections.markIfFinished(s)}),e.addEventListener(\"endSuite\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});sections.markIfFinished(s)}),e.addEventListener(\"end\",function(e){runButton.disabled=!1})}function run(){runButton.disabled=!0,xhr.post(\"/run\",function(e,t){e||sections.markAllAsQueued()})}function handleColorSwitch(e,t){var s=findClosest(e,\"image-box\");t.forEach(function(e){e.classList.remove(\"cswitcher__item_selected\")}),forEach.call(s.classList,function(e){/cswitcher_color_\\d+/.test(e)&&s.classList.remove(e)}),e.classList.add(\"cswitcher__item_selected\"),s.classList.add(\"cswitcher_color_\"+e.dataset.id)}function bodyClick(e){var t=e.target;t.classList.contains(\"cswitcher__item\")&&handleColorSwitch(t,filter.call(t.parentNode.childNodes,function(e){return e.nodeType===Node.ELEMENT_NODE}))}function findClosest(e,t){for(;e=e.parentNode;)if(e.classList.contains(t))return e}var SectionList=require(\"./section-list\"),xhr=require(\"./xhr\"),byId=document.getElementById.bind(document),runButton,sections,forEach=Array.prototype.forEach,filter=Array.prototype.filter,hbruntime=require(\"hbsfy/runtime\");hbruntime.registerPartial(\"cswitcher\",require(\"../views/partials/cswitcher.hbs\")),document.addEventListener(\"DOMContentLoaded\",function(){sections=new SectionList,runButton=byId(\"run\"),listenForEvents(),byId(\"expandAll\").addEventListener(\"click\",sections.expandAll.bind(sections)),byId(\"collapseAll\").addEventListener(\"click\",sections.collapseAll.bind(sections)),byId(\"expandErrors\").addEventListener(\"click\",sections.expandErrors.bind(sections)),runButton.addEventListener(\"click\",run),document.body.addEventListener(\"click\",bodyClick)});","/*jshint browser:true*/\n'use strict';\nvar Section = require('./section'),\n Index = require('../common/tests-index'),\n map = Array.prototype.map,\n every = Array.prototype.every;\n\nfunction SectionList() {\n this._sectionsIndex = new Index();\n this._sections = map.call(document.querySelectorAll('.section'), function(node) {\n var parentNode = this._findParentSectionNode(node),\n section = new Section(node, parentNode && this._sectionForNode(parentNode));\n\n this._sectionsIndex.add(section);\n return section;\n }, this);\n}\n\nSectionList.prototype = {\n constructor: SectionList,\n\n expandAll: function() {\n this._sections.forEach(function(section) {\n section.expand();\n });\n },\n\n collapseAll: function() {\n this._sections.forEach(function(section) {\n section.collapse();\n });\n },\n\n expandErrors: function() {\n this._sections.forEach(function(section) {\n section.expandIfError();\n });\n },\n\n markAllAsQueued: function() {\n this._sections.forEach(function(section) {\n section.status = 'queued';\n });\n },\n\n markIfFinished: function(section) {\n if (section.status === 'fail') {\n //already marked as fail\n return;\n }\n var nodes = section.domNode.querySelectorAll('.section');\n var allChildrenFinished = every.call(nodes, function(node) {\n return this._sectionForNode(node).isFinished();\n }, this);\n\n if (allChildrenFinished) {\n section.status = 'success';\n }\n },\n\n findSection: function(query) {\n return this._sectionsIndex.find(query);\n },\n\n findParent: function(section) {\n if (section.browserId) {\n return this.findSection({\n suite: section.suite,\n state: section.state\n });\n }\n\n if (section.state && section.state.name) {\n return this.findSection({suite: section.suite});\n }\n var parentSectionNode = this._findParentSectionNode(section.domNode);\n if (parentSectionNode) {\n return this._sectionForNode(parentSectionNode);\n }\n return null;\n },\n\n _findParentSectionNode: function(node) {\n while ((node = node.parentNode)) {\n if (node.classList && node.classList.contains('section')) {\n return node;\n }\n }\n return null;\n },\n\n _sectionForNode: function(domNode) {\n var query = {\n suite: {path: domNode.getAttribute('data-suite-path')},\n state: {name: domNode.getAttribute('data-state-name')},\n browserId: domNode.getAttribute('data-browser-id')\n };\n\n return this.findSection(query);\n }\n};\n\nmodule.exports = SectionList;\n","/*jshint browser:true*/\n'use strict';\n\nexports.post = function(url, data, callback) {\n if (!callback) {\n callback = data;\n data = null;\n }\n var xhr = new XMLHttpRequest();\n xhr.open('POST', url, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.onload = function() {\n var data = JSON.parse(xhr.responseText);\n if (xhr.status === 200) {\n callback(null, data);\n } else {\n callback(new Error(data.error));\n }\n };\n\n if (data) {\n xhr.send(JSON.stringify(data));\n } else {\n xhr.send();\n }\n};\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n \n\n\n return \"<div class=\\\"cswitcher\\\">\\n <div data-id=\\\"1\\\" class=\\\"cswitcher__item cswitcher_color_1 cswitcher__item_selected\\\"></div>\\n <div data-id=\\\"2\\\" class=\\\"cswitcher__item cswitcher_color_2\\\"></div>\\n <div data-id=\\\"3\\\" class=\\\"cswitcher__item cswitcher_color_3\\\"></div>\\n</div>\\n\";\n });\n","module.exports = require(\"handlebars/runtime\")[\"default\"];\n","'use strict';\nvar successTemplate = require('../views/partials/success-result.hbs'),\n failTemplate = require('../views/partials/fail-result.hbs'),\n errorTemplate = require('../views/partials/error-result.hbs'),\n skipTemplate = require('../views/partials/skip-result.hbs'),\n xhr = require('./xhr');\n\nvar statusList = [\n 'idle',\n 'queued',\n 'running',\n 'success',\n 'fail',\n 'skip'\n];\n\nfunction statusClass(status) {\n return 'section_status_' + status;\n}\n\nfunction getInitialStatus(sectionNode) {\n var status;\n for (var i = 0; i< statusList.length; i++) {\n status = statusList[i];\n if (sectionNode.classList.contains(statusClass(status))) {\n return status;\n }\n }\n return null;\n}\n\nfunction Section(node, parent) {\n this.suite = {path: node.getAttribute('data-suite-path')};\n this.state = {name: node.getAttribute('data-state-name')};\n this.browserId = node.getAttribute('data-browser-id');\n this.domNode = node;\n this._status = getInitialStatus(node);\n this._titleNode = node.querySelector('.section__title');\n this._bodyNode = node.querySelector('.section__body');\n this._titleNode.addEventListener('click', this.toggle.bind(this));\n this._parent = parent;\n}\n\nSection.prototype = {\n constructor: Section,\n expand:function() {\n this.domNode.classList.remove('section_collapsed');\n },\n\n collapse: function() {\n this.domNode.classList.add('section_collapsed');\n },\n\n toggle: function() {\n this.domNode.classList.toggle('section_collapsed');\n },\n\n get status() {\n return this._status;\n },\n\n set status(value) {\n if (this._status) {\n this.domNode.classList.remove(statusClass(this._status));\n }\n\n this._status = value;\n this.domNode.classList.add(statusClass(this._status));\n },\n\n expandIfError: function() {\n if (this.status === 'fail') {\n this.expand();\n } else {\n this.collapse();\n }\n },\n\n setAsFailure: function(results) {\n this.status = 'fail';\n this._bodyNode.innerHTML = failTemplate(results);\n var replaceButton = this._bodyNode.querySelector('.image-box__replace');\n replaceButton.addEventListener('click', this.updateReference.bind(this));\n },\n\n setAsSuccess: function(results) {\n var failedChild = this.domNode.querySelector('.section.' + statusClass('fail'));\n if (failedChild) {\n return;\n }\n\n this.status = 'success';\n if (results) {\n this._bodyNode.innerHTML = successTemplate(results);\n }\n\n if (this._parent && this._parent.status === 'fail') {\n this._parent.setAsSuccess();\n }\n },\n\n setAsSkipped: function() {\n this.status = 'skipped';\n this._bodyNode.innerHTML = skipTemplate();\n },\n\n setAsError: function(error) {\n this.status = 'fail';\n this._bodyNode.innerHTML = errorTemplate(error);\n },\n\n isFinished: function() {\n return this.status !== 'queued' &&\n this.status !== 'running';\n },\n\n updateReference: function() {\n var _this = this,\n postData = {\n suite: this.suite,\n state: this.state,\n browserId: this.browserId\n };\n xhr.post('/update-ref', postData, function(error, response) {\n if (!error) {\n _this.setAsSuccess(response);\n }\n });\n }\n};\n\nmodule.exports = Section;\n","'use strict';\n\nfunction TestsIndex() {\n this._index = {};\n}\n\nTestsIndex.prototype = {\n constructor: TestsIndex,\n\n add: function(item) {\n if (!item.suite || item.suite.path == null) {\n return;\n }\n\n var indexData = this._index[item.suite.path];\n if (!indexData) {\n indexData = this._index[item.suite.path] = {\n suite: null,\n states: {}\n };\n }\n\n if (!item.state || item.state.name == null) {\n indexData.suite = item;\n return;\n }\n\n var stateData = indexData.states[item.state.name];\n if (!stateData) {\n stateData = indexData.states[item.state.name] = {\n state: null,\n browsers: {}\n };\n }\n\n if (item.browserId == null) {\n stateData.state = item;\n return;\n }\n stateData.browsers[item.browserId] = item;\n },\n\n find: function(query) {\n var indexData = query.suite && this._index[query.suite.path];\n if (!indexData) {\n return null;\n }\n if (!query.state || query.state.name == null) {\n return indexData.suite;\n }\n var stateData = indexData.states[query.state.name];\n if (!stateData) {\n return null;\n }\n\n if (query.browserId == null) {\n return stateData.state;\n }\n\n return stateData.browsers[query.browserId] || null;\n }\n};\n\nmodule.exports = TestsIndex;\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime');\n","\"use strict\";\n/*globals Handlebars: true */\nvar base = require(\"./handlebars/base\");\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nvar SafeString = require(\"./handlebars/safe-string\")[\"default\"];\nvar Exception = require(\"./handlebars/exception\")[\"default\"];\nvar Utils = require(\"./handlebars/utils\");\nvar runtime = require(\"./handlebars/runtime\");\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nvar create = function() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n};\n\nvar Handlebars = create();\nHandlebars.create = create;\n\nexports[\"default\"] = Handlebars;","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); partials = this.merge(partials, Handlebars.partials); data = data || {};\n var buffer = \"\", stack1, helper, self=this, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"<div class=\\\"image-box\\\">\\n \";\n stack1 = self.invokePartial(partials.cswitcher, 'cswitcher', depth0, helpers, partials, data);\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n <div class=\\\"image-box__image\\\">\\n <img src=\\\"\";\n if (helper = helpers.referenceURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.referenceURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Reference image\\\">\\n </div>\\n</div>\\n\";\n return buffer;\n });\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); partials = this.merge(partials, Handlebars.partials); data = data || {};\n var buffer = \"\", stack1, helper, self=this, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"<div class=\\\"image-box\\\">\\n \";\n stack1 = self.invokePartial(partials.cswitcher, 'cswitcher', depth0, helpers, partials, data);\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n <div class=\\\"image-box__image\\\">\\n <div class=\\\"image-box__title\\\">Reference</div>\\n <img src=\\\"\";\n if (helper = helpers.referenceURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.referenceURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Reference image\\\">\\n </div>\\n <button class=\\\"button image-box__replace\\\">&#x2b05;</button>\\n <div class=\\\"image-box__image\\\">\\n <div class=\\\"image-box__title\\\">Current</div>\\n <img src=\\\"\";\n if (helper = helpers.currentURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.currentURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Current image\\\">\\n </div>\\n <div class=\\\"image-box__image\\\">\\n <div class=\\\"image-box__title\\\">Diff</div>\\n <img src=\\\"\";\n if (helper = helpers.diffURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.diffURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Diff image\\\">\\n </div>\\n</div>\\n\";\n return buffer;\n });\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"<pre class=\\\"stacktrace\\\">\\n\";\n if (helper = helpers.stack) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.stack); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\n</pre>\\n\";\n return buffer;\n });\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n \n\n\n return \"<p>Test skipped</p>\\n\";\n });\n","\"use strict\";\nvar Utils = require(\"./utils\");\nvar Exception = require(\"./exception\")[\"default\"];\n\nvar VERSION = \"1.3.0\";\nexports.VERSION = VERSION;var COMPILER_REVISION = 4;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '>= 1.0.0'\n};\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar isArray = Utils.isArray,\n isFunction = Utils.isFunction,\n toString = Utils.toString,\n objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n\n registerDefaultHelpers(this);\n}\n\nexports.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: log,\n\n registerHelper: function(name, fn, inverse) {\n if (toString.call(name) === objectType) {\n if (inverse || fn) { throw new Exception('Arg not supported with multiple helpers'); }\n Utils.extend(this.helpers, name);\n } else {\n if (inverse) { fn.not = inverse; }\n this.helpers[name] = fn;\n }\n },\n\n registerPartial: function(name, str) {\n if (toString.call(name) === objectType) {\n Utils.extend(this.partials, name);\n } else {\n this.partials[name] = str;\n }\n }\n};\n\nfunction registerDefaultHelpers(instance) {\n instance.registerHelper('helperMissing', function(arg) {\n if(arguments.length === 2) {\n return undefined;\n } else {\n throw new Exception(\"Missing helper: '\" + arg + \"'\");\n }\n });\n\n instance.registerHelper('blockHelperMissing', function(context, options) {\n var inverse = options.inverse || function() {}, fn = options.fn;\n\n if (isFunction(context)) { context = context.call(this); }\n\n if(context === true) {\n return fn(this);\n } else if(context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if(context.length > 0) {\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n return fn(context);\n }\n });\n\n instance.registerHelper('each', function(context, options) {\n var fn = options.fn, inverse = options.inverse;\n var i = 0, ret = \"\", data;\n\n if (isFunction(context)) { context = context.call(this); }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n if(context && typeof context === 'object') {\n if (isArray(context)) {\n for(var j = context.length; i<j; i++) {\n if (data) {\n data.index = i;\n data.first = (i === 0);\n data.last = (i === (context.length-1));\n }\n ret = ret + fn(context[i], { data: data });\n }\n } else {\n for(var key in context) {\n if(context.hasOwnProperty(key)) {\n if(data) { \n data.key = key; \n data.index = i;\n data.first = (i === 0);\n }\n ret = ret + fn(context[key], {data: data});\n i++;\n }\n }\n }\n }\n\n if(i === 0){\n ret = inverse(this);\n }\n\n return ret;\n });\n\n instance.registerHelper('if', function(conditional, options) {\n if (isFunction(conditional)) { conditional = conditional.call(this); }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || Utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n return instance.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});\n });\n\n instance.registerHelper('with', function(context, options) {\n if (isFunction(context)) { context = context.call(this); }\n\n if (!Utils.isEmpty(context)) return options.fn(context);\n });\n\n instance.registerHelper('log', function(context, options) {\n var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n instance.log(level, context);\n });\n}\n\nvar logger = {\n methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },\n\n // State enum\n DEBUG: 0,\n INFO: 1,\n WARN: 2,\n ERROR: 3,\n level: 3,\n\n // can be overridden in the host environment\n log: function(level, obj) {\n if (logger.level <= level) {\n var method = logger.methodMap[level];\n if (typeof console !== 'undefined' && console[method]) {\n console[method].call(console, obj);\n }\n }\n }\n};\nexports.logger = logger;\nfunction log(level, obj) { logger.log(level, obj); }\n\nexports.log = log;var createFrame = function(object) {\n var obj = {};\n Utils.extend(obj, object);\n return obj;\n};\nexports.createFrame = createFrame;","\"use strict\";\n// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = function() {\n return \"\" + this.string;\n};\n\nexports[\"default\"] = SafeString;","\"use strict\";\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var line;\n if (node && node.firstLine) {\n line = node.firstLine;\n\n message += ' - ' + line + ':' + node.firstColumn;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n if (line) {\n this.lineNumber = line;\n this.column = node.firstColumn;\n }\n}\n\nException.prototype = new Error();\n\nexports[\"default\"] = Exception;","\"use strict\";\n/*jshint -W004 */\nvar SafeString = require(\"./safe-string\")[\"default\"];\n\nvar escape = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#x27;\",\n \"`\": \"&#x60;\"\n};\n\nvar badChars = /[&<>\"'`]/g;\nvar possible = /[&<>\"'`]/;\n\nfunction escapeChar(chr) {\n return escape[chr] || \"&amp;\";\n}\n\nfunction extend(obj, value) {\n for(var key in value) {\n if(Object.prototype.hasOwnProperty.call(value, key)) {\n obj[key] = value[key];\n }\n }\n}\n\nexports.extend = extend;var toString = Object.prototype.toString;\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\nvar isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nvar isFunction;\nexports.isFunction = isFunction;\nvar isArray = Array.isArray || function(value) {\n return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;\n};\nexports.isArray = isArray;\n\nfunction escapeExpression(string) {\n // don't escape SafeStrings, since they're already safe\n if (string instanceof SafeString) {\n return string.toString();\n } else if (!string && string !== 0) {\n return \"\";\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = \"\" + string;\n\n if(!possible.test(string)) { return string; }\n return string.replace(badChars, escapeChar);\n}\n\nexports.escapeExpression = escapeExpression;function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexports.isEmpty = isEmpty;","\"use strict\";\nvar Utils = require(\"./utils\");\nvar Exception = require(\"./exception\")[\"default\"];\nvar COMPILER_REVISION = require(\"./base\").COMPILER_REVISION;\nvar REVISION_CHANGES = require(\"./base\").REVISION_CHANGES;\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\"Template was precompiled with an older version of Handlebars than the current runtime. \"+\n \"Please update your precompiler to a newer version (\"+runtimeVersions+\") or downgrade your runtime to an older version (\"+compilerVersions+\").\");\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\"Template was precompiled with a newer version of Handlebars than the current runtime. \"+\n \"Please update your runtime to a newer version (\"+compilerInfo[1]+\").\");\n }\n }\n}\n\nexports.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n\nfunction template(templateSpec, env) {\n if (!env) {\n throw new Exception(\"No environment passed to template\");\n }\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n var invokePartialWrapper = function(partial, name, context, helpers, partials, data) {\n var result = env.VM.invokePartial.apply(this, arguments);\n if (result != null) { return result; }\n\n if (env.compile) {\n var options = { helpers: helpers, partials: partials, data: data };\n partials[name] = env.compile(partial, { data: data !== undefined }, env);\n return partials[name](context, options);\n } else {\n throw new Exception(\"The partial \" + name + \" could not be compiled when running in runtime-only mode\");\n }\n };\n\n // Just add water\n var container = {\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n programs: [],\n program: function(i, fn, data) {\n var programWrapper = this.programs[i];\n if(data) {\n programWrapper = program(i, fn, data);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = program(i, fn);\n }\n return programWrapper;\n },\n merge: function(param, common) {\n var ret = param || common;\n\n if (param && common && (param !== common)) {\n ret = {};\n Utils.extend(ret, common);\n Utils.extend(ret, param);\n }\n return ret;\n },\n programWithDepth: env.VM.programWithDepth,\n noop: env.VM.noop,\n compilerInfo: null\n };\n\n return function(context, options) {\n options = options || {};\n var namespace = options.partial ? options : env,\n helpers,\n partials;\n\n if (!options.partial) {\n helpers = options.helpers;\n partials = options.partials;\n }\n var result = templateSpec.call(\n container,\n namespace, context,\n helpers,\n partials,\n options.data);\n\n if (!options.partial) {\n env.VM.checkRevision(container.compilerInfo);\n }\n\n return result;\n };\n}\n\nexports.template = template;function programWithDepth(i, fn, data /*, $depth */) {\n var args = Array.prototype.slice.call(arguments, 3);\n\n var prog = function(context, options) {\n options = options || {};\n\n return fn.apply(this, [context, options.data || data].concat(args));\n };\n prog.program = i;\n prog.depth = args.length;\n return prog;\n}\n\nexports.programWithDepth = programWithDepth;function program(i, fn, data) {\n var prog = function(context, options) {\n options = options || {};\n\n return fn(context, options.data || data);\n };\n prog.program = i;\n prog.depth = 0;\n return prog;\n}\n\nexports.program = program;function invokePartial(partial, name, context, helpers, partials, data) {\n var options = { partial: true, helpers: helpers, partials: partials, data: data };\n\n if(partial === undefined) {\n throw new Exception(\"The partial \" + name + \" could not be found\");\n } else if(partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexports.invokePartial = invokePartial;function noop() { return \"\"; }\n\nexports.noop = noop;"]}
{"version":3,"file":"bundle.js","sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","lib/client","lib/client/section-list.js","lib/client/xhr.js","lib/views/partials/cswitcher.hbs","node_modules/hbsfy/runtime.js","lib/client/section.js","lib/common/tests-index.js","node_modules/handlebars/runtime.js","node_modules/handlebars/dist/cjs/handlebars.runtime.js","lib/views/partials/success-result.hbs","lib/views/partials/error-result.hbs","lib/views/partials/fail-result.hbs","lib/views/partials/skip-result.hbs","node_modules/handlebars/dist/cjs/handlebars/base.js","node_modules/handlebars/dist/cjs/handlebars/safe-string.js","node_modules/handlebars/dist/cjs/handlebars/exception.js","node_modules/handlebars/dist/cjs/handlebars/utils.js","node_modules/handlebars/dist/cjs/handlebars/runtime.js"],"names":["SectionList","this","_sectionsIndex","Index","_sections","map","call","document","querySelectorAll","node","parentNode","_findParentSectionNode","section","Section","_sectionForNode","add","require","Array","prototype","every","constructor","expandAll","forEach","expand","collapseAll","collapse","expandErrors","expandIfError","markAllAsQueued","status","markIfFinished","nodes","domNode","allChildrenFinished","isFinished","findSection","query","find","findParent","browserId","suite","state","name","parentSectionNode","classList","contains","path","getAttribute","module","exports","post","url","data","callback","xhr","XMLHttpRequest","open","setRequestHeader","onload","JSON","parse","responseText","Error","error","send","stringify","HandlebarsCompiler","template","Handlebars","depth0","helpers","partials","compilerInfo","merge","statusClass","getInitialStatus","sectionNode","i","statusList","length","parent","_status","_titleNode","querySelector","_bodyNode","addEventListener","toggle","bind","_parent","successTemplate","failTemplate","errorTemplate","skipTemplate","remove",{"end":{"file":"?","comments_before":[],"nlb":false,"endpos":1600,"endcol":14,"endline":58,"pos":1594,"col":8,"line":58,"value":"status","type":"name"},"start":{"file":"?","comments_before":[],"nlb":false,"endpos":1600,"endcol":14,"endline":58,"pos":1594,"col":8,"line":58,"value":"status","type":"name"},"name":"status"},"value","setAsFailure","results","innerHTML","replaceButton","updateReference","setAsSuccess","failedChild","setAsSkipped","setAsError","_this","postData","response","TestsIndex","_index","item","indexData","states","stateData","browsers","base","SafeString","Exception","Utils","runtime","create","hb","HandlebarsEnvironment","extend","VM","spec","stack1","helper","buffer","self","functionType","escapeExpression","invokePartial","cswitcher","referenceURL","hash","stack","currentURL","diffURL","registerDefaultHelpers","instance","registerHelper","arg","arguments","undefined","context","options","inverse","fn","isFunction","isArray","each","ret","createFrame","j","index","first","last","key","hasOwnProperty","conditional","includeZero","isEmpty","level","parseInt","log","obj","logger","VERSION","COMPILER_REVISION","REVISION_CHANGES",1,2,3,4,"toString","objectType","not","registerPartial","str","methodMap","DEBUG","INFO","WARN","ERROR","method","console","object","string","message","line","firstLine","firstColumn","tmp","idx","errorProps","lineNumber","column","escapeChar","chr","escape","Object","possible","test","replace","badChars","&","<",">","\"","'","`","checkRevision","compilerRevision","currentRevision","runtimeVersions","compilerVersions","templateSpec","env","invokePartialWrapper","partial","result","apply","compile","container","programs","program","programWrapper","param","common","programWithDepth","noop","namespace","args","slice","prog","concat","depth","Function"],"mappings":"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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","\"use strict\";function failAllParents(e){for(;e=sections.findParent(e);)e.status=\"fail\",e.expand()}function listenForEvents(){var e=new EventSource(\"/events\");e.addEventListener(\"beginSuite\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite});s&&\"queued\"===s.status&&(s.status=\"running\")}),e.addEventListener(\"beginState\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state});s&&\"queued\"===s.status&&(s.status=\"running\")}),e.addEventListener(\"endTest\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});t.equal?s.setAsSuccess(t):(s.setAsFailure(t),s.expand(),failAllParents(s))}),e.addEventListener(\"skipState\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});s.setAsSkipped();var n=sections.findSection({suite:t.suite,state:t.state});sections.markIfFinished(n)}),e.addEventListener(\"error\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});s.setAsError({stack:t.stack}),s.expand(),failAllParents(s)}),e.addEventListener(\"endState\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state});sections.markIfFinished(s)}),e.addEventListener(\"endSuite\",function(e){var t=JSON.parse(e.data),s=sections.findSection({suite:t.suite,state:t.state,browserId:t.browserId});sections.markIfFinished(s)}),e.addEventListener(\"end\",function(e){runButton.disabled=!1})}function run(){runButton.disabled=!0,xhr.post(\"/run\",function(e,t){e||sections.markAllAsQueued()})}function handleColorSwitch(e,t){var s=findClosest(e,\"image-box\");t.forEach(function(e){e.classList.remove(\"cswitcher__item_selected\")}),forEach.call(s.classList,function(e){/cswitcher_color_\\d+/.test(e)&&s.classList.remove(e)}),e.classList.add(\"cswitcher__item_selected\"),s.classList.add(\"cswitcher_color_\"+e.dataset.id)}function bodyClick(e){var t=e.target;t.classList.contains(\"cswitcher__item\")&&handleColorSwitch(t,filter.call(t.parentNode.childNodes,function(e){return e.nodeType===Node.ELEMENT_NODE}))}function findClosest(e,t){for(;e=e.parentNode;)if(e.classList.contains(t))return e}var SectionList=require(\"./section-list\"),xhr=require(\"./xhr\"),byId=document.getElementById.bind(document),runButton,sections,forEach=Array.prototype.forEach,filter=Array.prototype.filter,hbruntime=require(\"hbsfy/runtime\");hbruntime.registerPartial(\"cswitcher\",require(\"../views/partials/cswitcher.hbs\")),document.addEventListener(\"DOMContentLoaded\",function(){sections=new SectionList,runButton=byId(\"run\"),listenForEvents(),byId(\"expandAll\").addEventListener(\"click\",sections.expandAll.bind(sections)),byId(\"collapseAll\").addEventListener(\"click\",sections.collapseAll.bind(sections)),byId(\"expandErrors\").addEventListener(\"click\",sections.expandErrors.bind(sections)),runButton.addEventListener(\"click\",run),document.body.addEventListener(\"click\",bodyClick)});","/*jshint browser:true*/\n'use strict';\nvar Section = require('./section'),\n Index = require('../common/tests-index'),\n map = Array.prototype.map,\n every = Array.prototype.every;\n\nfunction SectionList() {\n this._sectionsIndex = new Index();\n this._sections = map.call(document.querySelectorAll('.section'), function(node) {\n var parentNode = this._findParentSectionNode(node),\n section = new Section(node, parentNode && this._sectionForNode(parentNode));\n\n this._sectionsIndex.add(section);\n return section;\n }, this);\n}\n\nSectionList.prototype = {\n constructor: SectionList,\n\n expandAll: function() {\n this._sections.forEach(function(section) {\n section.expand();\n });\n },\n\n collapseAll: function() {\n this._sections.forEach(function(section) {\n section.collapse();\n });\n },\n\n expandErrors: function() {\n this._sections.forEach(function(section) {\n section.expandIfError();\n });\n },\n\n markAllAsQueued: function() {\n this._sections.forEach(function(section) {\n section.status = 'queued';\n });\n },\n\n markIfFinished: function(section) {\n if (section.status === 'fail') {\n //already marked as fail\n return;\n }\n var nodes = section.domNode.querySelectorAll('.section');\n var allChildrenFinished = every.call(nodes, function(node) {\n return this._sectionForNode(node).isFinished();\n }, this);\n\n if (allChildrenFinished) {\n section.status = 'success';\n }\n },\n\n findSection: function(query) {\n return this._sectionsIndex.find(query);\n },\n\n findParent: function(section) {\n if (section.browserId) {\n return this.findSection({\n suite: section.suite,\n state: section.state\n });\n }\n\n if (section.state && section.state.name) {\n return this.findSection({suite: section.suite});\n }\n var parentSectionNode = this._findParentSectionNode(section.domNode);\n if (parentSectionNode) {\n return this._sectionForNode(parentSectionNode);\n }\n return null;\n },\n\n _findParentSectionNode: function(node) {\n while ((node = node.parentNode)) {\n if (node.classList && node.classList.contains('section')) {\n return node;\n }\n }\n return null;\n },\n\n _sectionForNode: function(domNode) {\n var query = {\n suite: {path: domNode.getAttribute('data-suite-path')},\n state: {name: domNode.getAttribute('data-state-name')},\n browserId: domNode.getAttribute('data-browser-id')\n };\n\n return this.findSection(query);\n }\n};\n\nmodule.exports = SectionList;\n","/*jshint browser:true*/\n'use strict';\n\nexports.post = function(url, data, callback) {\n if (!callback) {\n callback = data;\n data = null;\n }\n var xhr = new XMLHttpRequest();\n xhr.open('POST', url, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.onload = function() {\n var data = JSON.parse(xhr.responseText);\n if (xhr.status === 200) {\n callback(null, data);\n } else {\n callback(new Error(data.error));\n }\n };\n\n if (data) {\n xhr.send(JSON.stringify(data));\n } else {\n xhr.send();\n }\n};\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n \n\n\n return \"<div class=\\\"cswitcher\\\">\\n <div data-id=\\\"1\\\" class=\\\"cswitcher__item cswitcher_color_1 cswitcher__item_selected\\\"></div>\\n <div data-id=\\\"2\\\" class=\\\"cswitcher__item cswitcher_color_2\\\"></div>\\n <div data-id=\\\"3\\\" class=\\\"cswitcher__item cswitcher_color_3\\\"></div>\\n</div>\\n\";\n });\n","module.exports = require(\"handlebars/runtime\")[\"default\"];\n","'use strict';\nvar successTemplate = require('../views/partials/success-result.hbs'),\n failTemplate = require('../views/partials/fail-result.hbs'),\n errorTemplate = require('../views/partials/error-result.hbs'),\n skipTemplate = require('../views/partials/skip-result.hbs'),\n xhr = require('./xhr');\n\nvar statusList = [\n 'idle',\n 'queued',\n 'running',\n 'success',\n 'fail',\n 'skip'\n];\n\nfunction statusClass(status) {\n return 'section_status_' + status;\n}\n\nfunction getInitialStatus(sectionNode) {\n var status;\n for (var i = 0; i< statusList.length; i++) {\n status = statusList[i];\n if (sectionNode.classList.contains(statusClass(status))) {\n return status;\n }\n }\n return null;\n}\n\nfunction Section(node, parent) {\n this.suite = {path: node.getAttribute('data-suite-path')};\n this.state = {name: node.getAttribute('data-state-name')};\n this.browserId = node.getAttribute('data-browser-id');\n this.domNode = node;\n this._status = getInitialStatus(node);\n this._titleNode = node.querySelector('.section__title');\n this._bodyNode = node.querySelector('.section__body');\n this._titleNode.addEventListener('click', this.toggle.bind(this));\n this._parent = parent;\n}\n\nSection.prototype = {\n constructor: Section,\n expand:function() {\n this.domNode.classList.remove('section_collapsed');\n },\n\n collapse: function() {\n this.domNode.classList.add('section_collapsed');\n },\n\n toggle: function() {\n this.domNode.classList.toggle('section_collapsed');\n },\n\n get status() {\n return this._status;\n },\n\n set status(value) {\n if (this._status) {\n this.domNode.classList.remove(statusClass(this._status));\n }\n\n this._status = value;\n this.domNode.classList.add(statusClass(this._status));\n },\n\n expandIfError: function() {\n if (this.status === 'fail') {\n this.expand();\n } else {\n this.collapse();\n }\n },\n\n setAsFailure: function(results) {\n this.status = 'fail';\n this._bodyNode.innerHTML = failTemplate(results);\n var replaceButton = this._bodyNode.querySelector('.image-box__replace');\n replaceButton.addEventListener('click', this.updateReference.bind(this));\n },\n\n setAsSuccess: function(results) {\n var failedChild = this.domNode.querySelector('.section.' + statusClass('fail'));\n if (failedChild) {\n return;\n }\n\n this.status = 'success';\n if (results) {\n this._bodyNode.innerHTML = successTemplate(results);\n }\n\n if (this._parent && this._parent.status === 'fail') {\n this._parent.setAsSuccess();\n }\n },\n\n setAsSkipped: function() {\n this.status = 'skipped';\n this._bodyNode.innerHTML = skipTemplate();\n },\n\n setAsError: function(error) {\n this.status = 'fail';\n this._bodyNode.innerHTML = errorTemplate(error);\n },\n\n isFinished: function() {\n return this.status !== 'queued' &&\n this.status !== 'running';\n },\n\n updateReference: function() {\n var _this = this,\n postData = {\n suite: this.suite,\n state: this.state,\n browserId: this.browserId\n };\n xhr.post('/update-ref', postData, function(error, response) {\n if (!error) {\n _this.setAsSuccess(response);\n }\n });\n }\n};\n\nmodule.exports = Section;\n","'use strict';\n\nfunction TestsIndex() {\n this._index = {};\n}\n\nTestsIndex.prototype = {\n constructor: TestsIndex,\n\n add: function(item) {\n if (!item.suite || item.suite.path == null) {\n return;\n }\n\n var indexData = this._index[item.suite.path];\n if (!indexData) {\n indexData = this._index[item.suite.path] = {\n suite: null,\n states: {}\n };\n }\n\n if (!item.state || item.state.name == null) {\n indexData.suite = item;\n return;\n }\n\n var stateData = indexData.states[item.state.name];\n if (!stateData) {\n stateData = indexData.states[item.state.name] = {\n state: null,\n browsers: {}\n };\n }\n\n if (item.browserId == null) {\n stateData.state = item;\n return;\n }\n stateData.browsers[item.browserId] = item;\n },\n\n find: function(query) {\n var indexData = query.suite && this._index[query.suite.path];\n if (!indexData) {\n return null;\n }\n if (!query.state || query.state.name == null) {\n return indexData.suite;\n }\n var stateData = indexData.states[query.state.name];\n if (!stateData) {\n return null;\n }\n\n if (query.browserId == null) {\n return stateData.state;\n }\n\n return stateData.browsers[query.browserId] || null;\n }\n};\n\nmodule.exports = TestsIndex;\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime');\n","\"use strict\";\n/*globals Handlebars: true */\nvar base = require(\"./handlebars/base\");\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nvar SafeString = require(\"./handlebars/safe-string\")[\"default\"];\nvar Exception = require(\"./handlebars/exception\")[\"default\"];\nvar Utils = require(\"./handlebars/utils\");\nvar runtime = require(\"./handlebars/runtime\");\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nvar create = function() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n};\n\nvar Handlebars = create();\nHandlebars.create = create;\n\nexports[\"default\"] = Handlebars;","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); partials = this.merge(partials, Handlebars.partials); data = data || {};\n var buffer = \"\", stack1, helper, self=this, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"<div class=\\\"image-box\\\">\\n \";\n stack1 = self.invokePartial(partials.cswitcher, 'cswitcher', depth0, helpers, partials, data);\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n <div class=\\\"image-box__image\\\">\\n <img src=\\\"\";\n if (helper = helpers.referenceURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.referenceURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Reference image\\\">\\n </div>\\n</div>\\n\";\n return buffer;\n });\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"<pre class=\\\"stacktrace\\\">\\n\";\n if (helper = helpers.stack) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.stack); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\n</pre>\\n\";\n return buffer;\n });\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); partials = this.merge(partials, Handlebars.partials); data = data || {};\n var buffer = \"\", stack1, helper, self=this, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"<div class=\\\"image-box\\\">\\n \";\n stack1 = self.invokePartial(partials.cswitcher, 'cswitcher', depth0, helpers, partials, data);\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n <div class=\\\"image-box__image\\\">\\n <div class=\\\"image-box__title\\\">Reference</div>\\n <img src=\\\"\";\n if (helper = helpers.referenceURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.referenceURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Reference image\\\">\\n </div>\\n <button class=\\\"button image-box__replace\\\">&#x2b05;</button>\\n <div class=\\\"image-box__image\\\">\\n <div class=\\\"image-box__title\\\">Current</div>\\n <img src=\\\"\";\n if (helper = helpers.currentURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.currentURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Current image\\\">\\n </div>\\n <div class=\\\"image-box__image\\\">\\n <div class=\\\"image-box__title\\\">Diff</div>\\n <img src=\\\"\";\n if (helper = helpers.diffURL) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.diffURL); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\" alt=\\\"Diff image\\\">\\n </div>\\n</div>\\n\";\n return buffer;\n });\n","// hbsfy compiled Handlebars template\nvar HandlebarsCompiler = require('hbsfy/runtime');\nmodule.exports = HandlebarsCompiler.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n \n\n\n return \"<p>Test skipped</p>\\n\";\n });\n","\"use strict\";\nvar Utils = require(\"./utils\");\nvar Exception = require(\"./exception\")[\"default\"];\n\nvar VERSION = \"1.3.0\";\nexports.VERSION = VERSION;var COMPILER_REVISION = 4;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '>= 1.0.0'\n};\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar isArray = Utils.isArray,\n isFunction = Utils.isFunction,\n toString = Utils.toString,\n objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n\n registerDefaultHelpers(this);\n}\n\nexports.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: log,\n\n registerHelper: function(name, fn, inverse) {\n if (toString.call(name) === objectType) {\n if (inverse || fn) { throw new Exception('Arg not supported with multiple helpers'); }\n Utils.extend(this.helpers, name);\n } else {\n if (inverse) { fn.not = inverse; }\n this.helpers[name] = fn;\n }\n },\n\n registerPartial: function(name, str) {\n if (toString.call(name) === objectType) {\n Utils.extend(this.partials, name);\n } else {\n this.partials[name] = str;\n }\n }\n};\n\nfunction registerDefaultHelpers(instance) {\n instance.registerHelper('helperMissing', function(arg) {\n if(arguments.length === 2) {\n return undefined;\n } else {\n throw new Exception(\"Missing helper: '\" + arg + \"'\");\n }\n });\n\n instance.registerHelper('blockHelperMissing', function(context, options) {\n var inverse = options.inverse || function() {}, fn = options.fn;\n\n if (isFunction(context)) { context = context.call(this); }\n\n if(context === true) {\n return fn(this);\n } else if(context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if(context.length > 0) {\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n return fn(context);\n }\n });\n\n instance.registerHelper('each', function(context, options) {\n var fn = options.fn, inverse = options.inverse;\n var i = 0, ret = \"\", data;\n\n if (isFunction(context)) { context = context.call(this); }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n if(context && typeof context === 'object') {\n if (isArray(context)) {\n for(var j = context.length; i<j; i++) {\n if (data) {\n data.index = i;\n data.first = (i === 0);\n data.last = (i === (context.length-1));\n }\n ret = ret + fn(context[i], { data: data });\n }\n } else {\n for(var key in context) {\n if(context.hasOwnProperty(key)) {\n if(data) { \n data.key = key; \n data.index = i;\n data.first = (i === 0);\n }\n ret = ret + fn(context[key], {data: data});\n i++;\n }\n }\n }\n }\n\n if(i === 0){\n ret = inverse(this);\n }\n\n return ret;\n });\n\n instance.registerHelper('if', function(conditional, options) {\n if (isFunction(conditional)) { conditional = conditional.call(this); }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || Utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n return instance.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});\n });\n\n instance.registerHelper('with', function(context, options) {\n if (isFunction(context)) { context = context.call(this); }\n\n if (!Utils.isEmpty(context)) return options.fn(context);\n });\n\n instance.registerHelper('log', function(context, options) {\n var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n instance.log(level, context);\n });\n}\n\nvar logger = {\n methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },\n\n // State enum\n DEBUG: 0,\n INFO: 1,\n WARN: 2,\n ERROR: 3,\n level: 3,\n\n // can be overridden in the host environment\n log: function(level, obj) {\n if (logger.level <= level) {\n var method = logger.methodMap[level];\n if (typeof console !== 'undefined' && console[method]) {\n console[method].call(console, obj);\n }\n }\n }\n};\nexports.logger = logger;\nfunction log(level, obj) { logger.log(level, obj); }\n\nexports.log = log;var createFrame = function(object) {\n var obj = {};\n Utils.extend(obj, object);\n return obj;\n};\nexports.createFrame = createFrame;","\"use strict\";\n// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = function() {\n return \"\" + this.string;\n};\n\nexports[\"default\"] = SafeString;","\"use strict\";\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var line;\n if (node && node.firstLine) {\n line = node.firstLine;\n\n message += ' - ' + line + ':' + node.firstColumn;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n if (line) {\n this.lineNumber = line;\n this.column = node.firstColumn;\n }\n}\n\nException.prototype = new Error();\n\nexports[\"default\"] = Exception;","\"use strict\";\n/*jshint -W004 */\nvar SafeString = require(\"./safe-string\")[\"default\"];\n\nvar escape = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#x27;\",\n \"`\": \"&#x60;\"\n};\n\nvar badChars = /[&<>\"'`]/g;\nvar possible = /[&<>\"'`]/;\n\nfunction escapeChar(chr) {\n return escape[chr] || \"&amp;\";\n}\n\nfunction extend(obj, value) {\n for(var key in value) {\n if(Object.prototype.hasOwnProperty.call(value, key)) {\n obj[key] = value[key];\n }\n }\n}\n\nexports.extend = extend;var toString = Object.prototype.toString;\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\nvar isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nvar isFunction;\nexports.isFunction = isFunction;\nvar isArray = Array.isArray || function(value) {\n return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;\n};\nexports.isArray = isArray;\n\nfunction escapeExpression(string) {\n // don't escape SafeStrings, since they're already safe\n if (string instanceof SafeString) {\n return string.toString();\n } else if (!string && string !== 0) {\n return \"\";\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = \"\" + string;\n\n if(!possible.test(string)) { return string; }\n return string.replace(badChars, escapeChar);\n}\n\nexports.escapeExpression = escapeExpression;function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexports.isEmpty = isEmpty;","\"use strict\";\nvar Utils = require(\"./utils\");\nvar Exception = require(\"./exception\")[\"default\"];\nvar COMPILER_REVISION = require(\"./base\").COMPILER_REVISION;\nvar REVISION_CHANGES = require(\"./base\").REVISION_CHANGES;\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\"Template was precompiled with an older version of Handlebars than the current runtime. \"+\n \"Please update your precompiler to a newer version (\"+runtimeVersions+\") or downgrade your runtime to an older version (\"+compilerVersions+\").\");\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\"Template was precompiled with a newer version of Handlebars than the current runtime. \"+\n \"Please update your runtime to a newer version (\"+compilerInfo[1]+\").\");\n }\n }\n}\n\nexports.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n\nfunction template(templateSpec, env) {\n if (!env) {\n throw new Exception(\"No environment passed to template\");\n }\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n var invokePartialWrapper = function(partial, name, context, helpers, partials, data) {\n var result = env.VM.invokePartial.apply(this, arguments);\n if (result != null) { return result; }\n\n if (env.compile) {\n var options = { helpers: helpers, partials: partials, data: data };\n partials[name] = env.compile(partial, { data: data !== undefined }, env);\n return partials[name](context, options);\n } else {\n throw new Exception(\"The partial \" + name + \" could not be compiled when running in runtime-only mode\");\n }\n };\n\n // Just add water\n var container = {\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n programs: [],\n program: function(i, fn, data) {\n var programWrapper = this.programs[i];\n if(data) {\n programWrapper = program(i, fn, data);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = program(i, fn);\n }\n return programWrapper;\n },\n merge: function(param, common) {\n var ret = param || common;\n\n if (param && common && (param !== common)) {\n ret = {};\n Utils.extend(ret, common);\n Utils.extend(ret, param);\n }\n return ret;\n },\n programWithDepth: env.VM.programWithDepth,\n noop: env.VM.noop,\n compilerInfo: null\n };\n\n return function(context, options) {\n options = options || {};\n var namespace = options.partial ? options : env,\n helpers,\n partials;\n\n if (!options.partial) {\n helpers = options.helpers;\n partials = options.partials;\n }\n var result = templateSpec.call(\n container,\n namespace, context,\n helpers,\n partials,\n options.data);\n\n if (!options.partial) {\n env.VM.checkRevision(container.compilerInfo);\n }\n\n return result;\n };\n}\n\nexports.template = template;function programWithDepth(i, fn, data /*, $depth */) {\n var args = Array.prototype.slice.call(arguments, 3);\n\n var prog = function(context, options) {\n options = options || {};\n\n return fn.apply(this, [context, options.data || data].concat(args));\n };\n prog.program = i;\n prog.depth = args.length;\n return prog;\n}\n\nexports.programWithDepth = programWithDepth;function program(i, fn, data) {\n var prog = function(context, options) {\n options = options || {};\n\n return fn(context, options.data || data);\n };\n prog.program = i;\n prog.depth = 0;\n return prog;\n}\n\nexports.program = program;function invokePartial(partial, name, context, helpers, partials, data) {\n var options = { partial: true, helpers: helpers, partials: partials, data: data };\n\n if(partial === undefined) {\n throw new Exception(\"The partial \" + name + \" could not be found\");\n } else if(partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexports.invokePartial = invokePartial;function noop() { return \"\"; }\n\nexports.noop = noop;"]}

@@ -6,6 +6,6 @@ 'use strict';

//TODO:
function Tests(app, rootSuite) {
function Tests(app, suiteCollection) {
this._app = app;
this._index = new Index();
this._data = this._mapSuites(rootSuite);
this._data = this._mapSuites(suiteCollection.topLevelSuites());
}

@@ -19,7 +19,7 @@

_mapSuites: function(rootSuite) {
return rootSuite.children.map(function(suite) {
_mapSuites: function(suites) {
return suites.map(function(suite) {
var data = {
suite: suite,
children: this._mapSuites(suite),
children: this._mapSuites(suite.children),
status: 'idle',

@@ -26,0 +26,0 @@ states: this._mapStates(suite)

{
"name": "gemini-gui",
"version": "0.3.2",
"version": "2.0.0",
"description": "GUI for gemini testing utility",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc