@zohodesk/testinglibrary 0.0.4 → 0.0.5-exp.2
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/.babelrc +6 -0
- package/bin/cli.js +1 -1
- package/bin/postinstall.js +1 -16
- package/build/bdd-framework/cli/commands/env.js +44 -0
- package/build/bdd-framework/cli/commands/export.js +95 -0
- package/build/bdd-framework/cli/commands/test.js +98 -0
- package/build/bdd-framework/cli/index.js +11 -0
- package/build/bdd-framework/cli/options.js +21 -0
- package/build/bdd-framework/cli/worker.js +27 -0
- package/build/bdd-framework/config/dir.js +27 -0
- package/build/bdd-framework/config/env.js +49 -0
- package/build/bdd-framework/config/index.js +91 -0
- package/build/bdd-framework/cucumber/buildStepDefinition.js +44 -0
- package/build/bdd-framework/cucumber/gherkin.d.ts +45 -0
- package/build/bdd-framework/cucumber/loadConfig.js +32 -0
- package/build/bdd-framework/cucumber/loadFeatures.js +55 -0
- package/build/bdd-framework/cucumber/loadSnippetBuilder.js +33 -0
- package/build/bdd-framework/cucumber/loadSources.js +89 -0
- package/build/bdd-framework/cucumber/loadSteps.js +66 -0
- package/build/bdd-framework/decorators.js +21 -0
- package/build/bdd-framework/gen/formatter.js +124 -0
- package/build/bdd-framework/gen/i18n.js +46 -0
- package/build/bdd-framework/gen/index.js +322 -0
- package/build/bdd-framework/gen/poms.js +68 -0
- package/build/bdd-framework/gen/testFile.js +422 -0
- package/build/bdd-framework/gen/testNode.js +64 -0
- package/build/bdd-framework/index.js +33 -0
- package/build/bdd-framework/playwright/fixtureParameterNames.js +109 -0
- package/build/bdd-framework/playwright/getLocationInFile.js +51 -0
- package/build/bdd-framework/playwright/loadConfig.js +56 -0
- package/build/bdd-framework/playwright/testTypeImpl.js +48 -0
- package/build/bdd-framework/playwright/transform.js +86 -0
- package/build/bdd-framework/playwright/utils.js +25 -0
- package/build/bdd-framework/run/bddFixtures.js +166 -0
- package/build/bdd-framework/run/bddWorld.js +166 -0
- package/build/bdd-framework/snippets/index.js +184 -0
- package/build/bdd-framework/snippets/snippetSyntax.js +61 -0
- package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +42 -0
- package/build/bdd-framework/snippets/snippetSyntaxTs.js +37 -0
- package/build/bdd-framework/stepDefinitions/createBdd.js +54 -0
- package/build/bdd-framework/stepDefinitions/createDecorators.js +123 -0
- package/build/bdd-framework/stepDefinitions/defineStep.js +64 -0
- package/build/bdd-framework/utils/index.js +59 -0
- package/build/bdd-framework/utils/jsStringWrap.js +45 -0
- package/build/bdd-framework/utils/logger.js +23 -0
- package/build/core/jest/preprocessor/jsPreprocessor.js +13 -0
- package/{src → build}/core/jest/runner/jest-runner.js +18 -17
- package/build/core/jest/setup/index.js +9 -0
- package/build/core/playwright/codegen.js +56 -0
- package/build/core/playwright/custom-commands.js +8 -0
- package/build/core/playwright/env-initializer.js +22 -0
- package/build/core/playwright/index.js +117 -0
- package/build/core/playwright/readConfigFile.js +61 -0
- package/build/core/playwright/report-generator.js +43 -0
- package/build/core/playwright/setup/config-creator.js +107 -0
- package/build/core/playwright/test-runner.js +102 -0
- package/build/index.js +37 -0
- package/build/lib/cli.js +47 -0
- package/build/lib/post-install.js +17 -0
- package/build/lint/index.js +6 -0
- package/build/setup-folder-structure/env-config-sample.json +17 -0
- package/build/setup-folder-structure/setupProject.js +102 -0
- package/build/setup-folder-structure/uat-config-sample.js +27 -0
- package/build/setup-folder-structure/user-example.json +3 -0
- package/build/utils/cliArgsToObject.js +64 -0
- package/build/utils/getFilePath.js +11 -0
- package/build/utils/logger.js +66 -0
- package/build/utils/rootPath.js +46 -0
- package/changelog.md +14 -0
- package/npm-shrinkwrap.json +2097 -147
- package/package.json +18 -4
- package/playwright.config.js +1 -1
- package/src/core/jest/preprocessor/jsPreprocessor.js +0 -9
- package/src/core/jest/setup/index.js +0 -165
- package/src/core/playwright/codegen.js +0 -60
- package/src/core/playwright/custom-commands.js +0 -3
- package/src/core/playwright/env-initializer.js +0 -24
- package/src/core/playwright/index.js +0 -82
- package/src/core/playwright/readConfigFile.js +0 -30
- package/src/core/playwright/report-generator.js +0 -43
- package/src/core/playwright/setup/config-creator.js +0 -77
- package/src/core/playwright/test-runner.js +0 -64
- package/src/index.js +0 -9
- package/src/lib/cli.js +0 -35
- package/src/utils/cliArgsToObject.js +0 -35
- package/src/utils/getFilePath.js +0 -9
- package/src/utils/logger.js +0 -28
- package/src/utils/rootPath.js +0 -51
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.loadFeatures = loadFeatures;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _loadSources = require("./loadSources");
|
|
11
|
+
var _utils = require("../utils");
|
|
12
|
+
var _loadFeatures;
|
|
13
|
+
function loadFeatures(_x, _x2) {
|
|
14
|
+
return (_loadFeatures = _loadFeatures || (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(runConfiguration, environment) {
|
|
15
|
+
var _yield$loadSources, filteredPickles, parseErrors;
|
|
16
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
17
|
+
while (1) switch (_context.prev = _context.next) {
|
|
18
|
+
case 0:
|
|
19
|
+
_context.next = 2;
|
|
20
|
+
return (0, _loadSources.loadSources)(runConfiguration.sources, environment);
|
|
21
|
+
case 2:
|
|
22
|
+
_yield$loadSources = _context.sent;
|
|
23
|
+
filteredPickles = _yield$loadSources.filteredPickles;
|
|
24
|
+
parseErrors = _yield$loadSources.parseErrors;
|
|
25
|
+
handleParseErrors(parseErrors);
|
|
26
|
+
return _context.abrupt("return", groupByDocument(filteredPickles));
|
|
27
|
+
case 7:
|
|
28
|
+
case "end":
|
|
29
|
+
return _context.stop();
|
|
30
|
+
}
|
|
31
|
+
}, _callee);
|
|
32
|
+
}))).apply(this, arguments);
|
|
33
|
+
}
|
|
34
|
+
function groupByDocument(filteredPickles) {
|
|
35
|
+
var features = new Map();
|
|
36
|
+
filteredPickles.forEach(function (_ref) {
|
|
37
|
+
var pickle = _ref.pickle,
|
|
38
|
+
gherkinDocument = _ref.gherkinDocument;
|
|
39
|
+
var pickles = features.get(gherkinDocument);
|
|
40
|
+
if (!pickles) {
|
|
41
|
+
pickles = [];
|
|
42
|
+
features.set(gherkinDocument, pickles);
|
|
43
|
+
}
|
|
44
|
+
pickles.push(pickle);
|
|
45
|
+
});
|
|
46
|
+
return features;
|
|
47
|
+
}
|
|
48
|
+
function handleParseErrors(parseErrors) {
|
|
49
|
+
if (parseErrors.length) {
|
|
50
|
+
var message = parseErrors.map(function (parseError) {
|
|
51
|
+
return "Parse error in \"".concat(parseError.source.uri, "\" ").concat(parseError.message);
|
|
52
|
+
}).join('\n');
|
|
53
|
+
(0, _utils.exitWithMessage)(message);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.loadSnippetBuilder = loadSnippetBuilder;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _cucumber = require("@cucumber/cucumber");
|
|
11
|
+
var _loadSnippetBuilder;
|
|
12
|
+
/**
|
|
13
|
+
* Loads snippet builder
|
|
14
|
+
* See: https://github.com/cucumber/cucumber-js/blob/main/src/formatter/builder.ts
|
|
15
|
+
*/
|
|
16
|
+
function loadSnippetBuilder(_x, _x2, _x3) {
|
|
17
|
+
return (_loadSnippetBuilder = _loadSnippetBuilder || (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(supportCodeLibrary, snippetInterface, snippetSyntax) {
|
|
18
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
19
|
+
while (1) switch (_context.prev = _context.next) {
|
|
20
|
+
case 0:
|
|
21
|
+
return _context.abrupt("return", _cucumber.FormatterBuilder.getStepDefinitionSnippetBuilder({
|
|
22
|
+
cwd: process.cwd(),
|
|
23
|
+
snippetInterface: snippetInterface,
|
|
24
|
+
snippetSyntax: snippetSyntax,
|
|
25
|
+
supportCodeLibrary: supportCodeLibrary
|
|
26
|
+
}));
|
|
27
|
+
case 1:
|
|
28
|
+
case "end":
|
|
29
|
+
return _context.stop();
|
|
30
|
+
}
|
|
31
|
+
}, _callee);
|
|
32
|
+
}))).apply(this, arguments);
|
|
33
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.loadSources = loadSources;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _paths = require("@cucumber/cucumber/lib/api/paths");
|
|
11
|
+
var _messages = require("@cucumber/messages");
|
|
12
|
+
var _environment = require("@cucumber/cucumber/lib/api/environment");
|
|
13
|
+
var _gherkin = require("@cucumber/cucumber/lib/api/gherkin");
|
|
14
|
+
var _console_logger = require("@cucumber/cucumber/lib/api/console_logger");
|
|
15
|
+
var _loadSources;
|
|
16
|
+
/**
|
|
17
|
+
* Copied from original load_sources, but returns full Pickles.
|
|
18
|
+
* See: https://github.com/cucumber/cucumber-js/blob/main/src/api/load_sources.ts
|
|
19
|
+
*/
|
|
20
|
+
/// <reference path="./gherkin.d.ts" />
|
|
21
|
+
/**
|
|
22
|
+
* Load and parse features, produce a filtered and ordered test plan and/or parse errors.
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
* @param coordinates - Coordinates required to find features
|
|
26
|
+
* @param environment - Project environment.
|
|
27
|
+
*/
|
|
28
|
+
function loadSources(_x) {
|
|
29
|
+
return (_loadSources = _loadSources || (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(coordinates) {
|
|
30
|
+
var environment,
|
|
31
|
+
_mergeEnvironment,
|
|
32
|
+
cwd,
|
|
33
|
+
stderr,
|
|
34
|
+
debug,
|
|
35
|
+
logger,
|
|
36
|
+
newId,
|
|
37
|
+
_yield$resolvePaths,
|
|
38
|
+
unexpandedFeaturePaths,
|
|
39
|
+
featurePaths,
|
|
40
|
+
_yield$getFilteredPic,
|
|
41
|
+
filteredPickles,
|
|
42
|
+
parseErrors,
|
|
43
|
+
_args = arguments;
|
|
44
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
45
|
+
while (1) switch (_context.prev = _context.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
environment = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
|
|
48
|
+
_mergeEnvironment = (0, _environment.mergeEnvironment)(environment), cwd = _mergeEnvironment.cwd, stderr = _mergeEnvironment.stderr, debug = _mergeEnvironment.debug;
|
|
49
|
+
logger = new _console_logger.ConsoleLogger(stderr, debug);
|
|
50
|
+
newId = _messages.IdGenerator.uuid();
|
|
51
|
+
_context.next = 6;
|
|
52
|
+
return (0, _paths.resolvePaths)(logger, cwd, coordinates);
|
|
53
|
+
case 6:
|
|
54
|
+
_yield$resolvePaths = _context.sent;
|
|
55
|
+
unexpandedFeaturePaths = _yield$resolvePaths.unexpandedFeaturePaths;
|
|
56
|
+
featurePaths = _yield$resolvePaths.featurePaths;
|
|
57
|
+
if (!(featurePaths.length === 0)) {
|
|
58
|
+
_context.next = 11;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
return _context.abrupt("return", {
|
|
62
|
+
filteredPickles: [],
|
|
63
|
+
parseErrors: []
|
|
64
|
+
});
|
|
65
|
+
case 11:
|
|
66
|
+
_context.next = 13;
|
|
67
|
+
return (0, _gherkin.getFilteredPicklesAndErrors)({
|
|
68
|
+
newId: newId,
|
|
69
|
+
cwd: cwd,
|
|
70
|
+
logger: logger,
|
|
71
|
+
unexpandedFeaturePaths: unexpandedFeaturePaths,
|
|
72
|
+
featurePaths: featurePaths,
|
|
73
|
+
coordinates: coordinates
|
|
74
|
+
});
|
|
75
|
+
case 13:
|
|
76
|
+
_yield$getFilteredPic = _context.sent;
|
|
77
|
+
filteredPickles = _yield$getFilteredPic.filteredPickles;
|
|
78
|
+
parseErrors = _yield$getFilteredPic.parseErrors;
|
|
79
|
+
return _context.abrupt("return", {
|
|
80
|
+
filteredPickles: filteredPickles,
|
|
81
|
+
parseErrors: parseErrors
|
|
82
|
+
});
|
|
83
|
+
case 17:
|
|
84
|
+
case "end":
|
|
85
|
+
return _context.stop();
|
|
86
|
+
}
|
|
87
|
+
}, _callee);
|
|
88
|
+
}))).apply(this, arguments);
|
|
89
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.findStepDefinition = findStepDefinition;
|
|
8
|
+
exports.hasTsNodeRegister = hasTsNodeRegister;
|
|
9
|
+
exports.loadSteps = loadSteps;
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
var _api = require("@cucumber/cucumber/api");
|
|
14
|
+
var _utils = require("../utils");
|
|
15
|
+
var _transform = require("../playwright/transform");
|
|
16
|
+
var _loadSteps;
|
|
17
|
+
var cache = new Map();
|
|
18
|
+
function loadSteps(_x) {
|
|
19
|
+
return (_loadSteps = _loadSteps || (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(runConfiguration) {
|
|
20
|
+
var environment,
|
|
21
|
+
cacheKey,
|
|
22
|
+
lib,
|
|
23
|
+
uninstall,
|
|
24
|
+
_args = arguments;
|
|
25
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
26
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27
|
+
case 0:
|
|
28
|
+
environment = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
|
|
29
|
+
cacheKey = JSON.stringify(runConfiguration);
|
|
30
|
+
lib = cache.get(cacheKey);
|
|
31
|
+
if (!lib) {
|
|
32
|
+
// use Playwright's built-in hook to compile TypeScript steps
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
34
|
+
uninstall = !hasTsNodeRegister(runConfiguration) ? (0, _transform.installTransform)() : function () {};
|
|
35
|
+
lib = (0, _api.loadSupport)(runConfiguration, environment)["finally"](function () {
|
|
36
|
+
return uninstall();
|
|
37
|
+
});
|
|
38
|
+
cache.set(cacheKey, lib);
|
|
39
|
+
}
|
|
40
|
+
return _context.abrupt("return", lib);
|
|
41
|
+
case 5:
|
|
42
|
+
case "end":
|
|
43
|
+
return _context.stop();
|
|
44
|
+
}
|
|
45
|
+
}, _callee);
|
|
46
|
+
}))).apply(this, arguments);
|
|
47
|
+
}
|
|
48
|
+
function findStepDefinition(supportCodeLibrary, stepText, file) {
|
|
49
|
+
var matchedSteps = supportCodeLibrary.stepDefinitions.filter(function (step) {
|
|
50
|
+
return step.matchesStepName(stepText);
|
|
51
|
+
});
|
|
52
|
+
if (matchedSteps.length === 0) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
;
|
|
56
|
+
if (matchedSteps.length > 1) {
|
|
57
|
+
(0, _utils.exitWithMessage)(["Several step definitions found for text: ".concat(stepText, " (").concat(file, ")")].concat((0, _toConsumableArray2["default"])(matchedSteps.map(function (s) {
|
|
58
|
+
return "- ".concat(s.pattern);
|
|
59
|
+
}))).join('\n'));
|
|
60
|
+
}
|
|
61
|
+
// todo: check stepDefinition.keyword with PickleStepType
|
|
62
|
+
return matchedSteps[0];
|
|
63
|
+
}
|
|
64
|
+
function hasTsNodeRegister(runConfiguration) {
|
|
65
|
+
return runConfiguration.support.requireModules.includes('ts-node/register');
|
|
66
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Fixture", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _createDecorators.Fixture;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.When = exports.Then = exports.Step = exports.Given = void 0;
|
|
13
|
+
var _createDecorators = require("./stepDefinitions/createDecorators");
|
|
14
|
+
var Given = (0, _createDecorators.createStepDecorator)('Given');
|
|
15
|
+
exports.Given = Given;
|
|
16
|
+
var When = (0, _createDecorators.createStepDecorator)('When');
|
|
17
|
+
exports.When = When;
|
|
18
|
+
var Then = (0, _createDecorators.createStepDecorator)('Then');
|
|
19
|
+
exports.Then = Then;
|
|
20
|
+
var Step = (0, _createDecorators.createStepDecorator)('Unknown');
|
|
21
|
+
exports.Step = Step;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.Formatter = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _jsStringWrap = require("../utils/jsStringWrap");
|
|
12
|
+
/**
|
|
13
|
+
* Helper to format Playwright test file.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
var TAGS_FIXTURE_TEST_KEY_SEPARATOR = '|';
|
|
17
|
+
var Formatter = /*#__PURE__*/function () {
|
|
18
|
+
function Formatter(config) {
|
|
19
|
+
(0, _classCallCheck2["default"])(this, Formatter);
|
|
20
|
+
this.config = config;
|
|
21
|
+
}
|
|
22
|
+
(0, _createClass2["default"])(Formatter, [{
|
|
23
|
+
key: "fileHeader",
|
|
24
|
+
value: function fileHeader(uri, importTestFrom) {
|
|
25
|
+
var file = (importTestFrom === null || importTestFrom === void 0 ? void 0 : importTestFrom.file) || '@zohodesk/testinglibrary';
|
|
26
|
+
var varName = (importTestFrom === null || importTestFrom === void 0 ? void 0 : importTestFrom.varName) || 'test';
|
|
27
|
+
if (varName !== 'test') varName = "".concat(varName, " as test");
|
|
28
|
+
return ["/** Generated from: ".concat(uri, " */"), // prettier-ignore
|
|
29
|
+
// this.quoted() is not possible for 'import from' as backticks not parsed
|
|
30
|
+
"import { ".concat(varName, " } from ").concat(JSON.stringify(file), ";"), ''];
|
|
31
|
+
}
|
|
32
|
+
}, {
|
|
33
|
+
key: "suite",
|
|
34
|
+
value: function suite(node, children) {
|
|
35
|
+
// prettier-ignore
|
|
36
|
+
return ["test.describe".concat(this.getSubFn(node), "(").concat(this.quoted(node.title), ", () => {"), ''].concat((0, _toConsumableArray2["default"])(children.map(indent)), ["});", '']);
|
|
37
|
+
}
|
|
38
|
+
}, {
|
|
39
|
+
key: "beforeEach",
|
|
40
|
+
value: function beforeEach(fixtures, children) {
|
|
41
|
+
var fixturesStr = (0, _toConsumableArray2["default"])(fixtures).join(', ');
|
|
42
|
+
// prettier-ignore
|
|
43
|
+
return ["test.beforeEach(async ({ ".concat(fixturesStr, " }) => {")].concat((0, _toConsumableArray2["default"])(children.map(indent)), ["});", '']);
|
|
44
|
+
}
|
|
45
|
+
}, {
|
|
46
|
+
key: "test",
|
|
47
|
+
value: function test(node, fixtures, children) {
|
|
48
|
+
var fixturesStr = (0, _toConsumableArray2["default"])(fixtures).join(', ');
|
|
49
|
+
// prettier-ignore
|
|
50
|
+
return ["test".concat(this.getSubFn(node), "(").concat(this.quoted(node.title), ", async ({ ").concat(fixturesStr, " }) => {")].concat((0, _toConsumableArray2["default"])(children.map(indent)), ["});", '']);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// eslint-disable-next-line max-params
|
|
54
|
+
}, {
|
|
55
|
+
key: "step",
|
|
56
|
+
value: function step(keyword, text, argument) {
|
|
57
|
+
var fixtureNames = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
58
|
+
var fixtures = fixtureNames.length ? "{ ".concat(fixtureNames.join(', '), " }") : '';
|
|
59
|
+
var argumentArg = argument ? JSON.stringify(argument) : fixtures ? 'null' : '';
|
|
60
|
+
var textArg = this.quoted(text);
|
|
61
|
+
var args = [textArg, argumentArg, fixtures].filter(function (arg) {
|
|
62
|
+
return arg !== '';
|
|
63
|
+
}).join(', ');
|
|
64
|
+
return "await ".concat(keyword, "(").concat(args, ");");
|
|
65
|
+
}
|
|
66
|
+
}, {
|
|
67
|
+
key: "missingStep",
|
|
68
|
+
value: function missingStep(keyword, text) {
|
|
69
|
+
return "// missing step: ".concat(keyword, "(").concat(this.quoted(text), ");");
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
72
|
+
key: "useFixtures",
|
|
73
|
+
value: function useFixtures(fixtures) {
|
|
74
|
+
return fixtures.length > 0 ? ['// == technical section ==',
|
|
75
|
+
// prettier-ignore
|
|
76
|
+
'', 'test.use({'].concat((0, _toConsumableArray2["default"])(fixtures.map(indent)), ['});']) : [];
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "testFixture",
|
|
80
|
+
value: function testFixture() {
|
|
81
|
+
return ['$test: ({}, use) => use(test),'];
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
key: "tagsFixture",
|
|
85
|
+
value: function tagsFixture(testNodes) {
|
|
86
|
+
var lines = testNodes.filter(function (node) {
|
|
87
|
+
return node.tags.length;
|
|
88
|
+
}).map(function (node) {
|
|
89
|
+
// remove first parent as it is the same for all tests: root suite
|
|
90
|
+
var key = node.titlePath.slice(1).join(TAGS_FIXTURE_TEST_KEY_SEPARATOR);
|
|
91
|
+
return "".concat(JSON.stringify(key), ": ").concat(JSON.stringify(node.tags), ",");
|
|
92
|
+
});
|
|
93
|
+
return lines.length > 0 ? ['$tags: ({}, use, testInfo) => use({'].concat((0, _toConsumableArray2["default"])(lines.map(indent)), [// .slice(2) -> b/c we remove filename and root suite title
|
|
94
|
+
"}[testInfo.titlePath.slice(2).join(".concat(JSON.stringify(TAGS_FIXTURE_TEST_KEY_SEPARATOR), ")] || []),")]) : [];
|
|
95
|
+
}
|
|
96
|
+
}, {
|
|
97
|
+
key: "getSubFn",
|
|
98
|
+
value: function getSubFn(node) {
|
|
99
|
+
if (node.flags.only) return '.only';
|
|
100
|
+
if (node.flags.skip) return '.skip';
|
|
101
|
+
if (node.flags.fixme) return '.fixme';
|
|
102
|
+
return '';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Apply this function only to string literals (mostly titles here).
|
|
107
|
+
* Objects and arrays are handled with JSON.strinigfy,
|
|
108
|
+
* b/c object keys can't be in backtiks.
|
|
109
|
+
* See: https://stackoverflow.com/questions/33194138/template-string-as-object-property-name
|
|
110
|
+
*/
|
|
111
|
+
}, {
|
|
112
|
+
key: "quoted",
|
|
113
|
+
value: function quoted(str) {
|
|
114
|
+
return (0, _jsStringWrap.jsStringWrap)(str, {
|
|
115
|
+
quotes: this.config.quotes
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}]);
|
|
119
|
+
return Formatter;
|
|
120
|
+
}();
|
|
121
|
+
exports.Formatter = Formatter;
|
|
122
|
+
function indent(value) {
|
|
123
|
+
return value ? ' '.concat(value) : value;
|
|
124
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getKeywordsMap = getKeywordsMap;
|
|
7
|
+
var _gherkin = require("@cucumber/gherkin");
|
|
8
|
+
/**
|
|
9
|
+
* Get i18n keywords.
|
|
10
|
+
* See: https://github.com/cucumber/cucumber-js/blob/main/src/cli/i18n.ts
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// todo: cache targetMap
|
|
14
|
+
|
|
15
|
+
function getKeywordsMap(language) {
|
|
16
|
+
var origMap = _gherkin.dialects[language];
|
|
17
|
+
if (!origMap) {
|
|
18
|
+
throw new Error("Language not found: ".concat(language));
|
|
19
|
+
}
|
|
20
|
+
;
|
|
21
|
+
var targetMap = new Map();
|
|
22
|
+
var enKeywords = Object.keys(origMap);
|
|
23
|
+
enKeywords.forEach(function (enKeyword) {
|
|
24
|
+
return handleKeyword(enKeyword, origMap, targetMap);
|
|
25
|
+
});
|
|
26
|
+
return targetMap;
|
|
27
|
+
}
|
|
28
|
+
function handleKeyword(enKeyword, origMap, targetMap) {
|
|
29
|
+
var nativeKeywords = origMap[enKeyword];
|
|
30
|
+
// Array.isArray converts to any[]
|
|
31
|
+
if (typeof nativeKeywords === 'string') {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
;
|
|
35
|
+
nativeKeywords.forEach(function (nativeKeyword) {
|
|
36
|
+
nativeKeyword = nativeKeyword.trim();
|
|
37
|
+
if (!nativeKeyword || nativeKeyword === '*') {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
;
|
|
41
|
+
targetMap.set(nativeKeyword, capitalizeFirstLetter(enKeyword));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function capitalizeFirstLetter(s) {
|
|
45
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
46
|
+
}
|