@cucumber/cucumber 9.5.1 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/console_logger.d.ts +1 -1
- package/lib/api/console_logger.js +5 -2
- package/lib/api/console_logger.js.map +1 -1
- package/lib/api/convert_configuration.d.ts +2 -1
- package/lib/api/convert_configuration.js +6 -6
- package/lib/api/convert_configuration.js.map +1 -1
- package/lib/api/formatters.d.ts +2 -2
- package/lib/api/formatters.js +6 -6
- package/lib/api/formatters.js.map +1 -1
- package/lib/api/gherkin.d.ts +1 -1
- package/lib/api/gherkin.js +1 -1
- package/lib/api/gherkin.js.map +1 -1
- package/lib/api/load_configuration.js +2 -3
- package/lib/api/load_configuration.js.map +1 -1
- package/lib/api/load_sources.js +1 -1
- package/lib/api/load_sources.js.map +1 -1
- package/lib/api/load_support.d.ts +1 -1
- package/lib/api/load_support.js.map +1 -1
- package/lib/api/paths.d.ts +1 -1
- package/lib/api/paths.js +18 -16
- package/lib/api/paths.js.map +1 -1
- package/lib/api/plugins.d.ts +1 -1
- package/lib/api/plugins.js.map +1 -1
- package/lib/api/run_cucumber.js +2 -2
- package/lib/api/run_cucumber.js.map +1 -1
- package/lib/api/runtime.d.ts +3 -3
- package/lib/api/runtime.js.map +1 -1
- package/lib/api/support.js +2 -4
- package/lib/api/support.js.map +1 -1
- package/lib/api/test_helpers.js +8 -8
- package/lib/api/test_helpers.js.map +1 -1
- package/lib/api/types.d.ts +1 -1
- package/lib/api/types.js.map +1 -1
- package/lib/cli/helpers.d.ts +4 -4
- package/lib/cli/helpers.js +12 -7
- package/lib/cli/helpers.js.map +1 -1
- package/lib/cli/index.js +6 -1
- package/lib/cli/index.js.map +1 -1
- package/lib/cli/run.js +1 -1
- package/lib/cli/run.js.map +1 -1
- package/lib/cli/validate_node_engine_version.js +4 -4
- package/lib/cli/validate_node_engine_version.js.map +1 -1
- package/lib/configuration/from_file.d.ts +1 -1
- package/lib/configuration/from_file.js +41 -21
- package/lib/configuration/from_file.js.map +1 -1
- package/lib/configuration/index.d.ts +1 -1
- package/lib/configuration/index.js +1 -1
- package/lib/configuration/index.js.map +1 -1
- package/lib/configuration/locate_file.js +2 -2
- package/lib/configuration/locate_file.js.map +1 -1
- package/lib/configuration/merge_configurations.js.map +1 -1
- package/lib/configuration/split_format_descriptor.d.ts +2 -0
- package/lib/configuration/split_format_descriptor.js +76 -0
- package/lib/configuration/split_format_descriptor.js.map +1 -0
- package/lib/configuration/validate_configuration.d.ts +1 -1
- package/lib/configuration/validate_configuration.js +3 -0
- package/lib/configuration/validate_configuration.js.map +1 -1
- package/lib/filter_stack_trace.js +4 -4
- package/lib/filter_stack_trace.js.map +1 -1
- package/lib/formatter/builder.d.ts +5 -5
- package/lib/formatter/builder.js +11 -24
- package/lib/formatter/builder.js.map +1 -1
- package/lib/formatter/get_color_fns.d.ts +1 -1
- package/lib/formatter/get_color_fns.js.map +1 -1
- package/lib/formatter/helpers/event_data_collector.d.ts +1 -1
- package/lib/formatter/helpers/event_data_collector.js +5 -5
- package/lib/formatter/helpers/event_data_collector.js.map +1 -1
- package/lib/formatter/helpers/issue_helpers.js.map +1 -1
- package/lib/formatter/helpers/location_helpers.js +2 -2
- package/lib/formatter/helpers/location_helpers.js.map +1 -1
- package/lib/formatter/helpers/pickle_parser.js.map +1 -1
- package/lib/formatter/helpers/step_argument_formatter.js.map +1 -1
- package/lib/formatter/helpers/summary_helpers.d.ts +1 -1
- package/lib/formatter/helpers/summary_helpers.js +1 -1
- package/lib/formatter/helpers/summary_helpers.js.map +1 -1
- package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +1 -1
- package/lib/formatter/helpers/test_case_attempt_formatter.js +1 -1
- package/lib/formatter/helpers/test_case_attempt_formatter.js.map +1 -1
- package/lib/formatter/helpers/test_case_attempt_parser.d.ts +1 -1
- package/lib/formatter/helpers/test_case_attempt_parser.js +3 -3
- package/lib/formatter/helpers/test_case_attempt_parser.js.map +1 -1
- package/lib/formatter/helpers/usage_helpers/index.js +1 -1
- package/lib/formatter/helpers/usage_helpers/index.js.map +1 -1
- package/lib/formatter/html_formatter.js +6 -5
- package/lib/formatter/html_formatter.js.map +1 -1
- package/lib/formatter/index.d.ts +3 -3
- package/lib/formatter/index.js +10 -0
- package/lib/formatter/index.js.map +1 -1
- package/lib/formatter/json_formatter.d.ts +1 -1
- package/lib/formatter/json_formatter.js +10 -8
- package/lib/formatter/json_formatter.js.map +1 -1
- package/lib/formatter/junit_formatter.js +11 -12
- package/lib/formatter/junit_formatter.js.map +1 -1
- package/lib/formatter/message_formatter.js +1 -1
- package/lib/formatter/message_formatter.js.map +1 -1
- package/lib/formatter/progress_bar_formatter.d.ts +1 -1
- package/lib/formatter/progress_bar_formatter.js +8 -4
- package/lib/formatter/progress_bar_formatter.js.map +1 -1
- package/lib/formatter/progress_formatter.d.ts +1 -1
- package/lib/formatter/progress_formatter.js +3 -3
- package/lib/formatter/progress_formatter.js.map +1 -1
- package/lib/formatter/rerun_formatter.js +5 -4
- package/lib/formatter/rerun_formatter.js.map +1 -1
- package/lib/formatter/snippets_formatter.js +4 -4
- package/lib/formatter/snippets_formatter.js.map +1 -1
- package/lib/formatter/step_definition_snippet_builder/index.d.ts +2 -2
- package/lib/formatter/step_definition_snippet_builder/index.js +3 -1
- package/lib/formatter/step_definition_snippet_builder/index.js.map +1 -1
- package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +1 -0
- package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js.map +1 -1
- package/lib/formatter/summary_formatter.d.ts +1 -1
- package/lib/formatter/summary_formatter.js +4 -4
- package/lib/formatter/summary_formatter.js.map +1 -1
- package/lib/formatter/usage_formatter.js +4 -4
- package/lib/formatter/usage_formatter.js.map +1 -1
- package/lib/formatter/usage_json_formatter.js +2 -2
- package/lib/formatter/usage_json_formatter.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +6 -6
- package/lib/index.js.map +1 -1
- package/lib/models/data_table.js +1 -0
- package/lib/models/data_table.js.map +1 -1
- package/lib/models/definition.d.ts +1 -1
- package/lib/models/definition.js +6 -0
- package/lib/models/definition.js.map +1 -1
- package/lib/models/step_definition.d.ts +1 -1
- package/lib/models/step_definition.js +5 -2
- package/lib/models/step_definition.js.map +1 -1
- package/lib/models/test_case_hook_definition.d.ts +1 -1
- package/lib/models/test_case_hook_definition.js +3 -0
- package/lib/models/test_case_hook_definition.js.map +1 -1
- package/lib/models/test_step_hook_definition.d.ts +1 -1
- package/lib/models/test_step_hook_definition.js +2 -0
- package/lib/models/test_step_hook_definition.js.map +1 -1
- package/lib/pickle_filter.js +11 -5
- package/lib/pickle_filter.js.map +1 -1
- package/lib/plugin/plugin_manager.d.ts +1 -1
- package/lib/plugin/plugin_manager.js +3 -2
- package/lib/plugin/plugin_manager.js.map +1 -1
- package/lib/plugin/types.d.ts +1 -1
- package/lib/plugin/types.js.map +1 -1
- package/lib/publish/http_stream.d.ts +2 -2
- package/lib/publish/http_stream.js +14 -9
- package/lib/publish/http_stream.js.map +1 -1
- package/lib/publish/publish_plugin.js +3 -3
- package/lib/publish/publish_plugin.js.map +1 -1
- package/lib/runtime/assemble_test_cases.d.ts +1 -1
- package/lib/runtime/assemble_test_cases.js.map +1 -1
- package/lib/runtime/attachment_manager/index.d.ts +1 -1
- package/lib/runtime/attachment_manager/index.js +1 -0
- package/lib/runtime/attachment_manager/index.js.map +1 -1
- package/lib/runtime/format_error.js +1 -1
- package/lib/runtime/format_error.js.map +1 -1
- package/lib/runtime/helpers.d.ts +1 -1
- package/lib/runtime/helpers.js +2 -2
- package/lib/runtime/helpers.js.map +1 -1
- package/lib/runtime/index.d.ts +1 -1
- package/lib/runtime/index.js +9 -0
- package/lib/runtime/index.js.map +1 -1
- package/lib/runtime/parallel/coordinator.d.ts +4 -4
- package/lib/runtime/parallel/coordinator.js +24 -5
- package/lib/runtime/parallel/coordinator.js.map +1 -1
- package/lib/runtime/parallel/run_worker.js +1 -1
- package/lib/runtime/parallel/run_worker.js.map +1 -1
- package/lib/runtime/parallel/worker.js +14 -6
- package/lib/runtime/parallel/worker.js.map +1 -1
- package/lib/runtime/run_test_run_hooks.js +1 -1
- package/lib/runtime/run_test_run_hooks.js.map +1 -1
- package/lib/runtime/step_runner.js +2 -2
- package/lib/runtime/step_runner.js.map +1 -1
- package/lib/runtime/stopwatch.js +2 -0
- package/lib/runtime/stopwatch.js.map +1 -1
- package/lib/runtime/test_case_runner.d.ts +1 -1
- package/lib/runtime/test_case_runner.js +19 -3
- package/lib/runtime/test_case_runner.js.map +1 -1
- package/lib/step_arguments.js +2 -2
- package/lib/step_arguments.js.map +1 -1
- package/lib/support_code_library_builder/get_definition_line_and_uri.js +2 -2
- package/lib/support_code_library_builder/get_definition_line_and_uri.js.map +1 -1
- package/lib/support_code_library_builder/index.d.ts +1 -1
- package/lib/support_code_library_builder/index.js +24 -8
- package/lib/support_code_library_builder/index.js.map +1 -1
- package/lib/support_code_library_builder/sourced_parameter_type_registry.js +1 -4
- package/lib/support_code_library_builder/sourced_parameter_type_registry.js.map +1 -1
- package/lib/support_code_library_builder/world.js +3 -0
- package/lib/support_code_library_builder/world.js.map +1 -1
- package/lib/time.d.ts +1 -1
- package/lib/time.js +2 -2
- package/lib/time.js.map +1 -1
- package/lib/user_code_runner.js +3 -3
- package/lib/user_code_runner.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +16 -14
- package/lib/configuration/option_splitter.d.ts +0 -3
- package/lib/configuration/option_splitter.js +0 -23
- package/lib/configuration/option_splitter.js.map +0 -1
- package/lib/formatter/fixtures/typescript.d.ts +0 -2
- package/lib/formatter/fixtures/typescript.js +0 -6
- package/lib/formatter/fixtures/typescript.js.map +0 -1
- package/lib/importer.js +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress_bar_formatter.js","sourceRoot":"","sources":["../../src/formatter/progress_bar_formatter.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"progress_bar_formatter.js","sourceRoot":"","sources":["../../src/formatter/progress_bar_formatter.ts"],"names":[],"mappings":"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","sourcesContent":["import { WriteStream as TtyWriteStream } from 'node:tty'\nimport ProgressBar from 'progress'\nimport * as messages from '@cucumber/messages'\nimport { doesHaveValue, valueOrDefault } from '../value_checker'\nimport { durationBetweenTimestamps } from '../time'\nimport { formatUndefinedParameterType } from './helpers/issue_helpers'\nimport { formatIssue, formatSummary, isIssue } from './helpers'\nimport Formatter, { IFormatterOptions } from './'\n\n// Inspired by https://github.com/thekompanee/fuubar and https://github.com/martinciu/fuubar-cucumber\nexport default class ProgressBarFormatter extends Formatter {\n private numberOfSteps: number\n private testRunStarted: messages.TestRunStarted\n private issueCount: number\n public progressBar: ProgressBar\n public static readonly documentation: string =\n 'Similar to the Progress Formatter, but provides a real-time updating progress bar based on the total number of steps to be executed in the test run'\n\n constructor(options: IFormatterOptions) {\n super(options)\n options.eventBroadcaster.on('envelope', this.parseEnvelope.bind(this))\n this.numberOfSteps = 0\n this.issueCount = 0\n }\n\n incrementStepCount(pickleId: string): void {\n const pickle = this.eventDataCollector.getPickle(pickleId)\n this.numberOfSteps += pickle.steps.length\n }\n\n initializeProgressBar(): void {\n if (doesHaveValue(this.progressBar)) {\n return\n }\n this.progressBar = new ProgressBar(':current/:total steps [:bar] ', {\n clear: true,\n incomplete: ' ',\n stream: this.stream,\n total: this.numberOfSteps,\n width: valueOrDefault((this.stream as TtyWriteStream).columns, 80),\n })\n }\n\n logProgress({\n testStepId,\n testCaseStartedId,\n }: messages.TestStepFinished): void {\n const { testCase } =\n this.eventDataCollector.getTestCaseAttempt(testCaseStartedId)\n const testStep = testCase.testSteps.find((s) => s.id === testStepId)\n if (doesHaveValue(testStep.pickleStepId)) {\n this.progressBar.tick()\n }\n }\n\n logUndefinedParametertype(\n parameterType: messages.UndefinedParameterType\n ): void {\n this.log(\n `Undefined parameter type: ${formatUndefinedParameterType(\n parameterType\n )}\\n`\n )\n }\n\n logErrorIfNeeded(testCaseFinished: messages.TestCaseFinished): void {\n const { worstTestStepResult } = this.eventDataCollector.getTestCaseAttempt(\n testCaseFinished.testCaseStartedId\n )\n if (isIssue(worstTestStepResult)) {\n this.issueCount += 1\n const testCaseAttempt = this.eventDataCollector.getTestCaseAttempt(\n testCaseFinished.testCaseStartedId\n )\n this.progressBar.interrupt(\n formatIssue({\n colorFns: this.colorFns,\n number: this.issueCount,\n snippetBuilder: this.snippetBuilder,\n supportCodeLibrary: this.supportCodeLibrary,\n testCaseAttempt,\n printAttachments: this.printAttachments,\n })\n )\n if (testCaseFinished.willBeRetried) {\n const stepsToRetry = testCaseAttempt.pickle.steps.length\n this.progressBar.tick(-stepsToRetry)\n }\n }\n }\n\n logSummary(testRunFinished: messages.TestRunFinished): void {\n const testRunDuration = durationBetweenTimestamps(\n this.testRunStarted.timestamp,\n testRunFinished.timestamp\n )\n this.log(\n formatSummary({\n colorFns: this.colorFns,\n testCaseAttempts: this.eventDataCollector.getTestCaseAttempts(),\n testRunDuration,\n })\n )\n }\n\n parseEnvelope(envelope: messages.Envelope): void {\n if (doesHaveValue(envelope.undefinedParameterType)) {\n this.logUndefinedParametertype(envelope.undefinedParameterType)\n } else if (doesHaveValue(envelope.testCase)) {\n this.incrementStepCount(envelope.testCase.pickleId)\n } else if (doesHaveValue(envelope.testStepStarted)) {\n this.initializeProgressBar()\n } else if (doesHaveValue(envelope.testStepFinished)) {\n this.logProgress(envelope.testStepFinished)\n } else if (doesHaveValue(envelope.testCaseFinished)) {\n this.logErrorIfNeeded(envelope.testCaseFinished)\n } else if (doesHaveValue(envelope.testRunStarted)) {\n this.testRunStarted = envelope.testRunStarted\n } else if (doesHaveValue(envelope.testRunFinished)) {\n this.logSummary(envelope.testRunFinished)\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import * as messages from '@cucumber/messages';
|
|
1
2
|
import SummaryFormatter from './summary_formatter';
|
|
2
3
|
import { IFormatterOptions } from './index';
|
|
3
|
-
import * as messages from '@cucumber/messages';
|
|
4
4
|
import ITestStepFinished = messages.TestStepFinished;
|
|
5
5
|
export default class ProgressFormatter extends SummaryFormatter {
|
|
6
6
|
static readonly documentation: string;
|
|
@@ -26,9 +26,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const summary_formatter_1 = __importDefault(require("./summary_formatter"));
|
|
30
|
-
const value_checker_1 = require("../value_checker");
|
|
31
29
|
const messages = __importStar(require("@cucumber/messages"));
|
|
30
|
+
const value_checker_1 = require("../value_checker");
|
|
31
|
+
const summary_formatter_1 = __importDefault(require("./summary_formatter"));
|
|
32
32
|
const STATUS_CHARACTER_MAPPING = new Map([
|
|
33
33
|
[messages.TestStepResultStatus.AMBIGUOUS, 'A'],
|
|
34
34
|
[messages.TestStepResultStatus.FAILED, 'F'],
|
|
@@ -38,6 +38,7 @@ const STATUS_CHARACTER_MAPPING = new Map([
|
|
|
38
38
|
[messages.TestStepResultStatus.UNDEFINED, 'U'],
|
|
39
39
|
]);
|
|
40
40
|
class ProgressFormatter extends summary_formatter_1.default {
|
|
41
|
+
static documentation = 'Prints one character per scenario.';
|
|
41
42
|
constructor(options) {
|
|
42
43
|
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
43
44
|
if ((0, value_checker_1.doesHaveValue)(envelope.testRunFinished)) {
|
|
@@ -55,5 +56,4 @@ class ProgressFormatter extends summary_formatter_1.default {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
exports.default = ProgressFormatter;
|
|
58
|
-
ProgressFormatter.documentation = 'Prints one character per scenario.';
|
|
59
59
|
//# sourceMappingURL=progress_formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress_formatter.js","sourceRoot":"","sources":["../../src/formatter/progress_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"progress_formatter.js","sourceRoot":"","sources":["../../src/formatter/progress_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAC9C,oDAAgD;AAChD,4EAAkD;AAKlD,MAAM,wBAAwB,GAC5B,IAAI,GAAG,CAAC;IACN,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC;IAC9C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC;IAC5C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC;IAC5C,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC;CAC/C,CAAC,CAAA;AAEJ,MAAqB,iBAAkB,SAAQ,2BAAgB;IACtD,MAAM,CAAU,aAAa,GAClC,oCAAoC,CAAA;IAEtC,YAAY,OAA0B;QACpC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAmB,EAAE,EAAE;YAC9D,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;aACjB;iBAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;aAC5C;QACH,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,OAAO,CAAC,CAAA;IAChB,CAAC;IAED,WAAW,CAAC,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,EAAqB;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAC/C,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CACrC,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrB,CAAC;;AApBH,oCAqBC","sourcesContent":["import * as messages from '@cucumber/messages'\nimport { doesHaveValue } from '../value_checker'\nimport SummaryFormatter from './summary_formatter'\nimport { IFormatterOptions } from './index'\nimport IEnvelope = messages.Envelope\nimport ITestStepFinished = messages.TestStepFinished\n\nconst STATUS_CHARACTER_MAPPING: Map<messages.TestStepResultStatus, string> =\n new Map([\n [messages.TestStepResultStatus.AMBIGUOUS, 'A'],\n [messages.TestStepResultStatus.FAILED, 'F'],\n [messages.TestStepResultStatus.PASSED, '.'],\n [messages.TestStepResultStatus.PENDING, 'P'],\n [messages.TestStepResultStatus.SKIPPED, '-'],\n [messages.TestStepResultStatus.UNDEFINED, 'U'],\n ])\n\nexport default class ProgressFormatter extends SummaryFormatter {\n public static readonly documentation: string =\n 'Prints one character per scenario.'\n\n constructor(options: IFormatterOptions) {\n options.eventBroadcaster.on('envelope', (envelope: IEnvelope) => {\n if (doesHaveValue(envelope.testRunFinished)) {\n this.log('\\n\\n')\n } else if (doesHaveValue(envelope.testStepFinished)) {\n this.logProgress(envelope.testStepFinished)\n }\n })\n super(options)\n }\n\n logProgress({ testStepResult: { status } }: ITestStepFinished): void {\n const character = this.colorFns.forStatus(status)(\n STATUS_CHARACTER_MAPPING.get(status)\n )\n this.log(character)\n }\n}\n"]}
|
|
@@ -26,15 +26,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const _1 = __importDefault(require("./"));
|
|
30
|
-
const gherkin_document_parser_1 = require("./helpers/gherkin_document_parser");
|
|
31
|
-
const value_checker_1 = require("../value_checker");
|
|
32
29
|
const messages = __importStar(require("@cucumber/messages"));
|
|
30
|
+
const value_checker_1 = require("../value_checker");
|
|
31
|
+
const gherkin_document_parser_1 = require("./helpers/gherkin_document_parser");
|
|
32
|
+
const _1 = __importDefault(require("./"));
|
|
33
33
|
const DEFAULT_SEPARATOR = '\n';
|
|
34
34
|
function isFailedAttempt(worstTestStepResult) {
|
|
35
35
|
return worstTestStepResult.status !== messages.TestStepResultStatus.PASSED;
|
|
36
36
|
}
|
|
37
37
|
class RerunFormatter extends _1.default {
|
|
38
|
+
separator;
|
|
39
|
+
static documentation = 'Prints failing files with line numbers.';
|
|
38
40
|
constructor(options) {
|
|
39
41
|
super(options);
|
|
40
42
|
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
@@ -76,5 +78,4 @@ class RerunFormatter extends _1.default {
|
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
exports.default = RerunFormatter;
|
|
79
|
-
RerunFormatter.documentation = 'Prints failing files with line numbers.';
|
|
80
81
|
//# sourceMappingURL=rerun_formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rerun_formatter.js","sourceRoot":"","sources":["../../src/formatter/rerun_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"rerun_formatter.js","sourceRoot":"","sources":["../../src/formatter/rerun_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAC9C,oDAIyB;AACzB,+EAAiF;AACjF,0CAAiD;AAEjD,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAM9B,SAAS,eAAe,CAAC,mBAA4C;IACnE,OAAO,mBAAmB,CAAC,MAAM,KAAK,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAA;AAC5E,CAAC;AAED,MAAqB,cAAe,SAAQ,UAAS;IAChC,SAAS,CAAQ;IAC7B,MAAM,CAAU,aAAa,GAClC,yCAAyC,CAAA;IAE3C,YAAY,OAA0B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAA2B,EAAE,EAAE;YACtE,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC3C,IAAI,CAAC,kBAAkB,EAAE,CAAA;aAC1B;QACH,CAAC,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,IAAA,8BAAc,EAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACxE,IAAI,CAAC,SAAS,GAAG,IAAA,8BAAc,EAAC,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC5E,CAAC;IAED,aAAa;QACX,MAAM,OAAO,GAAkB,EAAE,CAAA;QACjC,IAAI,CAAC,kBAAkB;aACpB,mBAAmB,EAAE;aACrB,OAAO,CACN,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,EAAE,EAAE;YAClE,IAAI,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA;gBAC9B,MAAM,IAAI,GACR,IAAA,uDAA6B,EAAC,eAAe,CAAC,CAC5C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAChD,CAAC,IAAI,CAAA;gBACR,IAAI,IAAA,gCAAgB,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE;oBAC1C,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA;iBAC1B;gBACD,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAChC;QACH,CAAC,CACF,CAAA;QAEH,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,qBAAqB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aACxB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YAC1B,OAAO,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAED,kBAAkB;QAChB,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QACpD,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC3B,CAAC;;AArDH,iCAsDC","sourcesContent":["import * as messages from '@cucumber/messages'\nimport {\n doesHaveValue,\n doesNotHaveValue,\n valueOrDefault,\n} from '../value_checker'\nimport { getGherkinScenarioLocationMap } from './helpers/gherkin_document_parser'\nimport Formatter, { IFormatterOptions } from './'\n\nconst DEFAULT_SEPARATOR = '\\n'\n\ninterface UriToLinesMap {\n [uri: string]: number[]\n}\n\nfunction isFailedAttempt(worstTestStepResult: messages.TestStepResult) {\n return worstTestStepResult.status !== messages.TestStepResultStatus.PASSED\n}\n\nexport default class RerunFormatter extends Formatter {\n protected readonly separator: string\n public static readonly documentation: string =\n 'Prints failing files with line numbers.'\n\n constructor(options: IFormatterOptions) {\n super(options)\n options.eventBroadcaster.on('envelope', (envelope: messages.Envelope) => {\n if (doesHaveValue(envelope.testRunFinished)) {\n this.logFailedTestCases()\n }\n })\n const rerunOptions = valueOrDefault(options.parsedArgvOptions.rerun, {})\n this.separator = valueOrDefault(rerunOptions.separator, DEFAULT_SEPARATOR)\n }\n\n getFailureMap(): UriToLinesMap {\n const mapping: UriToLinesMap = {}\n this.eventDataCollector\n .getTestCaseAttempts()\n .forEach(\n ({ gherkinDocument, pickle, worstTestStepResult, willBeRetried }) => {\n if (isFailedAttempt(worstTestStepResult) && !willBeRetried) {\n const relativeUri = pickle.uri\n const line =\n getGherkinScenarioLocationMap(gherkinDocument)[\n pickle.astNodeIds[pickle.astNodeIds.length - 1]\n ].line\n if (doesNotHaveValue(mapping[relativeUri])) {\n mapping[relativeUri] = []\n }\n mapping[relativeUri].push(line)\n }\n }\n )\n\n return mapping\n }\n\n formatFailedTestCases(): string {\n const mapping = this.getFailureMap()\n\n return Object.keys(mapping)\n .map((uri) => {\n const lines = mapping[uri]\n return `${uri}:${lines.join(':')}`\n })\n .join(this.separator)\n }\n\n logFailedTestCases(): void {\n const failedTestCases = this.formatFailedTestCases()\n this.log(failedTestCases)\n }\n}\n"]}
|
|
@@ -26,11 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const _1 = __importDefault(require("./"));
|
|
30
|
-
const helpers_1 = require("./helpers");
|
|
31
|
-
const value_checker_1 = require("../value_checker");
|
|
32
29
|
const messages = __importStar(require("@cucumber/messages"));
|
|
30
|
+
const value_checker_1 = require("../value_checker");
|
|
31
|
+
const helpers_1 = require("./helpers");
|
|
32
|
+
const _1 = __importDefault(require("./"));
|
|
33
33
|
class SnippetsFormatter extends _1.default {
|
|
34
|
+
static documentation = "The Snippets Formatter doesn't output anything regarding the test run; it just prints snippets to implement any undefined steps";
|
|
34
35
|
constructor(options) {
|
|
35
36
|
super(options);
|
|
36
37
|
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
@@ -57,5 +58,4 @@ class SnippetsFormatter extends _1.default {
|
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
exports.default = SnippetsFormatter;
|
|
60
|
-
SnippetsFormatter.documentation = "The Snippets Formatter doesn't output anything regarding the test run; it just prints snippets to implement any undefined steps";
|
|
61
61
|
//# sourceMappingURL=snippets_formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippets_formatter.js","sourceRoot":"","sources":["../../src/formatter/snippets_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"snippets_formatter.js","sourceRoot":"","sources":["../../src/formatter/snippets_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAC9C,oDAAgD;AAChD,uCAAgD;AAChD,0CAAiD;AAGjD,MAAqB,iBAAkB,SAAQ,UAAS;IAC/C,MAAM,CAAU,aAAa,GAClC,iIAAiI,CAAA;IAEnI,YAAY,OAA0B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAmB,EAAE,EAAE;YAC9D,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC3C,IAAI,CAAC,WAAW,EAAE,CAAA;aACnB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,WAAW;QACT,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;YACxE,MAAM,MAAM,GAAG,IAAA,8BAAoB,EAAC;gBAClC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,eAAe;aAChB,CAAC,CAAA;YACF,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACpC,IACE,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAClE;oBACA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;iBAChC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjC,CAAC;;AA9BH,oCA+BC","sourcesContent":["import * as messages from '@cucumber/messages'\nimport { doesHaveValue } from '../value_checker'\nimport { parseTestCaseAttempt } from './helpers'\nimport Formatter, { IFormatterOptions } from './'\nimport IEnvelope = messages.Envelope\n\nexport default class SnippetsFormatter extends Formatter {\n public static readonly documentation: string =\n \"The Snippets Formatter doesn't output anything regarding the test run; it just prints snippets to implement any undefined steps\"\n\n constructor(options: IFormatterOptions) {\n super(options)\n options.eventBroadcaster.on('envelope', (envelope: IEnvelope) => {\n if (doesHaveValue(envelope.testRunFinished)) {\n this.logSnippets()\n }\n })\n }\n\n logSnippets(): void {\n const snippets: string[] = []\n this.eventDataCollector.getTestCaseAttempts().forEach((testCaseAttempt) => {\n const parsed = parseTestCaseAttempt({\n snippetBuilder: this.snippetBuilder,\n supportCodeLibrary: this.supportCodeLibrary,\n testCaseAttempt,\n })\n parsed.testSteps.forEach((testStep) => {\n if (\n testStep.result.status === messages.TestStepResultStatus.UNDEFINED\n ) {\n snippets.push(testStep.snippet)\n }\n })\n })\n this.log(snippets.join('\\n\\n'))\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { KeywordType } from '../helpers';
|
|
2
|
-
import { ISnippetSnytax } from './snippet_syntax';
|
|
3
1
|
import { ParameterTypeRegistry } from '@cucumber/cucumber-expressions';
|
|
4
2
|
import * as messages from '@cucumber/messages';
|
|
3
|
+
import { KeywordType } from '../helpers';
|
|
4
|
+
import { ISnippetSnytax } from './snippet_syntax';
|
|
5
5
|
export interface INewStepDefinitionSnippetBuilderOptions {
|
|
6
6
|
snippetSyntax: ISnippetSnytax;
|
|
7
7
|
parameterTypeRegistry: ParameterTypeRegistry;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cucumber_expressions_1 = require("@cucumber/cucumber-expressions");
|
|
3
4
|
const helpers_1 = require("../helpers");
|
|
4
5
|
const step_arguments_1 = require("../../step_arguments");
|
|
5
|
-
const cucumber_expressions_1 = require("@cucumber/cucumber-expressions");
|
|
6
6
|
const value_checker_1 = require("../../value_checker");
|
|
7
7
|
class StepDefinitionSnippetBuilder {
|
|
8
|
+
snippetSyntax;
|
|
9
|
+
cucumberExpressionGenerator;
|
|
8
10
|
constructor({ snippetSyntax, parameterTypeRegistry, }) {
|
|
9
11
|
this.snippetSyntax = snippetSyntax;
|
|
10
12
|
this.cucumberExpressionGenerator = new cucumber_expressions_1.CucumberExpressionGenerator(() => parameterTypeRegistry.parameterTypes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatter/step_definition_snippet_builder/index.ts"],"names":[],"mappings":";;AAAA,wCAAwC;AACxC,yDAAwD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatter/step_definition_snippet_builder/index.ts"],"names":[],"mappings":";;AAAA,yEAGuC;AAEvC,wCAAwC;AACxC,yDAAwD;AACxD,uDAAmD;AAanD,MAAqB,4BAA4B;IAC9B,aAAa,CAAgB;IAC7B,2BAA2B,CAA6B;IAEzE,YAAY,EACV,aAAa,EACb,qBAAqB,GACmB;QACxC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,2BAA2B,GAAG,IAAI,kDAA2B,CAChE,GAAG,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAC3C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,EAAiB;QAC9C,MAAM,OAAO,GACX,mEAAmE,CAAA;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACtD,MAAM,oBAAoB,GACxB,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC9B,OAAO;YACP,YAAY;YACZ,oBAAoB;YACpB,kBAAkB;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,eAAe,CAAC,WAAwB;QACtC,QAAQ,WAAW,EAAE;YACnB,KAAK,qBAAW,CAAC,KAAK;gBACpB,OAAO,MAAM,CAAA;YACf,KAAK,qBAAW,CAAC,OAAO;gBACtB,OAAO,MAAM,CAAA;YACf,KAAK,qBAAW,CAAC,YAAY;gBAC3B,OAAO,OAAO,CAAA;SACjB;IACH,CAAC;IAED,qBAAqB,CAAC,IAAyB;QAC7C,IAAI,IAAA,6BAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAChC,MAAM,YAAY,GAAG,IAAA,kCAAiB,EAAC,IAAI,CAAC,QAAQ,EAAE;gBACpD,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW;gBAC5B,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW;aAC7B,CAAC,CAAA;YACF,OAAO,CAAC,YAAY,CAAC,CAAA;SACtB;QACD,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAlDD,+CAkDC","sourcesContent":["import {\n CucumberExpressionGenerator,\n ParameterTypeRegistry,\n} from '@cucumber/cucumber-expressions'\nimport * as messages from '@cucumber/messages'\nimport { KeywordType } from '../helpers'\nimport { parseStepArgument } from '../../step_arguments'\nimport { doesHaveValue } from '../../value_checker'\nimport { ISnippetSnytax } from './snippet_syntax'\n\nexport interface INewStepDefinitionSnippetBuilderOptions {\n snippetSyntax: ISnippetSnytax\n parameterTypeRegistry: ParameterTypeRegistry\n}\n\nexport interface IBuildRequest {\n keywordType: KeywordType\n pickleStep: messages.PickleStep\n}\n\nexport default class StepDefinitionSnippetBuilder {\n private readonly snippetSyntax: ISnippetSnytax\n private readonly cucumberExpressionGenerator: CucumberExpressionGenerator\n\n constructor({\n snippetSyntax,\n parameterTypeRegistry,\n }: INewStepDefinitionSnippetBuilderOptions) {\n this.snippetSyntax = snippetSyntax\n this.cucumberExpressionGenerator = new CucumberExpressionGenerator(\n () => parameterTypeRegistry.parameterTypes\n )\n }\n\n build({ keywordType, pickleStep }: IBuildRequest): string {\n const comment =\n 'Write code here that turns the phrase above into concrete actions'\n const functionName = this.getFunctionName(keywordType)\n const generatedExpressions =\n this.cucumberExpressionGenerator.generateExpressions(pickleStep.text)\n const stepParameterNames = this.getStepParameterNames(pickleStep)\n return this.snippetSyntax.build({\n comment,\n functionName,\n generatedExpressions,\n stepParameterNames,\n })\n }\n\n getFunctionName(keywordType: KeywordType): string {\n switch (keywordType) {\n case KeywordType.Event:\n return 'When'\n case KeywordType.Outcome:\n return 'Then'\n case KeywordType.Precondition:\n return 'Given'\n }\n }\n\n getStepParameterNames(step: messages.PickleStep): string[] {\n if (doesHaveValue(step.argument)) {\n const argumentName = parseStepArgument(step.argument, {\n dataTable: () => 'dataTable',\n docString: () => 'docString',\n })\n return [argumentName]\n }\n return []\n }\n}\n"]}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const snippet_syntax_1 = require("./snippet_syntax");
|
|
4
4
|
const CALLBACK_NAME = 'callback';
|
|
5
5
|
class JavaScriptSnippetSyntax {
|
|
6
|
+
snippetInterface;
|
|
6
7
|
constructor(snippetInterface) {
|
|
7
8
|
this.snippetInterface = snippetInterface;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript_snippet_syntax.js","sourceRoot":"","sources":["../../../src/formatter/step_definition_snippet_builder/javascript_snippet_syntax.ts"],"names":[],"mappings":";;AACA,qDAIyB;AAEzB,MAAM,aAAa,GAAG,UAAU,CAAA;AAEhC,MAAqB,uBAAuB;
|
|
1
|
+
{"version":3,"file":"javascript_snippet_syntax.js","sourceRoot":"","sources":["../../../src/formatter/step_definition_snippet_builder/javascript_snippet_syntax.ts"],"names":[],"mappings":";;AACA,qDAIyB;AAEzB,MAAM,aAAa,GAAG,UAAU,CAAA;AAEhC,MAAqB,uBAAuB;IACzB,gBAAgB,CAAkB;IAEnD,YAAY,gBAAkC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,EACJ,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,GACS;QAC3B,IAAI,eAAe,GAAG,WAAW,CAAA;QACjC,IAAI,IAAI,CAAC,gBAAgB,KAAK,iCAAgB,CAAC,UAAU,EAAE;YACzD,eAAe,GAAG,QAAQ,GAAG,eAAe,CAAA;SAC7C;QAED,IAAI,cAAsB,CAAA;QAC1B,IAAI,IAAI,CAAC,gBAAgB,KAAK,iCAAgB,CAAC,QAAQ,EAAE;YACvD,cAAc,GAAG,GAAG,aAAa,oBAAoB,CAAA;SACtD;aAAM,IAAI,IAAI,CAAC,gBAAgB,KAAK,iCAAgB,CAAC,OAAO,EAAE;YAC7D,cAAc,GAAG,oCAAoC,CAAA;SACtD;aAAM;YACL,cAAc,GAAG,mBAAmB,CAAA;SACrC;QAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,CAChD,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;YACvC,MAAM,iBAAiB,GACrB,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAC/D,IAAI,IAAI,CAAC,gBAAgB,KAAK,iCAAgB,CAAC,QAAQ,EAAE;gBACvD,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;aACtC;YACD,OAAO,GAAG,MAAM,GAAG,YAAY,KAAK,IAAI,CAAC,uBAAuB,CAC9D,mBAAmB,CACpB,MAAM,eAAe,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;QAC/D,CAAC,CACF,CAAA;QAED,OAAO,CACL,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,OAAO,IAAI;YAChD,KAAK,cAAc,IAAI;YACvB,KAAK,CACN,CAAA;IACH,CAAC;IAEO,uBAAuB,CAAC,mBAAwC;QACtE,IAAI,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAA;QACvC,iEAAiE;QACjE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACtC,8DAA8D;QAC9D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACpC,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAxDD,0CAwDC","sourcesContent":["import { GeneratedExpression } from '@cucumber/cucumber-expressions'\nimport {\n ISnippetSnytax,\n ISnippetSyntaxBuildOptions,\n SnippetInterface,\n} from './snippet_syntax'\n\nconst CALLBACK_NAME = 'callback'\n\nexport default class JavaScriptSnippetSyntax implements ISnippetSnytax {\n private readonly snippetInterface: SnippetInterface\n\n constructor(snippetInterface: SnippetInterface) {\n this.snippetInterface = snippetInterface\n }\n\n build({\n comment,\n generatedExpressions,\n functionName,\n stepParameterNames,\n }: ISnippetSyntaxBuildOptions): string {\n let functionKeyword = 'function '\n if (this.snippetInterface === SnippetInterface.AsyncAwait) {\n functionKeyword = 'async ' + functionKeyword\n }\n\n let implementation: string\n if (this.snippetInterface === SnippetInterface.Callback) {\n implementation = `${CALLBACK_NAME}(null, 'pending');`\n } else if (this.snippetInterface === SnippetInterface.Promise) {\n implementation = \"return Promise.resolve('pending');\"\n } else {\n implementation = \"return 'pending';\"\n }\n\n const definitionChoices = generatedExpressions.map(\n (generatedExpression, index) => {\n const prefix = index === 0 ? '' : '// '\n const allParameterNames =\n generatedExpression.parameterNames.concat(stepParameterNames)\n if (this.snippetInterface === SnippetInterface.Callback) {\n allParameterNames.push(CALLBACK_NAME)\n }\n return `${prefix + functionName}('${this.escapeSpecialCharacters(\n generatedExpression\n )}', ${functionKeyword}(${allParameterNames.join(', ')}) {\\n`\n }\n )\n\n return (\n `${definitionChoices.join('')} // ${comment}\\n` +\n ` ${implementation}\\n` +\n '});'\n )\n }\n\n private escapeSpecialCharacters(generatedExpression: GeneratedExpression) {\n let source = generatedExpression.source\n // double up any backslashes because we're in a javascript string\n source = source.replace(/\\\\/g, '\\\\\\\\')\n // escape any single quotes because that's our quote delimiter\n source = source.replace(/'/g, \"\\\\'\")\n return source\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Formatter, { IFormatterOptions } from './';
|
|
2
1
|
import * as messages from '@cucumber/messages';
|
|
3
2
|
import { ITestCaseAttempt } from './helpers/event_data_collector';
|
|
3
|
+
import Formatter, { IFormatterOptions } from './';
|
|
4
4
|
interface ILogIssuesRequest {
|
|
5
5
|
issues: ITestCaseAttempt[];
|
|
6
6
|
title: string;
|
|
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const helpers_1 = require("./helpers");
|
|
7
|
-
const _1 = __importDefault(require("./"));
|
|
8
6
|
const value_checker_1 = require("../value_checker");
|
|
9
|
-
const issue_helpers_1 = require("./helpers/issue_helpers");
|
|
10
7
|
const time_1 = require("../time");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
9
|
+
const issue_helpers_1 = require("./helpers/issue_helpers");
|
|
10
|
+
const _1 = __importDefault(require("./"));
|
|
11
11
|
class SummaryFormatter extends _1.default {
|
|
12
|
+
static documentation = 'Summary output of feature and scenarios';
|
|
12
13
|
constructor(options) {
|
|
13
14
|
super(options);
|
|
14
15
|
let testRunStartedTimestamp;
|
|
@@ -64,5 +65,4 @@ class SummaryFormatter extends _1.default {
|
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
exports.default = SummaryFormatter;
|
|
67
|
-
SummaryFormatter.documentation = 'Summary output of feature and scenarios';
|
|
68
68
|
//# sourceMappingURL=summary_formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary_formatter.js","sourceRoot":"","sources":["../../src/formatter/summary_formatter.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"summary_formatter.js","sourceRoot":"","sources":["../../src/formatter/summary_formatter.ts"],"names":[],"mappings":"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","sourcesContent":["import * as messages from '@cucumber/messages'\nimport { doesHaveValue } from '../value_checker'\nimport { durationBetweenTimestamps } from '../time'\nimport { formatIssue, formatSummary, isFailure, isWarning } from './helpers'\nimport { ITestCaseAttempt } from './helpers/event_data_collector'\nimport { formatUndefinedParameterTypes } from './helpers/issue_helpers'\nimport Formatter, { IFormatterOptions } from './'\n\ninterface ILogIssuesRequest {\n issues: ITestCaseAttempt[]\n title: string\n}\n\nexport default class SummaryFormatter extends Formatter {\n public static readonly documentation: string =\n 'Summary output of feature and scenarios'\n\n constructor(options: IFormatterOptions) {\n super(options)\n let testRunStartedTimestamp: messages.Timestamp\n options.eventBroadcaster.on('envelope', (envelope: messages.Envelope) => {\n if (doesHaveValue(envelope.testRunStarted)) {\n testRunStartedTimestamp = envelope.testRunStarted.timestamp\n }\n if (doesHaveValue(envelope.testRunFinished)) {\n const testRunFinishedTimestamp = envelope.testRunFinished.timestamp\n this.logSummary(\n durationBetweenTimestamps(\n testRunStartedTimestamp,\n testRunFinishedTimestamp\n )\n )\n }\n })\n }\n\n logSummary(testRunDuration: messages.Duration): void {\n const failures: ITestCaseAttempt[] = []\n const warnings: ITestCaseAttempt[] = []\n const testCaseAttempts = this.eventDataCollector.getTestCaseAttempts()\n testCaseAttempts.forEach((testCaseAttempt) => {\n if (\n isFailure(\n testCaseAttempt.worstTestStepResult,\n testCaseAttempt.willBeRetried\n )\n ) {\n failures.push(testCaseAttempt)\n } else if (\n isWarning(\n testCaseAttempt.worstTestStepResult,\n testCaseAttempt.willBeRetried\n )\n ) {\n warnings.push(testCaseAttempt)\n }\n })\n if (this.eventDataCollector.undefinedParameterTypes.length > 0) {\n this.log(\n formatUndefinedParameterTypes(\n this.eventDataCollector.undefinedParameterTypes\n )\n )\n }\n if (failures.length > 0) {\n this.logIssues({ issues: failures, title: 'Failures' })\n }\n if (warnings.length > 0) {\n this.logIssues({ issues: warnings, title: 'Warnings' })\n }\n this.log(\n formatSummary({\n colorFns: this.colorFns,\n testCaseAttempts,\n testRunDuration,\n })\n )\n }\n\n logIssues({ issues, title }: ILogIssuesRequest): void {\n this.log(`${title}:\\n\\n`)\n issues.forEach((testCaseAttempt, index) => {\n this.log(\n formatIssue({\n colorFns: this.colorFns,\n number: index + 1,\n snippetBuilder: this.snippetBuilder,\n supportCodeLibrary: this.supportCodeLibrary,\n testCaseAttempt,\n printAttachments: this.printAttachments,\n })\n )\n })\n }\n}\n"]}
|
|
@@ -26,12 +26,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const helpers_1 = require("./helpers");
|
|
30
|
-
const _1 = __importDefault(require("./"));
|
|
31
29
|
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
32
|
-
const value_checker_1 = require("../value_checker");
|
|
33
30
|
const messages = __importStar(require("@cucumber/messages"));
|
|
31
|
+
const value_checker_1 = require("../value_checker");
|
|
32
|
+
const helpers_1 = require("./helpers");
|
|
33
|
+
const _1 = __importDefault(require("./"));
|
|
34
34
|
class UsageFormatter extends _1.default {
|
|
35
|
+
static documentation = 'Prints where step definitions are used. The slowest step definitions (with duration) are listed first. If --dry-run is used the duration is not shown, and step definitions are sorted by filename instead.';
|
|
35
36
|
constructor(options) {
|
|
36
37
|
super(options);
|
|
37
38
|
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
@@ -94,5 +95,4 @@ class UsageFormatter extends _1.default {
|
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
exports.default = UsageFormatter;
|
|
97
|
-
UsageFormatter.documentation = 'Prints where step definitions are used. The slowest step definitions (with duration) are listed first. If --dry-run is used the duration is not shown, and step definitions are sorted by filename instead.';
|
|
98
98
|
//# sourceMappingURL=usage_formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage_formatter.js","sourceRoot":"","sources":["../../src/formatter/usage_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"usage_formatter.js","sourceRoot":"","sources":["../../src/formatter/usage_formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8B;AAC9B,6DAA8C;AAC9C,oDAAgD;AAChD,uCAAoD;AACpD,0CAAiD;AAGjD,MAAqB,cAAe,SAAQ,UAAS;IAC5C,MAAM,CAAU,aAAa,GAClC,6MAA6M,CAAA;IAE/M,YAAY,OAA0B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAmB,EAAE,EAAE;YAC9D,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC3C,IAAI,CAAC,QAAQ,EAAE,CAAA;aAChB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC;YACrB,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,eAAe;YACxD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAC/B,OAAM;SACP;QACD,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;YACtB,IAAI,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,UAAU,CAAC;YAChD,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;aACT;SACF,CAAC,CAAA;QACF,KAAK,CAAC,OAAO,CACX,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7D,IAAI,gBAAgB,GAAG,OAAO,CAAA;YAC9B,IAAI,WAAW,KAAK,mBAAmB,EAAE;gBACvC,gBAAgB,GAAG,GAAG,GAAG,gBAAgB,GAAG,GAAG,CAAA;aAChD;YACD,MAAM,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC/B,MAAM,IAAI,GAAG,EAAE,CAAA;YACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,IAAA,6BAAa,EAAC,YAAY,CAAC,EAAE;oBAC/B,IAAI,CAAC,IAAI,CACP,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAC/C,YAAY,CACb,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACjB,CAAA;iBACF;qBAAM;oBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;iBACf;aACF;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACpB;YACD,MAAM,IAAI,GAAG,CAAC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC5B,IAAI,IAAA,6BAAa,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACjC,IAAI,CAAC,IAAI,CACP,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAC/C,KAAK,CAAC,QAAQ,CACf,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACjB,CAAA;iBACF;qBAAM;oBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;iBACf;gBACD,IAAI,CAAC,IAAI,CAAC,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;YACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;aACvD;YACD,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAQ,CAAC,CAAA;QACxE,CAAC,CACF,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;;AAvEH,iCAwEC","sourcesContent":["import Table from 'cli-table3'\nimport * as messages from '@cucumber/messages'\nimport { doesHaveValue } from '../value_checker'\nimport { formatLocation, getUsage } from './helpers'\nimport Formatter, { IFormatterOptions } from './'\nimport IEnvelope = messages.Envelope\n\nexport default class UsageFormatter extends Formatter {\n public static readonly documentation: string =\n 'Prints where step definitions are used. The slowest step definitions (with duration) are listed first. If --dry-run is used the duration is not shown, and step definitions are sorted by filename instead.'\n\n constructor(options: IFormatterOptions) {\n super(options)\n options.eventBroadcaster.on('envelope', (envelope: IEnvelope) => {\n if (doesHaveValue(envelope.testRunFinished)) {\n this.logUsage()\n }\n })\n }\n\n logUsage(): void {\n const usage = getUsage({\n stepDefinitions: this.supportCodeLibrary.stepDefinitions,\n eventDataCollector: this.eventDataCollector,\n })\n if (usage.length === 0) {\n this.log('No step definitions')\n return\n }\n const table = new Table({\n head: ['Pattern / Text', 'Duration', 'Location'],\n style: {\n border: [],\n head: [],\n },\n })\n usage.forEach(\n ({ line, matches, meanDuration, pattern, patternType, uri }) => {\n let formattedPattern = pattern\n if (patternType === 'RegularExpression') {\n formattedPattern = '/' + formattedPattern + '/'\n }\n const col1 = [formattedPattern]\n const col2 = []\n if (matches.length > 0) {\n if (doesHaveValue(meanDuration)) {\n col2.push(\n `${messages.TimeConversion.durationToMilliseconds(\n meanDuration\n ).toFixed(2)}ms`\n )\n } else {\n col2.push('-')\n }\n } else {\n col2.push('UNUSED')\n }\n const col3 = [formatLocation({ line, uri })]\n matches.slice(0, 5).forEach((match) => {\n col1.push(` ${match.text}`)\n if (doesHaveValue(match.duration)) {\n col2.push(\n `${messages.TimeConversion.durationToMilliseconds(\n match.duration\n ).toFixed(2)}ms`\n )\n } else {\n col2.push('-')\n }\n col3.push(formatLocation(match))\n })\n if (matches.length > 5) {\n col1.push(` ${(matches.length - 5).toString()} more`)\n }\n table.push([col1.join('\\n'), col2.join('\\n'), col3.join('\\n')] as any)\n }\n )\n this.log(`${table.toString()}\\n`)\n }\n}\n"]}
|
|
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const value_checker_1 = require("../value_checker");
|
|
6
7
|
const helpers_1 = require("./helpers");
|
|
7
8
|
const _1 = __importDefault(require("./"));
|
|
8
|
-
const value_checker_1 = require("../value_checker");
|
|
9
9
|
class UsageJsonFormatter extends _1.default {
|
|
10
|
+
static documentation = 'Does what the Usage Formatter does, but outputs JSON, which can be output to a file and then consumed by other tools.';
|
|
10
11
|
constructor(options) {
|
|
11
12
|
super(options);
|
|
12
13
|
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
@@ -30,5 +31,4 @@ class UsageJsonFormatter extends _1.default {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
exports.default = UsageJsonFormatter;
|
|
33
|
-
UsageJsonFormatter.documentation = 'Does what the Usage Formatter does, but outputs JSON, which can be output to a file and then consumed by other tools.';
|
|
34
34
|
//# sourceMappingURL=usage_json_formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage_json_formatter.js","sourceRoot":"","sources":["../../src/formatter/usage_json_formatter.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"usage_json_formatter.js","sourceRoot":"","sources":["../../src/formatter/usage_json_formatter.ts"],"names":[],"mappings":";;;;;AACA,oDAAgD;AAChD,uCAAoC;AACpC,0CAAiD;AAGjD,MAAqB,kBAAmB,SAAQ,UAAS;IAChD,MAAM,CAAU,aAAa,GAClC,uHAAuH,CAAA;IAEzH,YAAY,OAA0B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAmB,EAAE,EAAE;YAC9D,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC3C,IAAI,CAAC,QAAQ,EAAE,CAAA;aAChB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC;YACrB,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,eAAe;YACxD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAU;QAC9B,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAA;SACvB;QACD,OAAO,KAAK,CAAA;IACd,CAAC;;AA1BH,qCA2BC","sourcesContent":["import * as messages from '@cucumber/messages'\nimport { doesHaveValue } from '../value_checker'\nimport { getUsage } from './helpers'\nimport Formatter, { IFormatterOptions } from './'\nimport IEnvelope = messages.Envelope\n\nexport default class UsageJsonFormatter extends Formatter {\n public static readonly documentation: string =\n 'Does what the Usage Formatter does, but outputs JSON, which can be output to a file and then consumed by other tools.'\n\n constructor(options: IFormatterOptions) {\n super(options)\n options.eventBroadcaster.on('envelope', (envelope: IEnvelope) => {\n if (doesHaveValue(envelope.testRunFinished)) {\n this.logUsage()\n }\n })\n }\n\n logUsage(): void {\n const usage = getUsage({\n stepDefinitions: this.supportCodeLibrary.stepDefinitions,\n eventDataCollector: this.eventDataCollector,\n })\n this.log(JSON.stringify(usage, this.replacer, 2))\n }\n\n replacer(key: string, value: any): any {\n if (key === 'seconds') {\n return parseInt(value)\n }\n return value\n }\n}\n"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import * as messages from '@cucumber/messages';
|
|
1
2
|
import { default as _Cli } from './cli';
|
|
2
3
|
import * as cliHelpers from './cli/helpers';
|
|
3
4
|
import * as formatterHelpers from './formatter/helpers';
|
|
4
5
|
import { default as _PickleFilter } from './pickle_filter';
|
|
5
6
|
import * as parallelCanAssignHelpers from './support_code_library_builder/parallel_can_assign_helpers';
|
|
6
7
|
import { default as _Runtime } from './runtime';
|
|
7
|
-
import * as messages from '@cucumber/messages';
|
|
8
8
|
export { default as supportCodeLibraryBuilder } from './support_code_library_builder';
|
|
9
9
|
export { default as DataTable } from './models/data_table';
|
|
10
10
|
export { default as TestCaseHookDefinition } from './models/test_case_hook_definition';
|
package/lib/index.js
CHANGED
|
@@ -27,6 +27,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.Runtime = exports.PickleFilter = exports.parseGherkinMessageStream = exports.Cli = exports.wrapPromiseWithTimeout = exports.Status = exports.parallelCanAssignHelpers = exports.World = exports.When = exports.Then = exports.setParallelCanAssign = exports.setWorldConstructor = exports.setDefinitionFunctionWrapper = exports.setDefaultTimeout = exports.Given = exports.defineParameterType = exports.defineStep = exports.BeforeStep = exports.BeforeAll = exports.Before = exports.AfterStep = exports.AfterAll = exports.After = exports.formatterHelpers = exports.UsageJsonFormatter = exports.UsageFormatter = exports.SummaryFormatter = exports.SnippetsFormatter = exports.RerunFormatter = exports.ProgressFormatter = exports.JsonFormatter = exports.FormatterBuilder = exports.Formatter = exports.version = exports.TestCaseHookDefinition = exports.DataTable = exports.supportCodeLibraryBuilder = void 0;
|
|
30
|
+
const node_util_1 = require("node:util");
|
|
31
|
+
const messages = __importStar(require("@cucumber/messages"));
|
|
30
32
|
const cli_1 = __importDefault(require("./cli"));
|
|
31
33
|
const cliHelpers = __importStar(require("./cli/helpers"));
|
|
32
34
|
const formatterHelpers = __importStar(require("./formatter/helpers"));
|
|
@@ -36,8 +38,6 @@ const parallelCanAssignHelpers = __importStar(require("./support_code_library_bu
|
|
|
36
38
|
exports.parallelCanAssignHelpers = parallelCanAssignHelpers;
|
|
37
39
|
const runtime_1 = __importDefault(require("./runtime"));
|
|
38
40
|
const support_code_library_builder_1 = __importDefault(require("./support_code_library_builder"));
|
|
39
|
-
const messages = __importStar(require("@cucumber/messages"));
|
|
40
|
-
const util_1 = require("util");
|
|
41
41
|
// Top level
|
|
42
42
|
var support_code_library_builder_2 = require("./support_code_library_builder");
|
|
43
43
|
Object.defineProperty(exports, "supportCodeLibraryBuilder", { enumerable: true, get: function () { return __importDefault(support_code_library_builder_2).default; } });
|
|
@@ -93,17 +93,17 @@ Object.defineProperty(exports, "wrapPromiseWithTimeout", { enumerable: true, get
|
|
|
93
93
|
/**
|
|
94
94
|
* @deprecated use `runCucumber` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>
|
|
95
95
|
*/
|
|
96
|
-
exports.Cli = (0,
|
|
96
|
+
exports.Cli = (0, node_util_1.deprecate)(cli_1.default, '`Cli` is deprecated, use `runCucumber` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md');
|
|
97
97
|
/**
|
|
98
98
|
* @deprecated use `loadSources` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>
|
|
99
99
|
*/
|
|
100
|
-
exports.parseGherkinMessageStream = (0,
|
|
100
|
+
exports.parseGherkinMessageStream = (0, node_util_1.deprecate)(cliHelpers.parseGherkinMessageStream, '`parseGherkinMessageStream` is deprecated, use `loadSources` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md');
|
|
101
101
|
/**
|
|
102
102
|
* @deprecated use `loadSources` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>
|
|
103
103
|
*/
|
|
104
|
-
exports.PickleFilter = (0,
|
|
104
|
+
exports.PickleFilter = (0, node_util_1.deprecate)(pickle_filter_1.default, '`PickleFilter` is deprecated, use `loadSources` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md');
|
|
105
105
|
/**
|
|
106
106
|
* @deprecated use `runCucumber` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>
|
|
107
107
|
*/
|
|
108
|
-
exports.Runtime = (0,
|
|
108
|
+
exports.Runtime = (0, node_util_1.deprecate)(runtime_1.default, '`Runtime` is deprecated, use `runCucumber` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md');
|
|
109
109
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuC;AACvC,0DAA2C;AAC3C,sEAAuD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAqC;AACrC,6DAA8C;AAC9C,gDAAuC;AACvC,0DAA2C;AAC3C,sEAAuD;AAsB9C,4CAAgB;AArBzB,oEAA0D;AAC1D,qHAAsG;AA4C7F,4DAAwB;AA3CjC,wDAA+C;AAC/C,kGAAsE;AAEtE,YAAY;AACZ,+EAAqF;AAA5E,0JAAA,OAAO,OAA6B;AAC7C,kDAA0D;AAAjD,wHAAA,OAAO,OAAa;AAC7B,gFAAsF;AAA7E,oJAAA,OAAO,OAA0B;AAC1C,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAEhB,aAAa;AACb,yCAAqE;AAA5D,uHAAA,OAAO,OAAa;AAC7B,+CAAiE;AAAxD,4HAAA,OAAO,OAAoB;AACpC,6DAAqE;AAA5D,gIAAA,OAAO,OAAiB;AACjC,qEAA6E;AAApE,wIAAA,OAAO,OAAqB;AACrC,+DAAuE;AAA9D,kIAAA,OAAO,OAAkB;AAClC,qEAA6E;AAApE,wIAAA,OAAO,OAAqB;AACrC,mEAA2E;AAAlE,sIAAA,OAAO,OAAoB;AACpC,+DAAuE;AAA9D,kIAAA,OAAO,OAAkB;AAClC,yEAAgF;AAAvE,2IAAA,OAAO,OAAsB;AAGtC,yBAAyB;AACzB,MAAM,EAAE,OAAO,EAAE,GAAG,sCAAyB,CAAA;AAChC,QAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;AACrB,QAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;AAC3B,QAAA,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;AAC7B,QAAA,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AACvB,QAAA,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;AAC7B,QAAA,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;AAC/B,QAAA,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;AAC/B,QAAA,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;AACjD,QAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;AACrB,QAAA,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;AAC7C,QAAA,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAA;AACnE,QAAA,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;AACjD,QAAA,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAA;AACnD,QAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;AACnB,QAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;AAChC,8DAI6C;AAH3C,+GAAA,OAAO,OAAS;AAUL,QAAA,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAA;AAEnD,eAAe;AACf,+BAA+C;AAAtC,8GAAA,sBAAsB,OAAA;AAE/B,aAAa;AACb;;GAEG;AACU,QAAA,GAAG,GAAG,IAAA,qBAAS,EAC1B,aAAI,EACJ,4HAA4H,CAC7H,CAAA;AACD;;GAEG;AACU,QAAA,yBAAyB,GAAG,IAAA,qBAAS,EAChD,UAAU,CAAC,yBAAyB,EACpC,kJAAkJ,CACnJ,CAAA;AACD;;GAEG;AACU,QAAA,YAAY,GAAG,IAAA,qBAAS,EACnC,uBAAa,EACb,qIAAqI,CACtI,CAAA;AACD;;GAEG;AACU,QAAA,OAAO,GAAG,IAAA,qBAAS,EAC9B,iBAAQ,EACR,gIAAgI,CACjI,CAAA","sourcesContent":["import { deprecate } from 'node:util'\nimport * as messages from '@cucumber/messages'\nimport { default as _Cli } from './cli'\nimport * as cliHelpers from './cli/helpers'\nimport * as formatterHelpers from './formatter/helpers'\nimport { default as _PickleFilter } from './pickle_filter'\nimport * as parallelCanAssignHelpers from './support_code_library_builder/parallel_can_assign_helpers'\nimport { default as _Runtime } from './runtime'\nimport supportCodeLibraryBuilder from './support_code_library_builder'\n\n// Top level\nexport { default as supportCodeLibraryBuilder } from './support_code_library_builder'\nexport { default as DataTable } from './models/data_table'\nexport { default as TestCaseHookDefinition } from './models/test_case_hook_definition'\nexport { version } from './version'\n\n// Formatters\nexport { default as Formatter, IFormatterOptions } from './formatter'\nexport { default as FormatterBuilder } from './formatter/builder'\nexport { default as JsonFormatter } from './formatter/json_formatter'\nexport { default as ProgressFormatter } from './formatter/progress_formatter'\nexport { default as RerunFormatter } from './formatter/rerun_formatter'\nexport { default as SnippetsFormatter } from './formatter/snippets_formatter'\nexport { default as SummaryFormatter } from './formatter/summary_formatter'\nexport { default as UsageFormatter } from './formatter/usage_formatter'\nexport { default as UsageJsonFormatter } from './formatter/usage_json_formatter'\nexport { formatterHelpers }\n\n// Support Code Functions\nconst { methods } = supportCodeLibraryBuilder\nexport const After = methods.After\nexport const AfterAll = methods.AfterAll\nexport const AfterStep = methods.AfterStep\nexport const Before = methods.Before\nexport const BeforeAll = methods.BeforeAll\nexport const BeforeStep = methods.BeforeStep\nexport const defineStep = methods.defineStep\nexport const defineParameterType = methods.defineParameterType\nexport const Given = methods.Given\nexport const setDefaultTimeout = methods.setDefaultTimeout\nexport const setDefinitionFunctionWrapper = methods.setDefinitionFunctionWrapper\nexport const setWorldConstructor = methods.setWorldConstructor\nexport const setParallelCanAssign = methods.setParallelCanAssign\nexport const Then = methods.Then\nexport const When = methods.When\nexport {\n default as World,\n IWorld,\n IWorldOptions,\n} from './support_code_library_builder/world'\nexport { parallelCanAssignHelpers }\n\nexport {\n ITestCaseHookParameter,\n ITestStepHookParameter,\n} from './support_code_library_builder/types'\nexport const Status = messages.TestStepResultStatus\n\n// Time helpers\nexport { wrapPromiseWithTimeout } from './time'\n\n// Deprecated\n/**\n * @deprecated use `runCucumber` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>\n */\nexport const Cli = deprecate(\n _Cli,\n '`Cli` is deprecated, use `runCucumber` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md'\n)\n/**\n * @deprecated use `loadSources` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>\n */\nexport const parseGherkinMessageStream = deprecate(\n cliHelpers.parseGherkinMessageStream,\n '`parseGherkinMessageStream` is deprecated, use `loadSources` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md'\n)\n/**\n * @deprecated use `loadSources` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>\n */\nexport const PickleFilter = deprecate(\n _PickleFilter,\n '`PickleFilter` is deprecated, use `loadSources` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md'\n)\n/**\n * @deprecated use `runCucumber` instead; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>\n */\nexport const Runtime = deprecate(\n _Runtime,\n '`Runtime` is deprecated, use `runCucumber` instead; see https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md'\n)\nexport { INewRuntimeOptions, IRuntimeOptions } from './runtime'\n"]}
|
package/lib/models/data_table.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_table.js","sourceRoot":"","sources":["../../src/models/data_table.ts"],"names":[],"mappings":";;AAEA,MAAqB,SAAS;
|
|
1
|
+
{"version":3,"file":"data_table.js","sourceRoot":"","sources":["../../src/models/data_table.ts"],"names":[],"mappings":";;AAEA,MAAqB,SAAS;IACX,QAAQ,CAAY;IAErC,YAAY,WAA8C;QACxD,IAAI,WAAW,YAAY,KAAK,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAA;SAC5B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CACpC,CAAA;SACF;IACH,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,MAAM,SAAS,GAA2B,EAAE,CAAA;YAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC9D,OAAO,SAAS,CAAA;QAClB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACvB,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,qBAAqB,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAA;SACF;QACD,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,SAAS;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAA;QACD,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;CACF;AArDD,4BAqDC","sourcesContent":["import * as messages from '@cucumber/messages'\n\nexport default class DataTable {\n private readonly rawTable: string[][]\n\n constructor(sourceTable: messages.PickleTable | string[][]) {\n if (sourceTable instanceof Array) {\n this.rawTable = sourceTable\n } else {\n this.rawTable = sourceTable.rows.map((row) =>\n row.cells.map((cell) => cell.value)\n )\n }\n }\n\n hashes(): Record<string, string>[] {\n const copy = this.raw()\n const keys = copy[0]\n const valuesArray = copy.slice(1)\n return valuesArray.map((values) => {\n const rowObject: Record<string, string> = {}\n keys.forEach((key, index) => (rowObject[key] = values[index]))\n return rowObject\n })\n }\n\n raw(): string[][] {\n return this.rawTable.slice(0)\n }\n\n rows(): string[][] {\n const copy = this.raw()\n copy.shift()\n return copy\n }\n\n rowsHash(): Record<string, string> {\n const rows = this.raw()\n const everyRowHasTwoColumns = rows.every((row) => row.length === 2)\n if (!everyRowHasTwoColumns) {\n throw new Error(\n 'rowsHash can only be called on a data table where all rows have exactly two columns'\n )\n }\n const result: Record<string, string> = {}\n rows.forEach((x) => (result[x[0]] = x[1]))\n return result\n }\n\n transpose(): DataTable {\n const transposed = this.rawTable[0].map((x, i) =>\n this.rawTable.map((y) => y[i])\n )\n return new DataTable(transposed)\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as messages from '@cucumber/messages';
|
|
2
|
-
import { ITestCaseHookParameter } from '../support_code_library_builder/types';
|
|
3
2
|
import { Expression } from '@cucumber/cucumber-expressions';
|
|
3
|
+
import { ITestCaseHookParameter } from '../support_code_library_builder/types';
|
|
4
4
|
import { GherkinStepKeyword } from './gherkin_step_keyword';
|
|
5
5
|
export interface IGetInvocationDataRequest {
|
|
6
6
|
hookParameter: ITestCaseHookParameter;
|
package/lib/models/definition.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
class Definition {
|
|
4
|
+
code;
|
|
5
|
+
id;
|
|
6
|
+
line;
|
|
7
|
+
options;
|
|
8
|
+
unwrappedCode;
|
|
9
|
+
uri;
|
|
4
10
|
constructor({ code, id, line, options, unwrappedCode, uri, }) {
|
|
5
11
|
this.code = code;
|
|
6
12
|
this.id = id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/models/definition.ts"],"names":[],"mappings":";;AAwDA,MAA8B,UAAU;
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/models/definition.ts"],"names":[],"mappings":";;AAwDA,MAA8B,UAAU;IACtB,IAAI,CAAU;IACd,EAAE,CAAQ;IACV,IAAI,CAAQ;IACZ,OAAO,CAAoB;IAC3B,aAAa,CAAU;IACvB,GAAG,CAAQ;IAE3B,YAAY,EACV,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,OAAO,EACP,aAAa,EACb,GAAG,GACuC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,6BAA6B,CAC3B,mBAAoC,EACpC,cAA+B;QAE/B,OAAO,CACL,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY;YACvD,iBAAiB,mBAAmB,CAAC,QAAQ,EAAE,0CAA0C;YACzF,OAAO,cAAc,CAAC,QAAQ,EAAE,4BAA4B,CAC7D,CAAA;IACH,CAAC;IAED,+BAA+B,CAAC,UAAiB;QAC/C,OAAO,IAAI,CAAC,6BAA6B,CACvC,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,MAAM,GAAG,CAAC,CACtB,CAAA;IACH,CAAC;CACF;AAzCD,6BAyCC","sourcesContent":["import * as messages from '@cucumber/messages'\nimport { Expression } from '@cucumber/cucumber-expressions'\nimport { ITestCaseHookParameter } from '../support_code_library_builder/types'\nimport { GherkinStepKeyword } from './gherkin_step_keyword'\n\nexport interface IGetInvocationDataRequest {\n hookParameter: ITestCaseHookParameter\n step: messages.PickleStep\n world: any\n}\n\nexport interface IGetInvocationDataResponse {\n getInvalidCodeLengthMessage: () => string\n parameters: any[]\n validCodeLengths: number[]\n}\n\nexport interface IDefinitionOptions {\n timeout?: number\n wrapperOptions?: any\n}\n\nexport interface IHookDefinitionOptions extends IDefinitionOptions {\n name?: string\n tags?: string\n}\n\nexport interface IDefinitionParameters<T extends IDefinitionOptions> {\n code: Function\n id: string\n line: number\n options: T\n unwrappedCode?: Function\n uri: string\n}\n\nexport interface IStepDefinitionParameters\n extends IDefinitionParameters<IDefinitionOptions> {\n keyword: GherkinStepKeyword\n pattern: string | RegExp\n expression: Expression\n}\n\nexport interface IDefinition {\n readonly code: Function\n readonly id: string\n readonly line: number\n readonly options: IDefinitionOptions\n readonly unwrappedCode: Function\n readonly uri: string\n\n getInvocationParameters: (\n options: IGetInvocationDataRequest\n ) => Promise<IGetInvocationDataResponse>\n}\n\nexport default abstract class Definition {\n public readonly code: Function\n public readonly id: string\n public readonly line: number\n public readonly options: IDefinitionOptions\n public readonly unwrappedCode: Function\n public readonly uri: string\n\n constructor({\n code,\n id,\n line,\n options,\n unwrappedCode,\n uri,\n }: IDefinitionParameters<IDefinitionOptions>) {\n this.code = code\n this.id = id\n this.line = line\n this.options = options\n this.unwrappedCode = unwrappedCode\n this.uri = uri\n }\n\n buildInvalidCodeLengthMessage(\n syncOrPromiseLength: number | string,\n callbackLength: number | string\n ): string {\n return (\n `function has ${this.code.length.toString()} arguments` +\n `, should have ${syncOrPromiseLength.toString()} (if synchronous or returning a promise)` +\n ` or ${callbackLength.toString()} (if accepting a callback)`\n )\n }\n\n baseGetInvalidCodeLengthMessage(parameters: any[]): string {\n return this.buildInvalidCodeLengthMessage(\n parameters.length,\n parameters.length + 1\n )\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Definition, { IDefinition, IGetInvocationDataRequest, IGetInvocationDataResponse, IStepDefinitionParameters } from './definition';
|
|
2
1
|
import { Expression } from '@cucumber/cucumber-expressions';
|
|
2
|
+
import Definition, { IDefinition, IGetInvocationDataRequest, IGetInvocationDataResponse, IStepDefinitionParameters } from './definition';
|
|
3
3
|
import { GherkinStepKeyword } from './gherkin_step_keyword';
|
|
4
4
|
export default class StepDefinition extends Definition implements IDefinition {
|
|
5
5
|
readonly keyword: GherkinStepKeyword;
|