playwright-bdd
Version:
BDD Testing with Playwright runner
34 lines (29 loc) • 1 kB
text/typescript
/**
* Returns reference to a messagesBuilder singleton instance.
* We pass onTestEnd and onEnd calls only for the first reference (reporter),
* otherwise all events will be duplicated.
*/
import * as pw from '@playwright/test/reporter';
import { MessagesBuilder } from '.';
export type MessagesBuilderRef = ReturnType<typeof getMessagesBuilderRef>;
let instance: MessagesBuilder;
let referenceCount = 0;
export function getMessagesBuilderRef() {
if (!instance) instance = new MessagesBuilder();
const isFirstRef = ++referenceCount === 1;
return {
builder: instance,
onBegin(config: pw.FullConfig) {
if (isFirstRef) this.builder.onBegin(config);
},
onTestEnd(test: pw.TestCase, result: pw.TestResult) {
if (isFirstRef) this.builder.onTestEnd(test, result);
},
onEnd(fullResult: pw.FullResult) {
if (isFirstRef) this.builder.onEnd(fullResult);
},
onError(error: pw.TestError) {
if (isFirstRef) this.builder.onError(error);
},
};
}