import { IResult, IReporter } from "..";
function createReporter(options: createReporter.Options = {}): IReporter {
const { cssPrefix = "testnow", target = document.body } = options;
return function(results: IResult) {
const testsOk = !results.errors.length;
let outputHTML = `
`;
outputHTML += `
`;
outputHTML += `
`;
outputHTML += `
${results.name} ${
testsOk
? `PASSED`
: `FAILED`
} ${results.date}
\n`;
outputHTML += `
`;
if (results.definitionsOk) {
results.traverse({
test(result) {
if (!result.skipped)
outputHTML += `- ${
result.name
} PASSED` : `failed">FAILED`
} ${
result.elapsed
} ms
`;
},
group(result) {
if (!result.skipped) {
outputHTML += `- ${
result.name
} PASSED` : `failed">FAILED`
} ${
result.elapsed
} ms(${result.passedCount}/${
result.totalCount
})`;
outputHTML += `
`;
}
return result.skipped;
},
groupEnd(result) {
if (!result.skipped) outputHTML += "
";
}
});
}
outputHTML += `
`;
results.errors.forEach(error => {
outputHTML += `
${error.stack}
`;
});
outputHTML += `
`;
target.innerHTML = outputHTML;
return testsOk;
};
}
namespace createReporter {
export interface Options {
target?: Element;
cssPrefix?: string;
}
}
export default createReporter;