ui5-test-runner
Version:
Standalone test runner for UI5
79 lines (74 loc) • 1.96 kB
JavaScript
const { $proxifiedUrls } = require('./symbols')
const send = (response, obj) => {
let json
if (typeof obj !== 'string') {
json = JSON.stringify(obj, undefined, 2)
} else {
json = obj
}
const length = (new TextEncoder().encode(json)).length
response.writeHead(200, {
'Content-Type': 'application/json',
'Content-Length': length
})
response.end(json)
}
const notFound = response => {
response.writeHead(404)
response.end()
}
module.exports = {
async getJobProgress (job, request, response, pageId, testId) {
if (pageId) {
const url = Object.keys(job.qunitPages).find(pageUrl => job.qunitPages[pageUrl].id === pageId)
if (!url) {
return notFound(response)
}
const qunitPage = { url, ...job.qunitPages[url] }
if (!testId) {
return send(response, JSON.stringify(qunitPage, (key, value) => {
if (key === 'logs') {
return undefined
}
return value
}, 2))
}
let test
let moduleName
qunitPage.modules.every(module => module.tests.every(candidate => {
if (candidate.testId === testId) {
moduleName = module.name
test = candidate
return false
}
return true
}))
if (!test) {
return notFound(response)
}
return send(response, {
url,
pageId,
module: moduleName,
...test
})
}
send(response, JSON.stringify({
...job,
status: job.status
}, (key, value) => {
if (key === 'qunitPages' && job[$proxifiedUrls]) {
const unproxifiedQunitPages = {}
for (const url of Object.keys(job.qunitPages)) {
unproxifiedQunitPages[job[$proxifiedUrls][url] || url] = job.qunitPages[url]
}
return unproxifiedQunitPages
}
if (key === 'modules') {
return undefined
}
return value
}, 2))
}
}