playwright-bdd
Version:
BDD Testing with Playwright runner
40 lines (35 loc) • 1.33 kB
text/typescript
/**
* Handles whole test run.
* See: https://github.com/cucumber/messages/blob/main/messages.md#testrunfinished
*/
import * as messages from '@cucumber/messages';
import * as pw from '@playwright/test/reporter';
import { randomUUID } from 'node:crypto';
import { toCucumberTimestamp } from './timing';
import { buildException } from './error';
export class TestRun {
public id = randomUUID();
private globalErrors: pw.TestError[] = [];
buildTestRunStarted({ startTime }: pw.FullResult) {
const testRunStarted: messages.TestRunStarted = {
id: this.id,
timestamp: toCucumberTimestamp(startTime.getTime()),
};
return { testRunStarted };
}
buildTestRunFinished({ status, startTime, duration }: pw.FullResult) {
const error = this.globalErrors[0];
const testRunFinished: messages.TestRunFinished = {
testRunStartedId: this.id,
success: status === 'passed',
timestamp: toCucumberTimestamp(startTime.getTime() + duration),
// We populate 'exception' property, although HTML reporter does not use it yet.
// See: https://github.com/cucumber/html-formatter/issues/340
exception: error ? buildException(error) : undefined,
};
return { testRunFinished };
}
registerGlobalError(error: pw.TestError) {
this.globalErrors.push(error);
}
}