| const BaseReporter = require('./base') | |
| function ProgressReporter (formatError, reportSlow, useColors, browserConsoleLogOptions) { | |
| BaseReporter.call(this, formatError, reportSlow, useColors, browserConsoleLogOptions) | |
| this.EXCLUSIVELY_USE_COLORS = false | |
| this._browsers = [] | |
| this.writeCommonMsg = function (msg) { | |
| this.write(this._remove() + msg + this._render()) | |
| } | |
| this.specSuccess = function () { | |
| this.write(this._refresh()) | |
| } | |
| this.onBrowserComplete = function () { | |
| this.write(this._refresh()) | |
| } | |
| this.onRunStart = function () { | |
| this._browsers = [] | |
| this._isRendered = false | |
| } | |
| this.onBrowserStart = function (browser) { | |
| this._browsers.push(browser) | |
| if (this._isRendered) { | |
| this.write('\n') | |
| } | |
| this.write(this._refresh()) | |
| } | |
| this._remove = function () { | |
| if (!this._isRendered) { | |
| return '' | |
| } | |
| let cmd = '' | |
| this._browsers.forEach(function () { | |
| cmd += '\x1B[1A' + '\x1B[2K' | |
| }) | |
| this._isRendered = false | |
| return cmd | |
| } | |
| this._render = function () { | |
| this._isRendered = true | |
| return this._browsers.map(this.renderBrowser).join('\n') + '\n' | |
| } | |
| this._refresh = function () { | |
| return this._remove() + this._render() | |
| } | |
| } | |
| // PUBLISH | |
| module.exports = ProgressReporter |