UNPKG

spectacular

Version:

Advanced BDD framework for CoffeeScript and JavaScript

74 lines (56 loc) 2.11 kB
Plurals = failure: 'failures' errored: 'errored' skipped: 'skipped' pending: 'pending' success: 'success' class spectacular.widgets.RunnerProgress init: (@runner, @reporter) -> @container = buildHTML spectacular.templates.progress(seed: @runner.options.seed, chars: CHAR_MAP) @totalValue = @container.querySelector('.all .total') @timeValue = @container.querySelector('.time .value') @allValue = @container.querySelector('.all .value') for state of CHAR_MAP @[state + 'Value'] = @container.querySelector(".#{state} .value") @[state + 'Text'] = @container.querySelector(".#{state} .symbol") @reporter.container.appendChild @container onStart: -> @counters = all: 0 failure: 0 errored: 0 skipped: 0 pending: 0 success: 0 @totalValue.textContent = @runner.examples.length @interval = setInterval => t = new Date(new Date() - @runner.specsStartedAt) @timeValue.textContent = "#{t.getSeconds()}.#{t.getMilliseconds()}s" , 100 self = this for state of CHAR_MAP btn = @container.querySelector ".#{state}" btn.onclick = -> toggleClass document.body, "hide-#{this.attributes['data-state'].value}" update: -> @allValue.textContent = @counters.all for key,c of CHAR_MAP @["#{key}Value"].textContent = @counters[key] @["#{key}Text"].textContent = ' ' + if @counters[key] > 1 then Plurals[key] else key if @counters[key] and not hasClass(@[key], 'not-zero') addClass @[key], 'not-zero' onResult: (e) -> example = e.target @counters.all++ @counters[example.result.state]++ if example.result.state in ['failure', 'errored'] addClass @container, 'fail' @update() onEnd: (e) -> clearInterval @interval results = e.target t = new Date(results.specsEndedAt - results.specsStartedAt) @timeValue.textContent = "#{t.getSeconds()}.#{t.getMilliseconds()}s" if @counters.failure is 0 and @counters.errored is 0 addClass @container, 'success' else addClass @container, 'failure'