48 строки
1.4 KiB
TypeScript
48 строки
1.4 KiB
TypeScript
import { injectable } from "inversify";
|
|
import { ApiScenarioTestResult } from "./newmanReportValidator";
|
|
import { generateJUnitCaseReport } from "./markdownReport";
|
|
|
|
@injectable()
|
|
export class JUnitReporter {
|
|
private builder: any;
|
|
public constructor() {
|
|
this.builder = require("junit-report-builder");
|
|
}
|
|
|
|
public addSuiteToBuild = async (tsr: ApiScenarioTestResult, path: string) => {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
const suite = this.builder.testSuite().name(tsr.apiScenarioName);
|
|
tsr.stepResult.forEach((sr) => {
|
|
const tc = suite
|
|
.testCase()
|
|
.className(tsr.apiScenarioName)
|
|
.name(`${tsr.apiScenarioName}.${sr.stepName}`)
|
|
.file(sr.exampleFilePath);
|
|
if (sr.runtimeError && sr.runtimeError.length > 0) {
|
|
const detail = generateJUnitCaseReport(sr);
|
|
tc.failure(detail, "RunTimeError");
|
|
} else {
|
|
tc.standardOutput("This step is completed successfully");
|
|
}
|
|
});
|
|
this.builder.writeTo(path);
|
|
resolve(suite);
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
};
|
|
|
|
public writeJUnit = async (path: string) => {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
const r = this.builder.writeTo(path);
|
|
resolve(r);
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
};
|
|
}
|