| 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 |