return hex.slice(0, size)
}
const output = document.getElementById('output')
+
+ const consoleError = console.error
+ const consoleLog = console.log
+
+ function consoleOverride () {
+ console.error = (...args) => {
+ let a = args.join()
+ a = a.replace('%cFAIL ,color:red,', '<span style="color:red">FAIL </span>')
+ output.innerHTML += `<pre>${a}</pre>`
+ consoleError(...args)
+ window?.scrollTo(0, document.body.scrollHeight)
+ }
+ console.log = (...args) => {
+ let a = args.join()
+ a = a.replace('%cTEST RUNNER CHECK DONE,font-weight:bold', '<span style="font-weight:bold">TEST RUNNER CHECK DONE </span>')
+ a = a.replace('%cPASS ,color:green,', '<span style="color:green">PASS </span>')
+ a = a.replace('%cSKIP ,color:CornflowerBlue,', '<span style="color:CornflowerBlue">SKIP </span>')
+ a = a.replace('%cTESTING COMPLETE,color:orange;font-weight:bold', '<span style="color:orange;font-weight:bold">TESTING COMPLETE</span>')
+ a = a.replace('%cPASS: ,color:green;font-weight:bold,', '<span style="color:green;font-weight:bold">PASS </span>')
+ a = a.replace('%cFAIL: ,color:red;font-weight:bold,', '<span style="color:red;font-weight:bold">FAIL </span>')
+ output.innerHTML += `<pre>${a}</pre>`
+ consoleLog(...args)
+ window?.scrollTo(0, document.body.scrollHeight)
+ }
+ }
+ consoleOverride()
+
const consoleGroup = console.group
console.group = (...args) => {
+ consoleOverride()
let a = args.join()
a = a.replace('%cSKIP ,color:CornflowerBlue,', '<span style="color:CornflowerBlue;font-weight:bold">SKIP </span>')
a = a.replace(',font-weight:bold', '</span>')
consoleGroup(...args)
window?.scrollTo(0, document.body.scrollHeight)
}
- const consoleError = console.error
- console.error = (...args) => {
+ const consoleGroupCollapsed = console.groupCollapsed
+ console.groupCollapsed = (...args) => {
+ console.error = (...args) => consoleError(...args)
+ console.log = (...args) => consoleLog(...args)
let a = args.join()
- a = a.replace('%cFAIL ,color:red,', '<span style="color:red">FAIL </span>')
+ a = a.replace('%cSKIP ,color:CornflowerBlue,', '<span style="color:CornflowerBlue;font-weight:bold">SKIP </span>')
+ a = a.replace(',font-weight:bold', '</span>')
+ a = a.replace('%c', '<span style="font-weight:bold">')
output.innerHTML += `<pre>${a}</pre>`
- consoleError(...args)
+ consoleGroupCollapsed(...args)
window?.scrollTo(0, document.body.scrollHeight)
}
- const consoleLog = console.log
- console.log = (...args) => {
- let a = args.join()
- a = a.replace('%cTEST RUNNER CHECK DONE,font-weight:bold', '<span style="font-weight:bold">TEST RUNNER CHECK DONE </span>')
- a = a.replace('%cPASS ,color:green,', '<span style="color:green">PASS </span>')
- a = a.replace('%cSKIP ,color:CornflowerBlue,', '<span style="color:CornflowerBlue">SKIP </span>')
- a = a.replace('%cTESTING COMPLETE,color:orange;font-weight:bold', '<span style="color:orange;font-weight:bold">TESTING COMPLETE</span>')
- output.innerHTML += `<pre>${a}</pre>`
- consoleLog(...args)
+ const consoleGroupEnd = console.groupEnd
+ console.groupEnd = () => {
+ consoleGroupEnd()
+ consoleOverride()
window?.scrollTo(0, document.body.scrollHeight)
}
})()
}
}
-const failures = []
-const passes = []
+export const failures = []
+export const passes = []
function fail (err) {
failures.push(err.message)
console.error(`%cFAIL `, 'color:red', err.message, err.cause)
console.log(`%cPASS `, 'color:green', name)
}
-await suite('TEST RUNNER CHECK', async () => {
+await suite('TEST RUNNER CHECK', { collapse: true }, async () => {
await new Promise(r => setTimeout(r, 0))
console.assert(failures.length === 0)
console.assert(failures.some(call => /.*function should fail.*/.test(call)) === true, 'bad function not errored')
console.assert(passes.some(call => /.*function should fail.*/.test(call)) === false, 'bad function logged')
- console.log(`%cTEST RUNNER CHECK DONE`, 'font-weight:bold')
+ failures.splice(0)
+ passes.splice(0)
})
+console.log(`%cTEST RUNNER CHECK DONE`, 'font-weight:bold')
export function suite (name, opts, fn) {
if (fn === undefined) fn = opts
}
if (fn?.constructor?.name === 'AsyncFunction') fn = fn()
if (typeof fn === 'function') fn = new Promise(resolve => resolve(fn()))
- console.group(`%c${name}`, 'font-weight:bold')
+ opts?.collapse
+ ? console.groupCollapsed(`%c${name}`, 'font-weight:bold')
+ : console.group(`%c${name}`, 'font-weight:bold')
await fn
console.groupEnd()
})