UNPKG

@serenity-js/cucumber

Version:

Serenity/JS test runner adapter for seamless integration with any version of Cucumber.js, facilitating BDD-style test automation and leveraging Serenity/JS reporting capabilities

48 lines (42 loc) 1.59 kB
import type { Serenity } from '@serenity-js/core'; import { ConfigurationError } from '@serenity-js/core'; import type { ModuleLoader, Path } from '@serenity-js/core/lib/io'; import type { FeatureFileMap} from './gherkin'; import { Cache, FeatureFileLoader, FeatureFileMapper, FeatureFileParser } from './gherkin'; import { Notifier, ResultMapper } from './notifier'; import Gherkin = require('gherkin'); /** * Creates a listener for Cucumber.js 0.x-6.x * * @param serenity * @param moduleLoader */ export function createListener(serenity: Serenity, moduleLoader: ModuleLoader): any { const version = moduleLoader.versionOf('cucumber'); try { const cucumber = moduleLoader.require('cucumber'), notifier = new Notifier(serenity), mapper = new FeatureFileMapper(), resultMapper = new ResultMapper(serenity), cache = new Cache<Path, FeatureFileMap>(), loader = new FeatureFileLoader( new FeatureFileParser(new Gherkin.Parser()), mapper, cache, ); // eslint-disable-next-line @typescript-eslint/no-var-requires return require(`./cucumber-${ version.major() }`)({ serenity, notifier, mapper, resultMapper, cache, loader, cucumber, }); } catch (error) { throw new ConfigurationError(`Cucumber version ${ version.toString() } is not supported yet`, error); } }