Comparing version 0.4.7 to 0.4.8
@@ -10,5 +10,6 @@ "use strict"; | ||
var testFailures = testResults.failures; | ||
var res = []; | ||
var failuresPerRequest = {}; | ||
for (var key in testFailures) { | ||
if (testFailures.hasOwnProperty(key)) { | ||
failuresPerRequest[key] = []; | ||
var failedReq = resolvedRequests[key]; | ||
@@ -21,3 +22,3 @@ var reqAssertions = failedReq.assert; | ||
if (fail) { | ||
res.push(fail); | ||
failuresPerRequest[key].push(fail); | ||
} | ||
@@ -28,8 +29,47 @@ } | ||
} | ||
return res; | ||
return failuresPerRequest; | ||
}; | ||
exports.checkAndPrintAssertionErrors = function (trialRes) { | ||
var assertionErrors = getAssertionErrors(trialRes); | ||
if (!exports.isEmptyObj(assertionErrors)) { | ||
console.error('\x1b[31m', 'Test assertions failures -', '\x1b[0m', "" + JSON.stringify(assertionErrors, null, 4)); | ||
var assertionErrorsPerRequest = getAssertionErrors(trialRes); | ||
if (!exports.isEmptyObj(assertionErrorsPerRequest)) { | ||
console.error('\x1b[31m', 'Test failures -', '\x1b[0m'); | ||
for (var requestIndex in assertionErrorsPerRequest) { | ||
var request = trialRes.resolvedRequests[requestIndex]; | ||
var description = request.description || requestIndex; | ||
if (assertionErrorsPerRequest[requestIndex].length == 0) { | ||
// If there was a failure but no assertion failed this means the request itself failed | ||
console.log("Failed request \"" + description + "\" - " + request.method + " " + request.url); | ||
if (request.response) { | ||
console.log("Status: " + request.response.status + " " + request.response.statusText); | ||
} | ||
var histogram = trialRes.failures[requestIndex].histogram; | ||
for (var errorKey in histogram) { | ||
console.log("Error: " + errorKey); | ||
} | ||
} | ||
else { | ||
console.log("Assertion errors in request \"" + description + "\" - " + request.method + " " + request.url); | ||
} | ||
for (var _i = 0, _a = assertionErrorsPerRequest[requestIndex]; _i < _a.length; _i++) { | ||
var error = _a[_i]; | ||
var parameter = error.check; | ||
var actualParameterValue = void 0; // can stay undefined in case the param is undefined | ||
for (var _b = 0, _c = request.postParameters; _b < _c.length; _b++) { | ||
var paramWrapper = _c[_b]; | ||
actualParameterValue = paramWrapper[parameter]; | ||
} | ||
// to do, eval the assertion expression to the actual string | ||
var assertionMismatch = "be not empty or true"; | ||
if (error.equals) { | ||
assertionMismatch = "be \"" + error.equals + "\""; | ||
} | ||
else if (error.contains) { | ||
assertionMismatch = "contain \"" + error.contains + "\""; | ||
} | ||
else if (error.matches) { | ||
assertionMismatch = "match \"" + error.matches + "\""; | ||
} | ||
console.log("Paramter \"" + parameter + "\" value is \"" + actualParameterValue + "\", expected to", assertionMismatch); | ||
} | ||
} | ||
} | ||
@@ -36,0 +76,0 @@ }; |
{ | ||
"name": "loadmill", | ||
"version": "0.4.7", | ||
"version": "0.4.8", | ||
"description": "A node.js module for running load tests and functional tests on loadmill.com", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -8,6 +8,6 @@ import * as fs from "fs"; | ||
const getAssertionErrors = (testResults) => { | ||
const resolvedRequests = testResults.resolvedRequests; | ||
const testFailures: Loadmill.TestFailures = testResults.failures; | ||
const resolvedRequests = testResults.resolvedRequests; | ||
const testFailures: Loadmill.TestFailures = testResults.failures; | ||
const res: any[] = []; | ||
const failuresPerRequest = {}; | ||
@@ -17,2 +17,4 @@ for (let key in testFailures) { | ||
failuresPerRequest[key] = []; | ||
let failedReq = resolvedRequests[key]; | ||
@@ -25,3 +27,3 @@ let reqAssertions = failedReq.assert; | ||
let fail = reqAssertions[histoKey]; | ||
if (fail) { res.push(fail); } | ||
if (fail) { failuresPerRequest[key].push(fail); } | ||
} | ||
@@ -32,10 +34,52 @@ } | ||
} | ||
return res; | ||
return failuresPerRequest; | ||
}; | ||
export const checkAndPrintAssertionErrors = (trialRes) => { | ||
let assertionErrors = getAssertionErrors(trialRes); | ||
if (!isEmptyObj(assertionErrors)) { | ||
console.error('\x1b[31m', 'Test assertions failures -', '\x1b[0m', | ||
`${JSON.stringify(assertionErrors, null, 4)}`); | ||
let assertionErrorsPerRequest = getAssertionErrors(trialRes); | ||
if (!isEmptyObj(assertionErrorsPerRequest)) { | ||
console.error('\x1b[31m', 'Test failures -', '\x1b[0m'); | ||
for (let requestIndex in assertionErrorsPerRequest) { | ||
let request = trialRes.resolvedRequests[requestIndex]; | ||
let description = request.description || requestIndex; | ||
if (assertionErrorsPerRequest[requestIndex].length == 0) { | ||
// If there was a failure but no assertion failed this means the request itself failed | ||
console.log(`Failed request "${description}" - ${request.method} ${request.url}`); | ||
if (request.response) { | ||
console.log(`Status: ${request.response.status} ${request.response.statusText}`); | ||
} | ||
let histogram = trialRes.failures[requestIndex].histogram; | ||
for (let errorKey in histogram) { | ||
console.log(`Error: ${errorKey}`); | ||
} | ||
} else { | ||
console.log(`Assertion errors in request "${description}" - ${request.method} ${request.url}`); | ||
} | ||
for (let error of assertionErrorsPerRequest[requestIndex]) { | ||
const parameter = error.check; | ||
let actualParameterValue; // can stay undefined in case the param is undefined | ||
for (let paramWrapper of request.postParameters) { | ||
actualParameterValue = paramWrapper[parameter]; | ||
} | ||
// to do, eval the assertion expression to the actual string | ||
let assertionMismatch = "be not empty or true" | ||
if (error.equals) { | ||
assertionMismatch = `be "${error.equals}"` | ||
} else if (error.contains) { | ||
assertionMismatch = `contain "${error.contains}"` | ||
} else if (error.matches) { | ||
assertionMismatch = `match "${error.matches}"` | ||
} | ||
console.log(`Paramter "${parameter}" value is "${actualParameterValue}", expected to`, assertionMismatch); | ||
} | ||
} | ||
} | ||
@@ -48,3 +92,3 @@ }; | ||
if (isFile && endsWith(fileOrFolder,'.json')) { | ||
if (isFile && endsWith(fileOrFolder, '.json')) { | ||
filelist.push(fileOrFolder); | ||
@@ -68,3 +112,3 @@ } else if (!isFile) { | ||
constructor(verbose: boolean){ | ||
constructor(verbose: boolean) { | ||
this.verb = verbose; | ||
@@ -75,3 +119,3 @@ } | ||
error = (err) => console.error('\x1b[31m', err, '\x1b[0m'); | ||
verbose = (msg, ...args) => this.verb ? console.log(msg, ...args) : void(0); | ||
verbose = (msg, ...args) => this.verb ? console.log(msg, ...args) : void (0); | ||
} |
1114
69599
15