playwright-bdd
Version:
BDD Testing with Playwright runner
27 lines (23 loc) • 800 B
text/typescript
/**
* Creating Cucumber errors from Playwright errors.
*/
import * as pw from '@playwright/test/reporter';
import * as messages from '@cucumber/messages';
import { stripAnsiEscapes } from '../../../utils/stripAnsiEscapes';
export function buildErrorMessage(error: pw.TestError) {
return stripAnsiEscapes([error.message, error.snippet].filter(Boolean).join('\n'));
}
export function buildException(error: pw.TestError): messages.Exception {
return {
type: 'Error',
message: buildErrorMessage(error),
// todo: extract only trace?
stackTrace: error.stack ? extractStackTrace(stripAnsiEscapes(error.stack)) : undefined,
};
}
function extractStackTrace(errorStack: string) {
return errorStack
.split('\n')
.filter((line) => line.match(/^\s+at .*/))
.join('\n');
}