forked from Polymer/web-component-tester
-
Notifications
You must be signed in to change notification settings - Fork 0
/
browser.js.map
1 lines (1 loc) · 98 KB
/
browser.js.map
1
{"version":3,"file":"browser.js","sources":["browser/util.js","browser/childrunner.js","browser/config.js","browser/suites.js","browser/reporters/console.js","browser/reporters/html.js","browser/reporters/multi.js","browser/reporters/title.js","browser/reporters.js","browser/environment.js","browser/environment/errors.js","browser/mocha.js","browser/clisocket.js","browser/environment/helpers.js","browser/index.js"],"sourcesContent":["/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport * as config from './config';\n\n/**\n * @param {function()} callback A function to call when the active web component\n * frameworks have loaded.\n */\nexport function whenFrameworksReady(callback) {\n debug('whenFrameworksReady');\n var done = function() {\n debug('whenFrameworksReady done');\n callback();\n };\n\n function componentsReady() {\n // handle Polymer 0.5 readiness\n if (window.Polymer && Polymer.whenReady) {\n Polymer.whenReady(done);\n } else {\n done();\n }\n }\n\n // All our supported framework configurations depend on imports.\n if (window.WebComponents) {\n if (WebComponents.whenReady) {\n WebComponents.whenReady(function() {\n debug('WebComponents Ready');\n componentsReady();\n });\n } else {\n whenWebComponentsReady(componentsReady);\n }\n } else if (window.HTMLImports) {\n HTMLImports.whenReady(function() {\n debug('HTMLImports Ready');\n componentsReady();\n });\n } else {\n done();\n }\n}\n\nfunction whenWebComponentsReady(cb) {\n var after = function after() {\n window.removeEventListener('WebComponentsReady', after);\n debug('WebComponentsReady');\n cb();\n };\n window.addEventListener('WebComponentsReady', after);\n}\n\n/**\n * @param {number} count\n * @param {string} kind\n * @return {string} '<count> <kind> tests' or '<count> <kind> test'.\n */\nexport function pluralizedStat(count, kind) {\n if (count === 1) {\n return count + ' ' + kind + ' test';\n } else {\n return count + ' ' + kind + ' tests';\n }\n}\n\n/**\n * @param {string} path The URI of the script to load.\n * @param {function} done\n */\nexport function loadScript(path, done) {\n var script = document.createElement('script');\n script.src = path;\n if (done) {\n script.onload = done.bind(null, null);\n script.onerror = done.bind(null, 'Failed to load script ' + script.src);\n }\n document.head.appendChild(script);\n}\n\n/**\n * @param {string} path The URI of the stylesheet to load.\n * @param {function} done\n */\nexport function loadStyle(path, done) {\n var link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = path;\n if (done) {\n link.onload = done.bind(null, null);\n link.onerror = done.bind(null, 'Failed to load stylesheet ' + link.href);\n }\n document.head.appendChild(link);\n}\n\n/**\n * @param {...*} var_args Logs values to the console when the `debug`\n * configuration option is true.\n */\nexport function debug(var_args) {\n if (!config.get('verbose')) return;\n var args = [window.location.pathname];\n args.push.apply(args, arguments);\n (console.debug || console.log).apply(console, args);\n}\n\n// URL Processing\n\n/**\n * @param {string} url\n * @return {{base: string, params: string}}\n */\nexport function parseUrl(url) {\n var parts = url.match(/^(.*?)(?:\\?(.*))?$/);\n return {\n base: parts[1],\n params: this.getParams(parts[2] || ''),\n };\n}\n\n/**\n * Expands a URL that may or may not be relative to `base`.\n *\n * @param {string} url\n * @param {string} base\n * @return {string}\n */\nexport function expandUrl(url, base) {\n if (!base) return url;\n if (url.match(/^(\\/|https?:\\/\\/)/)) return url;\n if (base.substr(base.length - 1) !== '/') {\n base = base + '/';\n }\n return base + url;\n}\n\n/**\n * @param {string=} opt_query A query string to parse.\n * @return {!Object<string, !Array<string>>} All params on the URL's query.\n */\nexport function getParams(opt_query) {\n var query = typeof opt_query === 'string' ? opt_query : window.location.search;\n if (query.substring(0, 1) === '?') {\n query = query.substring(1);\n }\n // python's SimpleHTTPServer tacks a `/` on the end of query strings :(\n if (query.slice(-1) === '/') {\n query = query.substring(0, query.length - 1);\n }\n if (query === '') return {};\n\n var result = {};\n query.split('&').forEach(function(part) {\n var pair = part.split('=');\n if (pair.length !== 2) {\n console.warn('Invalid URL query part:', part);\n return;\n }\n var key = decodeURIComponent(pair[0]);\n var value = decodeURIComponent(pair[1]);\n\n if (!result[key]) {\n result[key] = [];\n }\n result[key].push(value);\n });\n\n return result;\n}\n\n/**\n * Merges params from `source` into `target` (mutating `target`).\n *\n * @param {!Object<string, !Array<string>>} target\n * @param {!Object<string, !Array<string>>} source\n */\nexport function mergeParams(target, source) {\n Object.keys(source).forEach(function(key) {\n if (!(key in target)) {\n target[key] = [];\n }\n target[key] = target[key].concat(source[key]);\n });\n}\n\n/**\n * @param {string} param The param to return a value for.\n * @return {?string} The first value for `param`, if found.\n */\nexport function getParam(param) {\n var params = getParams();\n return params[param] ? params[param][0] : null;\n}\n\n/**\n * @param {!Object<string, !Array<string>>} params\n * @return {string} `params` encoded as a URI query.\n */\nexport function paramsToQuery(params) {\n var pairs = [];\n Object.keys(params).forEach(function(key) {\n params[key].forEach(function(value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n });\n return '?' + pairs.join('&');\n}\n\n/**\n * @param {!Location|string} location\n * @return {string}\n */\nexport function basePath(location) {\n return (location.pathname || location).match(/^.*\\//)[0];\n}\n\n/**\n * @param {!Location|string} location\n * @param {string} basePath\n * @return {string}\n */\nexport function relativeLocation(location, basePath) {\n var path = location.pathname || location;\n if (path.indexOf(basePath) === 0) {\n path = path.substring(basePath.length);\n }\n return path;\n}\n\n/**\n * @param {!Location|string} location\n * @return {string}\n */\nexport function cleanLocation(location) {\n var path = location.pathname || location;\n if (path.slice(-11) === '/index.html') {\n path = path.slice(0, path.length - 10);\n }\n return path;\n}\n\n/**\n * Like `async.parallelLimit`, but our own so that we don't force a dependency\n * on downstream code.\n *\n * @param {!Array<function(function(*))>} runners Runners that call their given\n * Node-style callback when done.\n * @param {number|function(*)} limit Maximum number of concurrent runners.\n * (optional).\n * @param {?function(*)} done Callback that should be triggered once all runners\n * have completed, or encountered an error.\n */\nexport function parallel(runners, limit, done) {\n if (typeof limit !== 'number') {\n done = limit;\n limit = 0;\n }\n if (!runners.length) return done();\n\n var called = false;\n var total = runners.length;\n var numActive = 0;\n var numDone = 0;\n\n function runnerDone(error) {\n if (called) return;\n numDone = numDone + 1;\n numActive = numActive - 1;\n\n if (error || numDone >= total) {\n called = true;\n done(error);\n } else {\n runOne();\n }\n }\n\n function runOne() {\n if (limit && numActive >= limit) return;\n if (!runners.length) return;\n numActive = numActive + 1;\n runners.shift()(runnerDone);\n }\n runners.forEach(runOne);\n}\n\n/**\n * Finds the directory that a loaded script is hosted on.\n *\n * @param {string} filename\n * @return {string?}\n */\nexport function scriptPrefix(filename) {\n var scripts = document.querySelectorAll('script[src*=\"' + filename + '\"]');\n if (scripts.length !== 1) return null;\n var script = scripts[0].src;\n return script.substring(0, script.indexOf(filename));\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as util from './util.js';\n\n// TODO(thedeeno): Consider renaming subsuite. IIRC, childRunner is entirely\n// distinct from mocha suite, which tripped me up badly when trying to add\n// plugin support. Perhaps something like 'batch', or 'bundle'. Something that\n// has no mocha correlate. This may also eliminate the need for root/non-root\n// suite distinctions.\n\n/**\n * A Mocha suite (or suites) run within a child iframe, but reported as if they\n * are part of the current context.\n */\nexport default function ChildRunner(url, parentScope) {\n var urlBits = util.parseUrl(url);\n util.mergeParams(\n urlBits.params, util.getParams(parentScope.location.search));\n delete urlBits.params.cli_browser_id;\n\n this.url = urlBits.base + util.paramsToQuery(urlBits.params);\n this.parentScope = parentScope;\n\n this.state = 'initializing';\n}\n\n// ChildRunners get a pretty generous load timeout by default.\nChildRunner.loadTimeout = 60000;\n\n// We can't maintain properties on iframe elements in Firefox/Safari/???, so we\n// track childRunners by URL.\nChildRunner._byUrl = {};\n\n/**\n * @return {ChildRunner} The `ChildRunner` that was registered for this window.\n */\nChildRunner.current = function() {\n return ChildRunner.get(window);\n};\n\n/**\n * @param {!Window} target A window to find the ChildRunner of.\n * @param {boolean} traversal Whether this is a traversal from a child window.\n * @return {ChildRunner} The `ChildRunner` that was registered for `target`.\n */\nChildRunner.get = function(target, traversal) {\n var childRunner = ChildRunner._byUrl[target.location.href];\n if (childRunner) return childRunner;\n if (window.parent === window) { // Top window.\n if (traversal) {\n console.warn('Subsuite loaded but was never registered. This most likely is due to wonky history behavior. Reloading...');\n window.location.reload();\n }\n return null;\n }\n // Otherwise, traverse.\n return window.parent.WCT._ChildRunner.get(target, true);\n};\n\n/**\n * Loads and runs the subsuite.\n *\n * @param {function} done Node-style callback.\n */\nChildRunner.prototype.run = function(done) {\n util.debug('ChildRunner#run', this.url);\n this.state = 'loading';\n this.onRunComplete = done;\n\n this.iframe = document.createElement('iframe');\n this.iframe.src = this.url;\n this.iframe.classList.add('subsuite');\n\n var container = document.getElementById('subsuites');\n if (!container) {\n container = document.createElement('div');\n container.id = 'subsuites';\n document.body.appendChild(container);\n }\n container.appendChild(this.iframe);\n\n // let the iframe expand the URL for us.\n this.url = this.iframe.src;\n ChildRunner._byUrl[this.url] = this;\n\n this.timeoutId = setTimeout(\n this.loaded.bind(this, new Error('Timed out loading ' + this.url)), ChildRunner.loadTimeout);\n\n this.iframe.addEventListener('error',\n this.loaded.bind(this, new Error('Failed to load document ' + this.url)));\n\n this.iframe.contentWindow.addEventListener('DOMContentLoaded', this.loaded.bind(this, null));\n};\n\n/**\n * Called when the sub suite's iframe has loaded (or errored during load).\n *\n * @param {*} error The error that occured, if any.\n */\nChildRunner.prototype.loaded = function(error) {\n util.debug('ChildRunner#loaded', this.url, error);\n\n // Not all targets have WCT loaded (compatiblity mode)\n if (this.iframe.contentWindow.WCT) {\n this.share = this.iframe.contentWindow.WCT.share;\n }\n\n if (error) {\n this.signalRunComplete(error);\n this.done();\n }\n};\n\n/**\n * Called in mocha/run.js when all dependencies have loaded, and the child is\n * ready to start running tests\n *\n * @param {*} error The error that occured, if any.\n */\nChildRunner.prototype.ready = function(error) {\n util.debug('ChildRunner#ready', this.url, error);\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n if (error) {\n this.signalRunComplete(error);\n this.done();\n }\n};\n\n/** Called when the sub suite's tests are complete, so that it can clean up. */\nChildRunner.prototype.done = function done() {\n util.debug('ChildRunner#done', this.url, arguments);\n\n // make sure to clear that timeout\n this.ready();\n this.signalRunComplete();\n\n if (!this.iframe) return;\n // Be safe and avoid potential browser crashes when logic attempts to interact\n // with the removed iframe.\n setTimeout(function() {\n this.iframe.parentNode.removeChild(this.iframe);\n this.iframe = null;\n }.bind(this), 1);\n};\n\nChildRunner.prototype.signalRunComplete = function signalRunComplete(error) {\n if (!this.onRunComplete) return;\n this.state = 'complete';\n this.onRunComplete(error);\n this.onRunComplete = null;\n};\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as util from './util.js';\nimport ChildRunner from './childrunner.js';\n\n/**\n * The global configuration state for WCT's browser client.\n */\nexport var _config = {\n /**\n * `.js` scripts to be loaded (synchronously) before WCT starts in earnest.\n *\n * Paths are relative to `scriptPrefix`.\n */\n environmentScripts: [\n // https://github.com/PolymerLabs/stacky/issues/2\n 'stacky/lib/parsing.js',\n 'stacky/lib/formatting.js',\n 'stacky/lib/normalization.js',\n 'async/lib/async.js',\n 'lodash/lodash.js',\n 'mocha/mocha.js',\n 'chai/chai.js',\n 'sinonjs/sinon.js',\n 'sinon-chai/lib/sinon-chai.js',\n 'accessibility-developer-tools/dist/js/axs_testing.js',\n 'web-component-tester/runtime-helpers/a11ySuite.js'\n ],\n\n /** Absolute root for client scripts. Detected in `setup()` if not set. */\n root: null,\n\n /** By default, we wait for any web component frameworks to load. */\n waitForFrameworks: true,\n\n /** Alternate callback for waiting for tests.\n * `this` for the callback will be the window currently running tests.\n */\n waitFor: null,\n\n /** How many `.html` suites that can be concurrently loaded & run. */\n numConcurrentSuites: 1,\n\n /** Whether `console.error` should be treated as a test failure. */\n trackConsoleError: true,\n\n /** Configuration passed to mocha.setup. */\n mochaOptions: {\n timeout: 10 * 1000\n },\n\n /** Whether WCT should emit (extremely verbose) debugging log messages. */\n verbose: false,\n};\n\n/**\n * Merges initial `options` into WCT's global configuration.\n *\n * @param {Object} options The options to merge. See `browser/config.js` for a\n * reference.\n */\nexport function setup(options) {\n var childRunner = ChildRunner.current();\n if (childRunner) {\n _deepMerge(_config, childRunner.parentScope.WCT._config);\n // But do not force the mocha UI\n delete _config.mochaOptions.ui;\n }\n\n if (options && typeof options === 'object') {\n _deepMerge(_config, options);\n }\n\n if (!_config.root) {\n // Sibling dependencies.\n var root = util.scriptPrefix('browser.js');\n _config.root = util.basePath(root.substr(0, root.length - 1));\n if (!_config.root) {\n throw new Error('Unable to detect root URL for WCT sources. Please set WCT.root before including browser.js');\n }\n }\n}\n\n/**\n * Retrieves a configuration value.\n *\n * @param {string} key\n * @return {*}\n */\nexport function get(key) {\n return _config[key];\n}\n\n// Internal\n\nfunction _deepMerge(target, source) {\n Object.keys(source).forEach(function(key) {\n if (target[key] !== null && typeof target[key] === 'object' && !Array.isArray(target[key])) {\n _deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n });\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as config from './config.js';\nimport * as util from './util.js';\nimport ChildRunner from './childrunner.js';\n\nexport var htmlSuites = [];\nexport var jsSuites = [];\n\n// We process grep ourselves to avoid loading suites that will be filtered.\nvar GREP = util.getParam('grep');\n\n/**\n * Loads suites of tests, supporting both `.js` and `.html` files.\n *\n * @param {!Array.<string>} files The files to load.\n */\nexport function loadSuites(files) {\n files.forEach(function(file) {\n if (/\\.js(\\?.*)?$/.test(file)) {\n jsSuites.push(file);\n } else if (/\\.html(\\?.*)?$/.test(file)) {\n htmlSuites.push(file);\n } else {\n throw new Error('Unknown resource type: ' + file);\n }\n });\n}\n\n/**\n * @return {!Array.<string>} The child suites that should be loaded, ignoring\n * those that would not match `GREP`.\n */\nexport function activeChildSuites() {\n var subsuites = htmlSuites;\n if (GREP) {\n var cleanSubsuites = [];\n for (var i = 0, subsuite; subsuite = subsuites[i]; i++) {\n if (GREP.indexOf(util.cleanLocation(subsuite)) !== -1) {\n cleanSubsuites.push(subsuite);\n }\n }\n subsuites = cleanSubsuites;\n }\n return subsuites;\n}\n\n/**\n * Loads all `.js` sources requested by the current suite.\n *\n * @param {!MultiReporter} reporter\n * @param {function} done\n */\nexport function loadJsSuites(reporter, done) {\n util.debug('loadJsSuites', jsSuites);\n\n var loaders = jsSuites.map(function(file) {\n // We only support `.js` dependencies for now.\n return util.loadScript.bind(util, file);\n });\n\n util.parallel(loaders, done);\n}\n\n/**\n * @param {!MultiReporter} reporter\n * @param {!Array.<string>} childSuites\n * @param {function} done\n */\nexport function runSuites(reporter, childSuites, done) {\n util.debug('runSuites');\n\n var suiteRunners = [\n // Run the local tests (if any) first, not stopping on error;\n _runMocha.bind(null, reporter),\n ];\n\n // As well as any sub suites. Again, don't stop on error.\n childSuites.forEach(function(file) {\n suiteRunners.push(function(next) {\n var childRunner = new ChildRunner(file, window);\n reporter.emit('childRunner start', childRunner);\n childRunner.run(function(error) {\n reporter.emit('childRunner end', childRunner);\n if (error) reporter.emitOutOfBandTest(file, error);\n next();\n });\n });\n });\n\n util.parallel(suiteRunners, config.get('numConcurrentSuites'), function(error) {\n reporter.done();\n done(error);\n });\n}\n\n/**\n * Kicks off a mocha run, waiting for frameworks to load if necessary.\n *\n * @param {!MultiReporter} reporter Where to send Mocha's events.\n * @param {function} done A callback fired, _no error is passed_.\n */\nfunction _runMocha(reporter, done, waited) {\n if (config.get('waitForFrameworks') && !waited) {\n var waitFor = (config.get('waitFor') || util.whenFrameworksReady).bind(window);\n waitFor(_runMocha.bind(null, reporter, done, true));\n return;\n }\n util.debug('_runMocha');\n var mocha = window.mocha;\n var Mocha = window.Mocha;\n\n mocha.reporter(reporter.childReporter(window.location));\n mocha.suite.title = reporter.suiteTitle(window.location);\n mocha.grep(GREP);\n\n // We can't use `mocha.run` because it bashes over grep, invert, and friends.\n // See https://github.com/visionmedia/mocha/blob/master/support/tail.js#L137\n var runner = Mocha.prototype.run.call(mocha, function(error) {\n if (document.getElementById('mocha')) {\n Mocha.utils.highlightTags('code');\n }\n done(); // We ignore the Mocha failure count.\n });\n\n // Mocha's default `onerror` handling strips the stack (to support really old\n // browsers). We upgrade this to get better stacks for async errors.\n //\n // TODO(nevir): Can we expand support to other browsers?\n if (navigator.userAgent.match(/chrome/i)) {\n window.onerror = null;\n window.addEventListener('error', function(event) {\n if (!event.error) return;\n if (event.error.ignore) return;\n runner.uncaught(event.error);\n });\n }\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as util from '../util.js';\n\n// We capture console events when running tests; so make sure we have a\n// reference to the original one.\nvar console = window.console;\n\nvar FONT = ';font: normal 13px \"Roboto\", \"Helvetica Neue\", \"Helvetica\", sans-serif;';\nvar STYLES = {\n plain: FONT,\n suite: 'color: #5c6bc0' + FONT,\n test: FONT,\n passing: 'color: #259b24' + FONT,\n pending: 'color: #e65100' + FONT,\n failing: 'color: #c41411' + FONT,\n stack: 'color: #c41411',\n results: FONT + 'font-size: 16px',\n};\n\n// I don't think we can feature detect this one...\nvar userAgent = navigator.userAgent.toLowerCase();\nvar CAN_STYLE_LOG = userAgent.match('firefox') || userAgent.match('webkit');\nvar CAN_STYLE_GROUP = userAgent.match('webkit');\n// Track the indent for faked `console.group`\nvar logIndent = '';\n\nfunction log(text, style) {\n text = text.split('\\n').map(function(l) { return logIndent + l; }).join('\\n');\n if (CAN_STYLE_LOG) {\n console.log('%c' + text, STYLES[style] || STYLES.plain);\n } else {\n console.log(text);\n }\n}\n\nfunction logGroup(text, style) {\n if (CAN_STYLE_GROUP) {\n console.group('%c' + text, STYLES[style] || STYLES.plain);\n } else if (console.group) {\n console.group(text);\n } else {\n logIndent = logIndent + ' ';\n log(text, style);\n }\n}\n\nfunction logGroupEnd() {\n if (console.groupEnd) {\n console.groupEnd();\n } else {\n logIndent = logIndent.substr(0, logIndent.length - 2);\n }\n}\n\nfunction logException(error) {\n log(error.stack || error.message || error, 'stack');\n}\n\n/**\n * A Mocha reporter that logs results out to the web `console`.\n *\n * @param {!Mocha.Runner} runner The runner that is being reported on.\n */\nexport default function Console(runner) {\n Mocha.reporters.Base.call(this, runner);\n\n runner.on('suite', function(suite) {\n if (suite.root) return;\n logGroup(suite.title, 'suite');\n }.bind(this));\n\n runner.on('suite end', function(suite) {\n if (suite.root) return;\n logGroupEnd();\n }.bind(this));\n\n runner.on('test', function(test) {\n logGroup(test.title, 'test');\n }.bind(this));\n\n runner.on('pending', function(test) {\n logGroup(test.title, 'pending');\n }.bind(this));\n\n runner.on('fail', function(test, error) {\n logException(error);\n }.bind(this));\n\n runner.on('test end', function(test) {\n logGroupEnd();\n }.bind(this));\n\n runner.on('end', this.logSummary.bind(this));\n}\n\n/** Prints out a final summary of test results. */\nConsole.prototype.logSummary = function logSummary() {\n logGroup('Test Results', 'results');\n\n if (this.stats.failures > 0) {\n log(util.pluralizedStat(this.stats.failures, 'failing'), 'failing');\n }\n if (this.stats.pending > 0) {\n log(util.pluralizedStat(this.stats.pending, 'pending'), 'pending');\n }\n log(util.pluralizedStat(this.stats.passes, 'passing'));\n\n if (!this.stats.failures) {\n log('test suite passed', 'passing');\n }\n log('Evaluated ' + this.stats.tests + ' tests in ' + this.stats.duration + 'ms.');\n logGroupEnd();\n};\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * WCT-specific behavior on top of Mocha's default HTML reporter.\n *\n * @param {!Mocha.Runner} runner The runner that is being reported on.\n */\nexport default function HTML(runner) {\n var output = document.createElement('div');\n output.id = 'mocha';\n document.body.appendChild(output);\n\n runner.on('suite', function(test) {\n this.total = runner.total;\n }.bind(this));\n\n Mocha.reporters.HTML.call(this, runner);\n}\n\n// Woo! What a hack. This just saves us from adding a bunch of complexity around\n// style loading.\nvar style = document.createElement('style');\nstyle.textContent = 'html, body {' +\n ' position: relative;' +\n ' height: 100%;' +\n ' width: 100%;' +\n ' min-width: 900px;' +\n '}' +\n '#mocha, #subsuites {' +\n ' height: 100%;' +\n ' position: absolute;' +\n ' top: 0;' +\n '}' +\n '#mocha {' +\n ' box-sizing: border-box;' +\n ' margin: 0 !important;' +\n ' overflow-y: auto;' +\n ' padding: 60px 20px;' +\n ' right: 0;' +\n ' left: 500px;' +\n '}' +\n '#subsuites {' +\n ' -ms-flex-direction: column;' +\n ' -webkit-flex-direction: column;' +\n ' display: -ms-flexbox;' +\n ' display: -webkit-flex;' +\n ' display: flex;' +\n ' flex-direction: column;' +\n ' left: 0;' +\n ' width: 500px;' +\n '}' +\n '#subsuites .subsuite {' +\n ' border: 0;' +\n ' width: 100%;' +\n ' height: 100%;' +\n '}' +\n '#mocha .test.pass .duration {' +\n ' color: #555 !important;' +\n '}';\ndocument.head.appendChild(style);\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as util from '../util.js';\n\nvar STACKY_CONFIG = {\n indent: ' ',\n locationStrip: [\n /^https?:\\/\\/[^\\/]+/,\n /\\?.*$/,\n ],\n filter: function(line) {\n return line.location.match(/\\/web-component-tester\\/[^\\/]+(\\?.*)?$/);\n },\n};\n\n// https://github.com/visionmedia/mocha/blob/master/lib/runner.js#L36-46\nvar MOCHA_EVENTS = [\n 'start',\n 'end',\n 'suite',\n 'suite end',\n 'test',\n 'test end',\n 'hook',\n 'hook end',\n 'pass',\n 'fail',\n 'pending',\n];\n\n// Until a suite has loaded, we assume this many tests in it.\nvar ESTIMATED_TESTS_PER_SUITE = 3;\n\n/**\n * A Mocha-like reporter that combines the output of multiple Mocha suites.\n *\n * @param {number} numSuites The number of suites that will be run, in order to\n * estimate the total number of tests that will be performed.\n * @param {!Array.<!Mocha.reporters.Base>} reporters The set of reporters that\n * should receive the unified event stream.\n * @param {MultiReporter} parent The parent reporter, if present.\n */\nexport default function MultiReporter(numSuites, reporters, parent) {\n this.reporters = reporters.map(function(reporter) {\n return new reporter(this);\n }.bind(this));\n\n this.parent = parent;\n this.basePath = parent && parent.basePath || util.basePath(window.location);\n\n this.total = numSuites * ESTIMATED_TESTS_PER_SUITE;\n // Mocha reporters assume a stream of events, so we have to be careful to only\n // report on one runner at a time...\n this.currentRunner = null;\n // ...while we buffer events for any other active runners.\n this.pendingEvents = [];\n\n this.emit('start');\n}\n\n/**\n * @param {!Location|string} location The location this reporter represents.\n * @return {!Mocha.reporters.Base} A reporter-like \"class\" for each child suite\n * that should be passed to `mocha.run`.\n */\nMultiReporter.prototype.childReporter = function childReporter(location) {\n var name = this.suiteTitle(location);\n // The reporter is used as a constructor, so we can't depend on `this` being\n // properly bound.\n var self = this;\n function reporter(runner) {\n runner.name = name;\n self.bindChildRunner(runner);\n }\n reporter.title = name;\n return reporter;\n};\n\n/** Must be called once all runners have finished. */\nMultiReporter.prototype.done = function done() {\n this.complete = true;\n this.flushPendingEvents();\n this.emit('end');\n};\n\n/**\n * Emit a top level test that is not part of any suite managed by this reporter.\n *\n * Helpful for reporting on global errors, loading issues, etc.\n *\n * @param {string} title The title of the test.\n * @param {*} opt_error An error associated with this test. If falsy, test is\n * considered to be passing.\n * @param {string} opt_suiteTitle Title for the suite that's wrapping the test.\n * @param {?boolean} opt_estimated If this test was included in the original\n * estimate of `numSuites`.\n */\nMultiReporter.prototype.emitOutOfBandTest = function emitOutOfBandTest(title, opt_error, opt_suiteTitle, opt_estimated) {\n util.debug('MultiReporter#emitOutOfBandTest(', arguments, ')');\n var root = new Mocha.Suite();\n root.title = opt_suiteTitle || '';\n var test = new Mocha.Test(title, function() {\n });\n test.parent = root;\n test.state = opt_error ? 'failed' : 'passed';\n test.err = opt_error;\n\n if (!opt_estimated) {\n this.total = this.total + ESTIMATED_TESTS_PER_SUITE;\n }\n\n var runner = {total: 1};\n this.proxyEvent('start', runner);\n this.proxyEvent('suite', runner, root);\n this.proxyEvent('test', runner, test);\n if (opt_error) {\n this.proxyEvent('fail', runner, test, opt_error);\n } else {\n this.proxyEvent('pass', runner, test);\n }\n this.proxyEvent('test end', runner, test);\n this.proxyEvent('suite end', runner, root);\n this.proxyEvent('end', runner);\n};\n\n/**\n * @param {!Location|string} location\n * @return {string}\n */\nMultiReporter.prototype.suiteTitle = function suiteTitle(location) {\n var path = util.relativeLocation(location, this.basePath);\n path = util.cleanLocation(path);\n return path;\n};\n\n// Internal Interface\n\n/** @param {!Mocha.runners.Base} runner The runner to listen to events for. */\nMultiReporter.prototype.bindChildRunner = function bindChildRunner(runner) {\n MOCHA_EVENTS.forEach(function(eventName) {\n runner.on(eventName, this.proxyEvent.bind(this, eventName, runner));\n }.bind(this));\n};\n\n/**\n * Evaluates an event fired by `runner`, proxying it forward or buffering it.\n *\n * @param {string} eventName\n * @param {!Mocha.runners.Base} runner The runner that emitted this event.\n * @param {...*} var_args Any additional data passed as part of the event.\n */\nMultiReporter.prototype.proxyEvent = function proxyEvent(eventName, runner, var_args) {\n var extraArgs = Array.prototype.slice.call(arguments, 2);\n if (this.complete) {\n console.warn('out of order Mocha event for ' + runner.name + ':', eventName, extraArgs);\n return;\n }\n\n if (this.currentRunner && runner !== this.currentRunner) {\n this.pendingEvents.push(arguments);\n return;\n }\n util.debug('MultiReporter#proxyEvent(', arguments, ')');\n\n // This appears to be a Mocha bug: Tests failed by passing an error to their\n // done function don't set `err` properly.\n //\n // TODO(nevir): Track down.\n if (eventName === 'fail' && !extraArgs[0].err) {\n extraArgs[0].err = extraArgs[1];\n }\n\n if (eventName === 'start') {\n this.onRunnerStart(runner);\n } else if (eventName === 'end') {\n this.onRunnerEnd(runner);\n } else {\n this.cleanEvent(eventName, runner, extraArgs);\n this.emit.apply(this, [eventName].concat(extraArgs));\n }\n};\n\n/**\n * Cleans or modifies an event if needed.\n *\n * @param {string} eventName\n * @param {!Mocha.runners.Base} runner The runner that emitted this event.\n * @param {!Array.<*>} extraArgs\n */\nMultiReporter.prototype.cleanEvent = function cleanEvent(eventName, runner, extraArgs) {\n // Suite hierarchy\n if (extraArgs[0]) {\n extraArgs[0] = this.showRootSuite(extraArgs[0]);\n }\n\n // Normalize errors\n if (eventName === 'fail') {\n extraArgs[1] = Stacky.normalize(extraArgs[1], STACKY_CONFIG);\n }\n if (extraArgs[0] && extraArgs[0].err) {\n extraArgs[0].err = Stacky.normalize(extraArgs[0].err, STACKY_CONFIG);\n }\n};\n\n/**\n * We like to show the root suite's title, which requires a little bit of\n * trickery in the suite hierarchy.\n *\n * @param {!Mocha.Runnable} node\n */\nMultiReporter.prototype.showRootSuite = function showRootSuite(node) {\n var leaf = node = Object.create(node);\n while (node && node.parent) {\n var wrappedParent = Object.create(node.parent);\n node.parent = wrappedParent;\n node = wrappedParent;\n }\n node.root = false;\n\n return leaf;\n};\n\n/** @param {!Mocha.runners.Base} runner */\nMultiReporter.prototype.onRunnerStart = function onRunnerStart(runner) {\n util.debug('MultiReporter#onRunnerStart:', runner.name);\n this.total = this.total - ESTIMATED_TESTS_PER_SUITE + runner.total;\n this.currentRunner = runner;\n};\n\n/** @param {!Mocha.runners.Base} runner */\nMultiReporter.prototype.onRunnerEnd = function onRunnerEnd(runner) {\n util.debug('MultiReporter#onRunnerEnd:', runner.name);\n this.currentRunner = null;\n this.flushPendingEvents();\n};\n\n/**\n * Flushes any buffered events and runs them through `proxyEvent`. This will\n * loop until all buffered runners are complete, or we have run out of buffered\n * events.\n */\nMultiReporter.prototype.flushPendingEvents = function flushPendingEvents() {\n var events = this.pendingEvents;\n this.pendingEvents = [];\n events.forEach(function(eventArgs) {\n this.proxyEvent.apply(this, eventArgs);\n }.bind(this));\n};\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as util from '../util.js';\n\nvar ARC_OFFSET = 0; // start at the right.\nvar ARC_WIDTH = 6;\n\n/**\n * A Mocha reporter that updates the document's title and favicon with\n * at-a-glance stats.\n *\n * @param {!Mocha.Runner} runner The runner that is being reported on.\n */\nexport default function Title(runner) {\n Mocha.reporters.Base.call(this, runner);\n\n runner.on('test end', this.report.bind(this));\n}\n\n/** Reports current stats via the page title and favicon. */\nTitle.prototype.report = function report() {\n this.updateTitle();\n this.updateFavicon();\n};\n\n/** Updates the document title with a summary of current stats. */\nTitle.prototype.updateTitle = function updateTitle() {\n if (this.stats.failures > 0) {\n document.title = util.pluralizedStat(this.stats.failures, 'failing');\n } else {\n document.title = util.pluralizedStat(this.stats.passes, 'passing');\n }\n};\n\n/**\n * Draws an arc for the favicon status, relative to the total number of tests.\n *\n * @param {!CanvasRenderingContext2D} context\n * @param {number} total\n * @param {number} start\n * @param {number} length\n * @param {string} color\n */\nfunction drawFaviconArc(context, total, start, length, color) {\n var arcStart = ARC_OFFSET + Math.PI * 2 * (start / total);\n var arcEnd = ARC_OFFSET + Math.PI * 2 * ((start + length) / total);\n\n context.beginPath();\n context.strokeStyle = color;\n context.lineWidth = ARC_WIDTH;\n context.arc(16, 16, 16 - ARC_WIDTH / 2, arcStart, arcEnd);\n context.stroke();\n}\n\n/** Updates the document's favicon w/ a summary of current stats. */\nTitle.prototype.updateFavicon = function updateFavicon() {\n var canvas = document.createElement('canvas');\n canvas.height = canvas.width = 32;\n var context = canvas.getContext('2d');\n\n var passing = this.stats.passes;\n var pending = this.stats.pending;\n var failing = this.stats.failures;\n var total = Math.max(this.runner.total, passing + pending + failing);\n drawFaviconArc(context, total, 0, passing, '#0e9c57');\n drawFaviconArc(context, total, passing, pending, '#f3b300');\n drawFaviconArc(context, total, pending + passing, failing, '#ff5621');\n\n this.setFavicon(canvas.toDataURL());\n};\n\n/** Sets the current favicon by URL. */\nTitle.prototype.setFavicon = function setFavicon(url) {\n var current = document.head.querySelector('link[rel=\"icon\"]');\n if (current) {\n document.head.removeChild(current);\n }\n\n var link = document.createElement('link');\n link.rel = 'icon';\n link.type = 'image/x-icon';\n link.href = url;\n link.setAttribute('sizes', '32x32');\n document.head.appendChild(link);\n};\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as suites from './suites.js';\nimport ConsoleReporter from './reporters/console.js';\nimport HTMLReporter from './reporters/html.js';\nimport MultiReporter from './reporters/multi.js';\nimport TitleReporter from './reporters/title.js';\n\nexport var htmlSuites = [];\nexport var jsSuites = [];\n\n/**\n * @param {CLISocket} socket The CLI socket, if present.\n * @param {MultiReporter} parent The parent reporter, if present.\n * @return {!Array.<!Mocha.reporters.Base} The reporters that should be used.\n */\nexport function determineReporters(socket, parent) {\n // Parents are greedy.\n if (parent) {\n return [parent.childReporter(window.location)];\n }\n\n // Otherwise, we get to run wild without any parental supervision!\n var reporters = [TitleReporter, ConsoleReporter];\n\n if (socket) {\n reporters.push(function(runner) {\n socket.observe(runner);\n });\n }\n\n if (suites.htmlSuites.length > 0 || suites.jsSuites.length > 0) {\n reporters.push(HTMLReporter);\n }\n\n return reporters;\n}\n\n/**\n * Yeah, hideous, but this allows us to be loaded before Mocha, which is handy.\n */\nexport function injectMocha(Mocha) {\n _injectPrototype(ConsoleReporter, Mocha.reporters.Base.prototype);\n _injectPrototype(HTMLReporter, Mocha.reporters.HTML.prototype);\n // Mocha doesn't expose its `EventEmitter` shim directly, so:\n _injectPrototype(MultiReporter, Object.getPrototypeOf(Mocha.Runner.prototype));\n}\n\nfunction _injectPrototype(klass, prototype) {\n var newPrototype = Object.create(prototype);\n // Only support\n Object.keys(klass.prototype).forEach(function(key) {\n newPrototype[key] = klass.prototype[key];\n });\n\n klass.prototype = newPrototype;\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as config from './config.js';\nimport * as reporters from './reporters.js';\nimport * as util from './util.js';\n\n/**\n * Loads all environment scripts ...synchronously ...after us.\n */\nexport function loadSync() {\n util.debug('Loading environment scripts:');\n config.get('environmentScripts').forEach(function(path) {\n var url = util.expandUrl(path, config.get('root'));\n util.debug('Loading environment script:', url);\n // Synchronous load.\n document.write('<script src=\"' + encodeURI(url) + '\"></script>'); // jshint ignore:line\n });\n util.debug('Environment scripts loaded');\n}\n\n/**\n * We have some hard dependencies on things that should be loaded via\n * `environmentScripts`, so we assert that they're present here; and do any\n * post-facto setup.\n */\nexport function ensureDependenciesPresent() {\n _ensureMocha();\n _checkChai();\n}\n\nfunction _ensureMocha() {\n var Mocha = window.Mocha;\n if (!Mocha) {\n throw new Error('WCT requires Mocha. Please ensure that it is present in WCT.environmentScripts, or that you load it before loading web-component-tester/browser.js');\n }\n reporters.injectMocha(Mocha);\n // Magic loading of mocha's stylesheet\n var mochaPrefix = util.scriptPrefix('mocha.js');\n // only load mocha stylesheet for the test runner output\n // Not the end of the world, if it doesn't load.\n if (mochaPrefix && window.top === window.self) {\n util.loadStyle(mochaPrefix + 'mocha.css');\n }\n}\n\nfunction _checkChai() {\n if (!window.chai) {\n util.debug('Chai not present; not registering shorthands');\n return;\n }\n\n window.assert = window.chai.assert;\n window.expect = window.chai.expect;\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as config from '../config.js';\n\n// We may encounter errors during initialization (for example, syntax errors in\n// a test file). Hang onto those (and more) until we are ready to report them.\nexport var globalErrors = [];\n\n/**\n * Hook the environment to pick up on global errors.\n */\nexport function listenForErrors() {\n window.addEventListener('error', function(event) {\n globalErrors.push(event.error);\n });\n\n // Also, we treat `console.error` as a test failure. Unless you prefer not.\n var origConsole = console;\n var origError = console.error;\n console.error = function wctShimmedError() {\n origError.apply(origConsole, arguments);\n if (config.get('trackConsoleError')) {\n throw 'console.error: ' + Array.prototype.join.call(arguments, ' ');\n }\n };\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport * as config from '../config.js';\n\n// Mocha global helpers, broken out by testing method.\n//\n// Keys are the method for a particular interface; values are their analog in\n// the opposite interface.\nvar MOCHA_EXPORTS = {\n // https://github.com/visionmedia/mocha/blob/master/lib/interfaces/tdd.js\n tdd: {\n 'setup': '\"before\"',\n 'teardown': '\"after\"',\n 'suiteSetup': '\"beforeEach\"',\n 'suiteTeardown': '\"afterEach\"',\n 'suite': '\"describe\" or \"context\"',\n 'test': '\"it\" or \"specify\"',\n },\n // https://github.com/visionmedia/mocha/blob/master/lib/interfaces/bdd.js\n bdd: {\n 'before': '\"setup\"',\n 'after': '\"teardown\"',\n 'beforeEach': '\"suiteSetup\"',\n 'afterEach': '\"suiteTeardown\"',\n 'describe': '\"suite\"',\n 'context': '\"suite\"',\n 'xdescribe': '\"suite.skip\"',\n 'xcontext': '\"suite.skip\"',\n 'it': '\"test\"',\n 'xit': '\"test.skip\"',\n 'specify': '\"test\"',\n 'xspecify': '\"test.skip\"',\n },\n};\n\n/**\n * Exposes all Mocha methods up front, configuring and running mocha\n * automatically when you call them.\n *\n * The assumption is that it is a one-off (sub-)suite of tests being run.\n */\nexport function stubInterfaces() {\n Object.keys(MOCHA_EXPORTS).forEach(function(ui) {\n Object.keys(MOCHA_EXPORTS[ui]).forEach(function(key) {\n window[key] = function wrappedMochaFunction() {\n _setupMocha(ui, key, MOCHA_EXPORTS[ui][key]);\n if (!window[key] || window[key] === wrappedMochaFunction) {\n throw new Error('Expected mocha.setup to define ' + key);\n }\n window[key].apply(window, arguments);\n };\n });\n });\n}\n\n// Whether we've called `mocha.setup`\nvar _mochaIsSetup = false;\n\n/**\n * @param {string} ui Sets up mocha to run `ui`-style tests.\n * @param {string} key The method called that triggered this.\n * @param {string} alternate The matching method in the opposite interface.\n */\nfunction _setupMocha(ui, key, alternate) {\n var mochaOptions = config.get('mochaOptions');\n if (mochaOptions.ui && mochaOptions.ui !== ui) {\n var message = 'Mixing ' + mochaOptions.ui + ' and ' + ui + ' Mocha styles is not supported. ' +\n 'You called \"' + key + '\". Did you mean ' + alternate + '?';\n throw new Error(message);\n }\n if (_mochaIsSetup) return;\n mochaOptions.ui = ui;\n mocha.setup(mochaOptions); // Note that the reporter is configured in run.js.\n}\n\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\nimport ChildRunner from './childrunner.js';\nimport * as util from './util.js';\n\nvar SOCKETIO_ENDPOINT = window.location.protocol + '//' + window.location.host;\nvar SOCKETIO_LIBRARY = SOCKETIO_ENDPOINT + '/socket.io/socket.io.js';\n\n/**\n * A socket for communication between the CLI and browser runners.\n *\n * @param {string} browserId An ID generated by the CLI runner.\n * @param {!io.Socket} socket The socket.io `Socket` to communicate over.\n */\nexport default function CLISocket(browserId, socket) {\n this.browserId = browserId;\n this.socket = socket;\n}\n\n/**\n * @param {!Mocha.Runner} runner The Mocha `Runner` to observe, reporting\n * interesting events back to the CLI runner.\n */\nCLISocket.prototype.observe = function observe(runner) {\n this.emitEvent('browser-start', {\n url: window.location.toString(),\n });\n\n // We only emit a subset of events that we care about, and follow a more\n // general event format that is hopefully applicable to test runners beyond\n // mocha.\n //\n // For all possible mocha events, see:\n // https://github.com/visionmedia/mocha/blob/master/lib/runner.js#L36\n runner.on('test', function(test) {\n this.emitEvent('test-start', {test: getTitles(test)});\n }.bind(this));\n\n runner.on('test end', function(test) {\n this.emitEvent('test-end', {\n state: getState(test),\n test: getTitles(test),\n duration: test.duration,\n error: test.err,\n });\n }.bind(this));\n\n runner.on('childRunner start', function(childRunner) {\n this.emitEvent('sub-suite-start', childRunner.share);\n }.bind(this));\n\n runner.on('childRunner end', function(childRunner) {\n this.emitEvent('sub-suite-end', childRunner.share);\n }.bind(this));\n\n runner.on('end', function() {\n this.emitEvent('browser-end');\n }.bind(this));\n};\n\n/**\n * @param {string} event The name of the event to fire.\n * @param {*} data Additional data to pass with the event.\n */\nCLISocket.prototype.emitEvent = function emitEvent(event, data) {\n this.socket.emit('client-event', {\n browserId: this.browserId,\n event: event,\n data: data,\n });\n};\n\n/**\n * Builds a `CLISocket` if we are within a CLI-run environment; short-circuits\n * otherwise.\n *\n * @param {function(*, CLISocket)} done Node-style callback.\n */\nCLISocket.init = function init(done) {\n var browserId = util.getParam('cli_browser_id');\n if (!browserId) return done();\n // Only fire up the socket for root runners.\n if (ChildRunner.current()) return done();\n\n util.loadScript(SOCKETIO_LIBRARY, function(error) {\n if (error) return done(error);\n\n var socket = io(SOCKETIO_ENDPOINT);\n socket.on('error', function(error) {\n socket.off();\n done(error);\n });\n\n socket.on('connect', function() {\n socket.off();\n done(null, new CLISocket(browserId, socket));\n });\n });\n};\n\n// Misc Utility\n\n/**\n * @param {!Mocha.Runnable} runnable The test or suite to extract titles from.\n * @return {!Array.<string>} The titles of the runnable and its parents.\n */\nfunction getTitles(runnable) {\n var titles = [];\n while (runnable && !runnable.root && runnable.title) {\n titles.unshift(runnable.title);\n runnable = runnable.parent;\n }\n return titles;\n}\n\n/**\n * @param {!Mocha.Runnable} runnable\n * @return {string}\n */\nfunction getState(runnable) {\n if (runnable.state === 'passed') {\n return 'passing';\n } else if (runnable.state == 'failed') {\n return 'failing';\n } else if (runnable.pending) {\n return 'pending';\n } else {\n return 'unknown';\n }\n}\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n// Make sure that we use native timers, in case they're being stubbed out.\nvar setInterval = window.setInterval; // jshint ignore:line\nvar setTimeout = window.setTimeout; // jshint ignore:line\nvar requestAnimationFrame = window.requestAnimationFrame; // jshint ignore:line\n\n/**\n * Runs `stepFn`, catching any error and passing it to `callback` (Node-style).\n * Otherwise, calls `callback` with no arguments on success.\n *\n * @param {function()} callback\n * @param {function()} stepFn\n */\nwindow.safeStep = function safeStep(callback, stepFn) {\n var err;\n try {\n stepFn();\n } catch (error) {\n err = error;\n }\n callback(err);\n};\n\n/**\n * Runs your test at declaration time (before Mocha has begun tests). Handy for\n * when you need to test document initialization.\n *\n * Be aware that any errors thrown asynchronously cannot be tied to your test.\n * You may want to catch them and pass them to the done event, instead. See\n * `safeStep`.\n *\n * @param {string} name The name of the test.\n * @param {function(?function())} testFn The test function. If an argument is\n * accepted, the test will be treated as async, just like Mocha tests.\n */\nwindow.testImmediate = function testImmediate(name, testFn) {\n if (testFn.length > 0) {\n return testImmediateAsync(name, testFn);\n }\n\n var err;\n try {\n testFn();\n } catch (error) {\n err = error;\n }\n\n test(name, function(done) {\n done(err);\n });\n};\n\n/**\n * An async-only variant of `testImmediate`.\n *\n * @param {string} name\n * @param {function(?function())} testFn\n */\nwindow.testImmediateAsync = function testImmediateAsync(name, testFn) {\n var testComplete = false;\n var err;\n\n test(name, function(done) {\n var intervalId = setInterval(function() {\n if (!testComplete) return;\n clearInterval(intervalId);\n done(err);\n }, 10);\n });\n\n try {\n testFn(function(error) {\n if (error) err = error;\n testComplete = true;\n });\n } catch (error) {\n err = error;\n testComplete = true;\n }\n};\n\n/**\n * Triggers a flush of any pending events, observations, etc and calls you back\n * after they have been processed.\n *\n * @param {function()} callback\n */\nwindow.flush = function flush(callback) {\n // Ideally, this function would be a call to Polymer.flush, but that doesn't\n // support a callback yet (https://github.com/Polymer/polymer-dev/issues/115),\n // ...and there's cross-browser flakiness to deal with.\n\n // Make sure that we're invoking the callback with no arguments so that the\n // caller can pass Mocha callbacks, etc.\n var done = function done() { callback(); };\n\n // Because endOfMicrotask is flaky for IE, we perform microtask checkpoints\n // ourselves (https://github.com/Polymer/polymer-dev/issues/114):\n var isIE = navigator.appName == 'Microsoft Internet Explorer';\n if (isIE && window.Platform && window.Platform.performMicrotaskCheckpoint) {\n var reallyDone = done;\n done = function doneIE() {\n Platform.performMicrotaskCheckpoint();\n setTimeout(reallyDone, 0);\n };\n }\n\n // Everyone else gets a regular flush.\n var scope = window.Polymer || window.WebComponents;\n if (scope && scope.flush) {\n scope.flush();\n }\n\n // Ensure that we are creating a new _task_ to allow all active microtasks to\n // finish (the code you're testing may be using endOfMicrotask, too).\n setTimeout(done, 0);\n};\n\n/**\n * Advances a single animation frame.\n *\n * Calls `flush`, `requestAnimationFrame`, `flush`, and `callback` sequentially\n * @param {function()} callback\n */\nwindow.animationFrameFlush = function animationFrameFlush(callback) {\n flush(function() {\n requestAnimationFrame(function() {\n flush(callback);\n });\n });\n};\n\n/**\n * DEPRECATED: Use `flush`.\n * @param {function} callback\n */\nwindow.asyncPlatformFlush = function asyncPlatformFlush(callback) {\n console.warn('asyncPlatformFlush is deprecated in favor of the more terse flush()');\n return window.flush(callback);\n};\n\n/**\n *\n */\nwindow.waitFor = function waitFor(fn, next, intervalOrMutationEl, timeout, timeoutTime) {\n timeoutTime = timeoutTime || Date.now() + (timeout || 1000);\n intervalOrMutationEl = intervalOrMutationEl || 32;\n try {\n fn();\n } catch (e) {\n if (Date.now() > timeoutTime) {\n throw e;\n } else {\n if (isNaN(intervalOrMutationEl)) {\n intervalOrMutationEl.onMutation(intervalOrMutationEl, function() {\n waitFor(fn, next, intervalOrMutationEl, timeout, timeoutTime);\n });\n } else {\n setTimeout(function() {\n waitFor(fn, next, intervalOrMutationEl, timeout, timeoutTime);\n }, intervalOrMutationEl);\n }\n return;\n }\n }\n next();\n};\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n/**\n * This file is the entry point into `web-component-tester`'s browser client.\n */\nimport * as config from './config.js';\nimport * as environment from './environment.js';\nimport * as errors from './environment/errors.js';\nimport * as mocha from './mocha';\nimport * as reporters from './reporters';\nimport * as suites from './suites.js';\nimport * as util from './util.js';\nimport CLISocket from './clisocket.js';\nimport ChildRunner from './childrunner.js';\nimport MultiReporter from './reporters/multi.js';\n// Registers a bunch of globals:\nimport './environment/helpers.js';\n\n// You can configure WCT before it has loaded by assigning your custom\n// configuration to the global `WCT`.\nconfig.setup(window.WCT);\n\n// Maybe some day we'll expose WCT as a module to whatever module registry you\n// are using (aka the UMD approach), or as an es6 module.\nvar WCT = window.WCT = {};\n// A generic place to hang data about the current suite. This object is reported\n// back via the `sub-suite-start` and `sub-suite-end` events.\nWCT.share = {};\n// Until then, we get to rely on it to expose parent runners to their children.\nWCT._ChildRunner = ChildRunner;\nWCT._config = config._config;\n\n\n// Public Interface\n\n/**\n * Loads suites of tests, supporting both `.js` and `.html` files.\n *\n * @param {!Array.<string>} files The files to load.\n */\nWCT.loadSuites = suites.loadSuites;\n\n\n// Load Process\n\nerrors.listenForErrors();\nmocha.stubInterfaces();\nenvironment.loadSync();\n\n// Give any scripts on the page a chance to declare tests and muck with things.\ndocument.addEventListener('DOMContentLoaded', function() {\n util.debug('DOMContentLoaded');\n\n environment.ensureDependenciesPresent();\n\n // We need the socket built prior to building its reporter.\n CLISocket.init(function(error, socket) {\n if (error) throw error;\n\n // Are we a child of another run?\n var current = ChildRunner.current();\n var parent = current && current.parentScope.WCT._reporter;\n util.debug('parentReporter:', parent);\n\n var childSuites = suites.activeChildSuites();\n var reportersToUse = reporters.determineReporters(socket, parent);\n // +1 for any local tests.\n var reporter = new MultiReporter(childSuites.length + 1, reportersToUse, parent);\n WCT._reporter = reporter; // For environment/compatibility.js\n\n // We need the reporter so that we can report errors during load.\n suites.loadJsSuites(reporter, function(error) {\n // Let our parent know that we're about to start the tests.\n if (current) current.ready(error);\n if (error) throw error;\n\n // Emit any errors we've encountered up til now\n errors.globalErrors.forEach(function onError(error) {\n reporter.emitOutOfBandTest('Test Suite Initialization', error);\n });\n\n suites.runSuites(reporter, childSuites, function(error) {\n // Make sure to let our parent know that we're done.\n if (current) current.done();\n if (error) throw error;\n });\n });\n });\n});\n"],"names":[],"mappings":"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"}