diff --git a/compatibility/cck_spec.ts b/compatibility/cck_spec.ts index d336cefaa..e07fcfcf5 100644 --- a/compatibility/cck_spec.ts +++ b/compatibility/cck_spec.ts @@ -1,7 +1,7 @@ import fs from 'node:fs' import path from 'node:path' -import { PassThrough, pipeline, Writable } from 'node:stream' -import util from 'node:util' +import { PassThrough, Writable } from 'node:stream' +import { pipeline } from 'node:stream/promises' import { describe, it } from 'mocha' import { config, expect, use } from 'chai' import chaiExclude from 'chai-exclude' @@ -12,7 +12,6 @@ import { Envelope } from '@cucumber/messages' import { ignorableKeys } from '../features/support/formatter_output_helpers' import { runCucumber, IRunConfiguration } from '../src/api' -const asyncPipeline = util.promisify(pipeline) const PROJECT_PATH = path.join(__dirname, '..') const CCK_FEATURES_PATH = 'node_modules/@cucumber/compatibility-kit/features' const CCK_IMPLEMENTATIONS_PATH = 'compatibility/features' @@ -21,35 +20,36 @@ config.truncateThreshold = 100 use(chaiExclude) describe('Cucumber Compatibility Kit', () => { - const ndjsonFiles = glob.sync(`${CCK_FEATURES_PATH}/**/*.ndjson`) - ndjsonFiles.forEach((fixturePath) => { - const match = /^.+[/\\](.+)(\.feature(?:\.md)?)\.ndjson$/.exec(fixturePath) - const suiteName = match[1] - const extension = match[2] - it(`passes the cck suite for '${suiteName}'`, async () => { + const directories = glob.sync(`${CCK_FEATURES_PATH}/*`, { nodir: false }) + + for (const directory of directories) { + const suite = path.basename(directory) + + it(suite, async () => { const actualMessages: Envelope[] = [] const stdout = new PassThrough() const stderr = new PassThrough() const runConfiguration: IRunConfiguration = { sources: { defaultDialect: 'en', - paths: [`${CCK_FEATURES_PATH}/${suiteName}/${suiteName}${extension}`], + paths: [ + `${CCK_FEATURES_PATH}/${suite}/*.feature`, + `${CCK_FEATURES_PATH}/${suite}/*.feature.md`, + ], names: [], tagExpression: '', order: 'defined', }, support: { requireModules: ['ts-node/register'], - requirePaths: [ - `${CCK_IMPLEMENTATIONS_PATH}/${suiteName}/${suiteName}.ts`, - ], + requirePaths: [`${CCK_IMPLEMENTATIONS_PATH}/${suite}/*.ts`], }, runtime: { dryRun: false, failFast: false, filterStacktraces: true, parallel: 0, - retry: suiteName === 'retry' ? 2 : 0, + retry: suite === 'retry' ? 2 : 0, retryTagFilter: '', strict: true, worldParameters: {}, @@ -74,8 +74,10 @@ describe('Cucumber Compatibility Kit', () => { stderr.end() const expectedMessages: messages.Envelope[] = [] - await asyncPipeline( - fs.createReadStream(fixturePath, { encoding: 'utf-8' }), + await pipeline( + fs.createReadStream(path.join(directory, suite + '.ndjson'), { + encoding: 'utf-8', + }), new messageStreams.NdjsonToMessageStream(), new Writable({ objectMode: true, @@ -90,5 +92,5 @@ describe('Cucumber Compatibility Kit', () => { .excludingEvery(ignorableKeys) .to.deep.eq(expectedMessages) }) - }) + } }) diff --git a/package-lock.json b/package-lock.json index 034393369..0950f19ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "cucumber-js": "bin/cucumber.js" }, "devDependencies": { - "@cucumber/compatibility-kit": "19.0.0", + "@cucumber/compatibility-kit": "^20.0.0", "@cucumber/pretty-formatter": "^2.0.0", "@cucumber/query": "13.5.0", "@eslint/compat": "^1.3.0", @@ -441,9 +441,9 @@ "integrity": "sha512-/+ooDMPtKSmvcPMDYnMZt4LuoipfFfHaYspStI4shqw8FyKcfQAmekz6G+QKWjQQrvM+7Hkljwx58MEwPCwwzg==" }, "node_modules/@cucumber/compatibility-kit": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/compatibility-kit/-/compatibility-kit-19.0.0.tgz", - "integrity": "sha512-wGFDDHo5vlkYo5YOCvfU0sjXjLizK2jKFojymrJB8kZo1wvcIDnWHriyizbUyOw1Aey2JvN9gI2mYcjwBpegVg==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/compatibility-kit/-/compatibility-kit-20.0.0.tgz", + "integrity": "sha512-hrlelLdOP7ojqSDxbuzBLSfrwbV4js0ew2FlOqa2kTf/dOLrynhAvtPyDw0001xNBhqXr5YtGZIas/2WWkP5vA==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index aa90d178a..2d98c1a0b 100644 --- a/package.json +++ b/package.json @@ -258,7 +258,7 @@ "yup": "1.6.1" }, "devDependencies": { - "@cucumber/compatibility-kit": "19.0.0", + "@cucumber/compatibility-kit": "^20.0.0", "@cucumber/pretty-formatter": "^2.0.0", "@cucumber/query": "13.5.0", "@eslint/compat": "^1.3.0",