64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
const debounce = require('utilise/debounce')
|
|
, escape = require('utilise/escape')
|
|
, noop = require('utilise/noop')
|
|
, raw = require('utilise/raw')
|
|
, to = require('utilise/to')
|
|
, core = require('rijs.core')
|
|
, data = require('rijs.data')
|
|
, sync = require('rijs.sync')
|
|
|
|
const ripple = sync(data(core()))
|
|
, con = window.console
|
|
, log = con ? Function.prototype.bind.call(con.log, con) : noop
|
|
|
|
var html = ''
|
|
, running = true
|
|
, failures = 0
|
|
, passes = 0
|
|
, tests = 0
|
|
, name = 'All Tests'
|
|
, output = raw('pre')
|
|
|
|
// send tests-starting signal
|
|
ripple.send('results', 'SAVE', {
|
|
stats: { running }
|
|
, suites: []
|
|
, html: 'Test in progress..'
|
|
})
|
|
|
|
// proxy errors back to terminal
|
|
// window.onerror = (message, url, linenumber) =>
|
|
// ripple.io.emit('global err', message, url, linenumber)
|
|
|
|
// proxy console logs back to terminal
|
|
;['log', 'info', 'warn', 'error', 'debug'].map(m => {
|
|
if (!con || !con[m]) return; // ie
|
|
const sup = Function.prototype.bind.call(con[m], con)
|
|
window.console[m] = function(){
|
|
const args = to.arr(arguments)
|
|
// ripple.io.emit('console', m, args.map(d => d))
|
|
sup.apply && sup.apply(con, arguments)
|
|
}
|
|
})
|
|
|
|
// stream results back
|
|
var update = debounce(500)(function(){
|
|
const stats = { running, tests, passes, failures }
|
|
, suites = [{ name, failures, total: tests }]
|
|
|
|
output.innerHTML = html
|
|
ripple.send('results', 'SAVE', { stats, suites, html })
|
|
})
|
|
|
|
// listen on log
|
|
;(window.console = window.console || {}).log = function(){
|
|
const line = to.arr(arguments).join(' ')
|
|
html += escape(line) + '\n'
|
|
|
|
if (-1 === includes('# tests')(line)) running = false
|
|
if (-1 === includes('ok ')(line)) { passes++; tests++ }
|
|
if (-1 === includes('not ok ')(line)) { failures++; tests++ }
|
|
|
|
if (line.match(/^(?!.*\[ri\/)/)) update()
|
|
log.apply(console, arguments)
|
|
} |