Improvements on Mocha runner reporter

This commit is contained in:
Maurício Szabo 2023-05-27 00:37:57 -03:00
parent fe9d724284
commit 58cd60ce04
2 changed files with 42 additions and 13 deletions

View File

@ -0,0 +1,25 @@
function findElement(selector, parent = document) {
return promiseToCheck( () => parent.querySelector(selector) );
}
function promiseToCheck(fn, waitTime = 2000) {
return new Promise(resolve => {
const interval = setInterval(() => {
const result = fn();
if(result) {
clearInterval(interval)
resolve(result)
};
}, 50)
setTimeout(() => {
resolve()
clearInterval(interval)
}, waitTime)
})
}
module.exports = {
findElement,
promiseToCheck
}

View File

@ -52,22 +52,27 @@ class Reporter {
.on(EVENT_TEST_FAIL, (test, err) => { .on(EVENT_TEST_FAIL, (test, err) => {
const panel = createElem('atom-panel', "", {classes: ['inset-panel', 'padded']}) const panel = createElem('atom-panel', "", {classes: ['inset-panel', 'padded']})
panel.style.border = '1px solid' panel.style.border = '1px solid'
createElem('button', test.fullTitle(), { const button = createElem('button', test.fullTitle(), {
classes: ['btn', 'btn-error', 'inline-block-tight'], classes: ['btn', 'btn-error', 'inline-block-tight'],
parent: panel parent: panel
}) })
createElem('div', err.message, { classes: ['text-error'], parent: panel})
createElem('div', "DIFF:", {parent: panel})
// const div = document.createElement('button')
// div.classList.add('btn', 'btn-error', 'inline-block-tight');
// div.innerText = test.fullTitle()
// panel.appendChild(div)
// panel.append(err.message)
console.log("ERR", err)
const diff = document.createElement('div') const details = createElem('atom-panel', "", {
diff.classList.add('inset-panel', 'padded', 'block') classes: ['inset-panel', 'padded'], parent: panel
})
button.onclick = (evt) => {
evt.preventDefault()
details.style.display = details.style.display === 'none' ? 'block' : 'none'
}
createElem('div', err.message, { classes: ['text-error'], parent: details})
if(err.expected && err.actual) { if(err.expected && err.actual) {
createElem('div', "DIFF:", {parent: details})
const diff = createElem('div', '', {
classes: ['inset-panel', 'padded', 'block'],
parent: details
})
diffElements.diffJson(err.expected, err.actual).forEach(patch => { diffElements.diffJson(err.expected, err.actual).forEach(patch => {
const test = createElem('div', patch.value, {parent: diff}) const test = createElem('div', patch.value, {parent: diff})
test.style['white-space'] = 'pre' test.style['white-space'] = 'pre'
@ -80,10 +85,9 @@ class Reporter {
} }
}) })
} }
// panel.appendChild(diff)
const stackTrace = createElem('div', '', { const stackTrace = createElem('div', '', {
classes: ['block', 'padded'], classes: ['block', 'padded'],
parent: panel parent: details
}) })
stackTrace.style.display = 'flex'; stackTrace.style.display = 'flex';
stackTrace.style['flex-direction'] = 'column'; stackTrace.style['flex-direction'] = 'column';