@uuv/playwright
Version:
A solution to facilitate the writing and execution of E2E tests understandable by any human being using cucumber(BDD) and playwright
83 lines (82 loc) • 3.9 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const uuv_playwright_reporter_helper_1 = __importDefault(require("./uuv-playwright-reporter-helper"));
const chalk_1 = __importDefault(require("chalk"));
const event_1 = require("@uuv/runner-commons/runner/event");
class UuvPlawrightReporter {
helper = new uuv_playwright_reporter_helper_1.default();
constructor() {
event_1.UUVListenerHelper.build();
}
onStdOut(chunk, test, result) {
console.info(chunk);
}
onStdErr(chunk, test, result) {
console.error(chalk_1.default.red(chunk));
}
onBegin(config, suite) {
const startTimestamp = this.helper.getTimestamp();
// console.log(`Starting the run with ${suite.allTests().length} tests`);
this.helper.createTestRunStartedEnvelope(config, suite, startTimestamp);
event_1.UUVEventEmitter.getInstance().emitProgressStart();
console.info(chalk_1.default.yellow(`Starting the run with ${suite.allTests().length} tests`));
}
onError(error) {
console.error(chalk_1.default.red("An error occured: "));
console.dir(error);
}
onTestBegin(test, result) {
const startTimestamp = this.helper.getTimestamp(result.startTime);
// console.log(`Starting test ${test.title} - ${test.parent.location?.file}`);
const featureFile = this.helper.getOriginalFeatureFile(test.location.file);
if (featureFile) {
this.helper.logTestBegin(test, featureFile);
this.helper.createTestCaseStartedEnvelope(test, result, featureFile, startTimestamp);
}
}
onStepBegin(test, result, step) {
const startTimestamp = this.helper.getTimestamp(result.startTime);
// console.log(`Starting step ${test.title} - ${step.title} - ${step.location?.file} - ${step.location?.line} - ${step.location?.column}`);
const featureFile = this.helper.getOriginalFeatureFile(test.location.file);
if (featureFile) {
this.helper.createTestStepStartedEnvelope(test, step, featureFile, startTimestamp);
}
}
onStepEnd(test, result, step) {
const endTimestamp = this.helper.getTimestamp(result.startTime);
// console.log(`End step ${test.title} - ${step.title} - ${result.status} - ${step.error}`);
const featureFile = this.helper.getOriginalFeatureFile(test.location.file);
if (featureFile) {
this.helper.createTestStepFinishedEnvelope(test, step, result, featureFile, endTimestamp);
}
}
onTestEnd(test, result) {
const endTimestamp = this.helper.getTimestamp();
// console.log(`Finished test ${test.title}: ${result.status}`);
const featureFile = this.helper.getOriginalFeatureFile(test.location.file);
if (featureFile) {
this.helper.logTestEnd(test, result);
this.helper.createTestCaseFinishedEnvelope(test, result, featureFile, endTimestamp);
}
}
async onEnd(result) {
// console.debug(`Finished the run: ${result.status}`);
this.helper.createTestRunFinishedEnvelope(result);
console.log(chalk_1.default.yellow("End of the tests execution\n"));
await this.helper.generateReport(
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
process.env.REPORT_TYPE);
if (result.status === "passed") {
console.log(chalk_1.default.green("Tests executed successfully"));
}
else {
console.error(chalk_1.default.red(`Tests executed with status: ${result.status}`));
}
event_1.UUVEventEmitter.getInstance().emitProgressFinish();
}
}
exports.default = UuvPlawrightReporter;