@zohodesk/testinglibrary 0.1.8-exp-bdd-v3 → 0.1.8-exp-bdd
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/build/bdd-framework/cli/commands/env.js +42 -0
- package/build/bdd-framework/cli/commands/export.js +47 -0
- package/build/bdd-framework/cli/commands/test.js +60 -0
- package/build/bdd-framework/cli/index.js +11 -0
- package/build/bdd-framework/cli/options.js +19 -0
- package/build/bdd-framework/cli/worker.js +13 -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 +90 -0
- package/build/bdd-framework/cucumber/buildStepDefinition.js +43 -0
- package/build/bdd-framework/cucumber/gherkin.d.js +5 -0
- package/build/bdd-framework/cucumber/gherkin.d.ts +45 -0
- package/build/bdd-framework/cucumber/loadConfig.js +17 -0
- package/build/bdd-framework/cucumber/loadFeatures.js +39 -0
- package/build/bdd-framework/cucumber/loadSnippetBuilder.js +20 -0
- package/build/bdd-framework/cucumber/loadSources.js +57 -0
- package/build/bdd-framework/cucumber/loadSteps.js +35 -0
- package/build/bdd-framework/decorators.js +18 -0
- package/build/bdd-framework/gen/formatter.js +88 -0
- package/build/bdd-framework/gen/i18n.js +35 -0
- package/build/bdd-framework/gen/index.js +163 -0
- package/build/bdd-framework/gen/poms.js +46 -0
- package/build/bdd-framework/gen/testFile.js +356 -0
- package/build/bdd-framework/gen/testNode.js +48 -0
- package/build/bdd-framework/gen/testPoms.js +123 -0
- package/build/bdd-framework/index.js +45 -0
- package/build/bdd-framework/playwright/fixtureParameterNames.js +77 -0
- package/build/bdd-framework/playwright/getLocationInFile.js +46 -0
- package/build/bdd-framework/playwright/loadConfig.js +42 -0
- package/build/bdd-framework/playwright/testTypeImpl.js +57 -0
- package/build/bdd-framework/playwright/transform.js +80 -0
- package/build/bdd-framework/playwright/types.js +5 -0
- package/build/bdd-framework/playwright/utils.js +37 -0
- package/build/bdd-framework/run/bddFixtures.js +107 -0
- package/build/bdd-framework/run/bddWorld.js +88 -0
- package/build/bdd-framework/snippets/index.js +134 -0
- package/build/bdd-framework/snippets/snippetSyntax.js +41 -0
- package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +26 -0
- package/build/bdd-framework/snippets/snippetSyntaxTs.js +18 -0
- package/build/bdd-framework/stepDefinitions/createBdd.js +49 -0
- package/build/bdd-framework/stepDefinitions/createDecorators.js +108 -0
- package/build/bdd-framework/stepDefinitions/decorators/poms.js +64 -0
- package/build/bdd-framework/stepDefinitions/decorators/steps.js +93 -0
- package/build/bdd-framework/stepDefinitions/defineStep.js +61 -0
- package/build/bdd-framework/stepDefinitions/stepConfig.js +24 -0
- package/build/bdd-framework/utils/exit.js +54 -0
- package/build/bdd-framework/utils/index.js +44 -0
- package/build/bdd-framework/utils/jsStringWrap.js +44 -0
- package/build/bdd-framework/utils/logger.js +28 -0
- package/build/bdd-poc/core-runner/exportMethods.js +6 -12
- package/build/bdd-poc/core-runner/stepDefinitions.js +3 -1
- package/build/bdd-poc/test/cucumber/featureFileParer.js +5 -4
- package/build/bdd-poc/test/stepGenerate/stepFileGenerate.js +9 -8
- package/build/bdd-poc/test/stepGenerate/stepsnippets.js +1 -2
- package/build/bdd-poc/test/testDataMap.js +2 -2
- package/build/bdd-poc/test/testStructure.js +4 -3
- package/build/core/jest/preprocessor/jsPreprocessor.js +2 -3
- package/build/core/playwright/custom-commands.js +1 -2
- package/build/core/playwright/index.js +18 -8
- package/build/core/playwright/readConfigFile.js +1 -2
- package/build/core/playwright/setup/config-creator.js +7 -10
- package/build/core/playwright/setup/config-utils.js +13 -14
- package/build/core/playwright/test-runner.js +28 -36
- package/build/decorators.d.ts +1 -1
- package/build/decorators.js +16 -2
- package/build/index.js +14 -10
- package/build/parser/parser.js +0 -1
- package/build/utils/logger.js +1 -2
- package/build/utils/stepDefinitionsFormatter.js +1 -2
- package/npm-shrinkwrap.json +570 -4
- package/package.json +3 -3
- package/build/bdd-poc/runner.js +0 -19
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getStepConfig = getStepConfig;
|
|
7
|
+
exports.isDecorator = isDecorator;
|
|
8
|
+
exports.isPlaywrightStyle = isPlaywrightStyle;
|
|
9
|
+
/**
|
|
10
|
+
* Playwright-bdd's step config.
|
|
11
|
+
*/
|
|
12
|
+
function getStepConfig(step) {
|
|
13
|
+
return step.code.stepConfig;
|
|
14
|
+
}
|
|
15
|
+
function isDecorator(stepConfig) {
|
|
16
|
+
return Boolean(stepConfig === null || stepConfig === void 0 ? void 0 : stepConfig.pomNode);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Cucumber-style steps don't have stepConfig
|
|
20
|
+
* b/c they created directly via cucumber's Given, When, Then.
|
|
21
|
+
*/
|
|
22
|
+
function isPlaywrightStyle(stepConfig) {
|
|
23
|
+
return Boolean(stepConfig);
|
|
24
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.exit = exit;
|
|
7
|
+
exports.withExitHandler = withExitHandler;
|
|
8
|
+
var _logger = require("./logger");
|
|
9
|
+
var _worker_threads = require("worker_threads");
|
|
10
|
+
/**
|
|
11
|
+
* Exit utils.
|
|
12
|
+
*
|
|
13
|
+
* When calling process.exit() in worker thread used for file generation,
|
|
14
|
+
* logs are not flushed (https://github.com/vitalets/playwright-bdd/issues/59).
|
|
15
|
+
* That's why instead of process.exit we throw ExitError
|
|
16
|
+
* that just sets process.exitCode = 1 and allow program to exit normally.
|
|
17
|
+
*
|
|
18
|
+
* On the other hand, when running in main thread, especially inside Playwright,
|
|
19
|
+
* thrown error is captured by Playwright and show with additional messages (e.g. no tests found).
|
|
20
|
+
* That's why in main thread we to call process.exit() to show only needed error.
|
|
21
|
+
*
|
|
22
|
+
* Relevant discussions:
|
|
23
|
+
* - https://github.com/nodejs/node/issues/6379
|
|
24
|
+
* - https://github.com/nodejs/node-v0.x-archive/issues/3737
|
|
25
|
+
* - https://github.com/cucumber/cucumber-js/pull/123
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
class ExitError extends Error {
|
|
29
|
+
get stack() {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function withExitHandler(fn) {
|
|
34
|
+
try {
|
|
35
|
+
return await fn();
|
|
36
|
+
} catch (e) {
|
|
37
|
+
if (e instanceof ExitError) {
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
} else {
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function exit(...messages) {
|
|
45
|
+
messages = messages.filter(Boolean);
|
|
46
|
+
if (_worker_threads.isMainThread) {
|
|
47
|
+
if (messages.length) {
|
|
48
|
+
_logger.logger.error('Error:', ...messages);
|
|
49
|
+
}
|
|
50
|
+
process.exit(1);
|
|
51
|
+
} else {
|
|
52
|
+
throw new ExitError(messages.join(' '));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getPackageVersion = getPackageVersion;
|
|
8
|
+
exports.getSymbolByName = getSymbolByName;
|
|
9
|
+
exports.removeDuplicates = removeDuplicates;
|
|
10
|
+
exports.resolvePackageRoot = resolvePackageRoot;
|
|
11
|
+
exports.template = template;
|
|
12
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
13
|
+
var _path = _interopRequireDefault(require("path"));
|
|
14
|
+
// See: https://stackoverflow.com/questions/50453640/how-can-i-get-the-value-of-a-symbol-property
|
|
15
|
+
function getSymbolByName(target, name) {
|
|
16
|
+
const ownKeys = Reflect.ownKeys(target);
|
|
17
|
+
const symbol = ownKeys.find(key => key.toString() === `Symbol(${name})`);
|
|
18
|
+
if (!symbol) {
|
|
19
|
+
throw new Error(`Symbol "${name}" not found in target. ownKeys: ${ownKeys}`);
|
|
20
|
+
}
|
|
21
|
+
return symbol;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Inserts params into template.
|
|
25
|
+
* Params defined as <param>.
|
|
26
|
+
*/
|
|
27
|
+
function template(t, params = {}) {
|
|
28
|
+
return t.replace(/<(.+?)>/g, (match, key) => {
|
|
29
|
+
return params[key] !== undefined ? String(params[key]) : match;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function removeDuplicates(arr) {
|
|
33
|
+
return [...new Set(arr)];
|
|
34
|
+
}
|
|
35
|
+
function resolvePackageRoot(packageName) {
|
|
36
|
+
const packageJsonPath = require.resolve(`${packageName}/package.json`);
|
|
37
|
+
return _path.default.dirname(packageJsonPath);
|
|
38
|
+
}
|
|
39
|
+
function getPackageVersion(packageName) {
|
|
40
|
+
const packageRoot = resolvePackageRoot(packageName);
|
|
41
|
+
const packageJsonPath = _path.default.join(packageRoot, 'package.json');
|
|
42
|
+
const packageJson = JSON.parse(_fs.default.readFileSync(packageJsonPath, 'utf8'));
|
|
43
|
+
return packageJson.version || '';
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.jsStringWrap = jsStringWrap;
|
|
7
|
+
/**
|
|
8
|
+
* Adopted version of https://github.com/joliss/js-string-escape
|
|
9
|
+
* - added support of backticks
|
|
10
|
+
* - added 'quotes' option to indicate which quotes to escape
|
|
11
|
+
* - wrap result string with provided quotes
|
|
12
|
+
*
|
|
13
|
+
* Considered alternative is https://github.com/mathiasbynens/jsesc,
|
|
14
|
+
* but it provides additional functionality and much slower
|
|
15
|
+
* See: https://github.com/mathiasbynens/jsesc/issues/16
|
|
16
|
+
*/
|
|
17
|
+
function jsStringWrap(str, {
|
|
18
|
+
quotes = 'single'
|
|
19
|
+
} = {}) {
|
|
20
|
+
const wrapQuote = quotes === 'single' ? "'" : quotes === 'double' ? '"' : '`';
|
|
21
|
+
// eslint-disable-next-line complexity
|
|
22
|
+
const escapedStr = ('' + str).replace(/["'`\\\n\r\u2028\u2029]/g, character => {
|
|
23
|
+
// Escape all characters not included in SingleStringCharacters and
|
|
24
|
+
// DoubleStringCharacters on
|
|
25
|
+
// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
|
|
26
|
+
switch (character) {
|
|
27
|
+
case wrapQuote:
|
|
28
|
+
case '\\':
|
|
29
|
+
return '\\' + character;
|
|
30
|
+
// Four possible LineTerminator characters need to be escaped:
|
|
31
|
+
case '\n':
|
|
32
|
+
return '\\n';
|
|
33
|
+
case '\r':
|
|
34
|
+
return '\\r';
|
|
35
|
+
case '\u2028':
|
|
36
|
+
return '\\u2028';
|
|
37
|
+
case '\u2029':
|
|
38
|
+
return '\\u2029';
|
|
39
|
+
default:
|
|
40
|
+
return character;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return `${wrapQuote}${escapedStr}${wrapQuote}`;
|
|
44
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.logger = exports.Logger = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Simple logger
|
|
9
|
+
*/
|
|
10
|
+
class Logger {
|
|
11
|
+
options;
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
}
|
|
15
|
+
log(...args) {
|
|
16
|
+
if (this.options.verbose) console.log(...args);
|
|
17
|
+
}
|
|
18
|
+
warn(...args) {
|
|
19
|
+
// using log() to output warnings to stdout, not stderr
|
|
20
|
+
console.log(...args);
|
|
21
|
+
}
|
|
22
|
+
error(...args) {
|
|
23
|
+
console.error(...args);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// default logger
|
|
27
|
+
exports.Logger = Logger;
|
|
28
|
+
const logger = exports.logger = new Logger();
|
|
@@ -3,18 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.And = void 0;
|
|
7
|
+
exports.Given = Given;
|
|
8
|
+
exports.When = exports.Then = void 0;
|
|
7
9
|
function Given(description, callback) {
|
|
8
10
|
globalStepMap.set(description, callback);
|
|
9
11
|
}
|
|
10
|
-
const Then = Given;
|
|
11
|
-
const When = Given;
|
|
12
|
-
const And = Given;
|
|
13
|
-
function createBdd() {
|
|
14
|
-
return {
|
|
15
|
-
Given,
|
|
16
|
-
When,
|
|
17
|
-
Then,
|
|
18
|
-
And
|
|
19
|
-
};
|
|
20
|
-
}
|
|
12
|
+
const Then = exports.Then = Given;
|
|
13
|
+
const When = exports.When = Given;
|
|
14
|
+
const And = exports.And = Given;
|
|
@@ -4,8 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createNativeBDD = createNativeBDD;
|
|
7
|
+
var _testDataMap = require("../test/testDataMap");
|
|
8
|
+
(0, _testDataMap.testDataCreation)().then(data => globalThis.globalTestdata = data);
|
|
7
9
|
function $Given(description) {
|
|
8
|
-
const stepFunction = globalStepMap
|
|
10
|
+
const stepFunction = globalStepMap[description];
|
|
9
11
|
if (stepFunction === undefined) {
|
|
10
12
|
process.exit(1);
|
|
11
13
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.parseFeature = parseFeature;
|
|
7
|
-
var _gherkin = require("@cucumber/gherkin");
|
|
8
|
+
var _gherkin = _interopRequireDefault(require("@cucumber/gherkin"));
|
|
8
9
|
var _messages = require("@cucumber/messages");
|
|
9
10
|
var uuidFn = _messages.IdGenerator.uuid();
|
|
10
|
-
var builder = new _gherkin.AstBuilder(uuidFn);
|
|
11
|
-
var matcher = new _gherkin.GherkinClassicTokenMatcher();
|
|
12
|
-
var parser = new _gherkin.Parser(builder, matcher);
|
|
11
|
+
var builder = new _gherkin.default.AstBuilder(uuidFn);
|
|
12
|
+
var matcher = new _gherkin.default.GherkinClassicTokenMatcher();
|
|
13
|
+
var parser = new _gherkin.default.Parser(builder, matcher);
|
|
13
14
|
function parseFeature(featureFileContent) {
|
|
14
15
|
var _gherkinDocument$feat;
|
|
15
16
|
var gherkinDocument = parser.parse(featureFileContent);
|
|
@@ -10,26 +10,27 @@ var _fastGlob = _interopRequireDefault(require("fast-glob"));
|
|
|
10
10
|
var _path = _interopRequireDefault(require("path"));
|
|
11
11
|
var _featureFileParer = require("../cucumber/featureFileParer");
|
|
12
12
|
var _testStructure = require("../testStructure");
|
|
13
|
-
async function stepFileCreation(featureContent, stepFilename,
|
|
14
|
-
const generatedFolderPath = _path.default.resolve(process.cwd(), '
|
|
13
|
+
async function stepFileCreation(featureContent, stepFilename, constructedFilePath) {
|
|
14
|
+
const generatedFolderPath = _path.default.resolve(process.cwd(), './feature-gen');
|
|
15
15
|
if (!(0, _fs.existsSync)(generatedFolderPath)) {
|
|
16
|
-
(0, _fs.mkdirSync)(
|
|
16
|
+
(0, _fs.mkdirSync)('./feature-gen', {
|
|
17
17
|
recursive: true
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
const stepsFilePath = _path.default.resolve(process.cwd(), '
|
|
21
|
-
const stepsSnippets = (0, _testStructure.testSnippet)(featureContent,
|
|
20
|
+
const stepsFilePath = _path.default.resolve(process.cwd(), 'feature-gen', stepFilename);
|
|
21
|
+
const stepsSnippets = (0, _testStructure.testSnippet)(featureContent, constructedFilePath);
|
|
22
22
|
await (0, _fs.writeFileSync)(stepsFilePath, stepsSnippets);
|
|
23
23
|
}
|
|
24
24
|
function generateSpecFiles() {
|
|
25
|
-
const
|
|
26
|
-
_fastGlob.default.globSync(
|
|
25
|
+
const featureFilePath = _path.default.resolve(process.cwd(), 'uat', 'modules', '**', '**', '**', '**', '**', '**', '**', '**', '*.feature').split(`\\`).join('/');
|
|
26
|
+
_fastGlob.default.globSync(featureFilePath, {
|
|
27
27
|
dot: true,
|
|
28
28
|
cwd: process.cwd()
|
|
29
29
|
}).forEach(filePath => {
|
|
30
|
+
console.log(filePath);
|
|
30
31
|
const featurefilePath = _path.default.resolve(process.cwd(), filePath);
|
|
31
32
|
const featureContent = (0, _featureFileParer.parseFeature)((0, _fs.readFileSync)(featurefilePath, 'utf-8'));
|
|
32
33
|
const fileName = _path.default.basename(filePath).replace('.feature', '.spec.js');
|
|
33
|
-
stepFileCreation(featureContent, fileName,
|
|
34
|
+
stepFileCreation(featureContent, fileName, featureFilePath);
|
|
34
35
|
});
|
|
35
36
|
}
|
|
@@ -8,8 +8,7 @@ exports.testCase = testCase;
|
|
|
8
8
|
exports.testFile = testFile;
|
|
9
9
|
exports.testStep = testStep;
|
|
10
10
|
exports.testSuite = testSuite;
|
|
11
|
-
const TESTING_LIBRARY = '@zohodesk/testinglibrary';
|
|
12
|
-
exports.TESTING_LIBRARY = TESTING_LIBRARY;
|
|
11
|
+
const TESTING_LIBRARY = exports.TESTING_LIBRARY = '@zohodesk/testinglibrary';
|
|
13
12
|
function testStep(keyword, description, browserObject, testData, options) {
|
|
14
13
|
return `await $${keyword}('${description}')(${browserObject},${testData})\n`;
|
|
15
14
|
}
|
|
@@ -18,8 +18,8 @@ async function testDataCreation() {
|
|
|
18
18
|
var parser = new _gherkin.default.Parser(builder, matcher);
|
|
19
19
|
var exampleSteps = [];
|
|
20
20
|
const globalTestdata = new Map();
|
|
21
|
-
const
|
|
22
|
-
await _fastGlob.default.globSync(
|
|
21
|
+
const featurePath = _path.default.resolve('uat', 'modules', '**', '**', '**', '**', '**', '*.feature');
|
|
22
|
+
await _fastGlob.default.globSync([featurePath], {
|
|
23
23
|
dot: true,
|
|
24
24
|
cwd: process.cwd()
|
|
25
25
|
}).forEach(filePath => {
|
|
@@ -12,13 +12,14 @@ var _fs = require("fs");
|
|
|
12
12
|
var _stringManipulation = require("../utils/stringManipulation");
|
|
13
13
|
var _stepsnippets = require("./stepGenerate/stepsnippets");
|
|
14
14
|
const inputsParamterMap = new Map();
|
|
15
|
-
function testSnippet(featureContent,
|
|
15
|
+
function testSnippet(featureContent, constructedFilePath) {
|
|
16
|
+
const relativeFilePath = _path.default.relative(process.cwd(), constructedFilePath);
|
|
16
17
|
var currentScenarios = [];
|
|
17
18
|
featureContent.scenarios.forEach(scenario => {
|
|
18
19
|
const _constructStep = scenarioSnippet(scenario);
|
|
19
|
-
|
|
20
|
+
currentScenarioss.push(_constructStep);
|
|
20
21
|
});
|
|
21
|
-
return (0, _stepsnippets.testFile)(currentScenarios,
|
|
22
|
+
return (0, _stepsnippets.testFile)(currentScenarios, relativeFilePath);
|
|
22
23
|
}
|
|
23
24
|
function extactStepArgs(step) {
|
|
24
25
|
var inputParam = [];
|
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _babelJest = _interopRequireDefault(require("babel-jest"));
|
|
9
|
-
var _default = _babelJest.default.createTransformer({
|
|
9
|
+
var _default = exports.default = _babelJest.default.createTransformer({
|
|
10
10
|
presets: [require.resolve('@babel/preset-env'), require.resolve('@babel/preset-react')],
|
|
11
11
|
plugins: [require.resolve('babel-plugin-transform-dynamic-import')]
|
|
12
|
-
});
|
|
13
|
-
exports.default = _default;
|
|
12
|
+
});
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.When = exports.Then = exports.Given = void 0;
|
|
7
|
+
Object.defineProperty(exports, "createBdd", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _bddFramework.createBdd;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
6
13
|
Object.defineProperty(exports, "expect", {
|
|
7
14
|
enumerable: true,
|
|
8
15
|
get: function () {
|
|
@@ -10,10 +17,9 @@ Object.defineProperty(exports, "expect", {
|
|
|
10
17
|
}
|
|
11
18
|
});
|
|
12
19
|
exports.test = void 0;
|
|
20
|
+
var _bddFramework = require("../../bdd-framework");
|
|
13
21
|
var _test = require("@playwright/test");
|
|
14
22
|
var _readConfigFile = require("./readConfigFile");
|
|
15
|
-
// import { createBdd, test as bddBase } from '../../bdd-framework';
|
|
16
|
-
|
|
17
23
|
// function test(descrition, callback) {
|
|
18
24
|
// return test(descrition, ({ page }) => {
|
|
19
25
|
// const { locator, ...custompage } = page
|
|
@@ -48,8 +54,8 @@ const {
|
|
|
48
54
|
additionalPages,
|
|
49
55
|
bddMode
|
|
50
56
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
51
|
-
let base = bddMode ?
|
|
52
|
-
const test = base.extend({
|
|
57
|
+
let base = bddMode ? _bddFramework.test : _test.test;
|
|
58
|
+
const test = exports.test = base.extend({
|
|
53
59
|
page: async ({
|
|
54
60
|
page
|
|
55
61
|
}, use) => {
|
|
@@ -85,7 +91,6 @@ const test = base.extend({
|
|
|
85
91
|
// await page;
|
|
86
92
|
// });
|
|
87
93
|
},
|
|
88
|
-
|
|
89
94
|
context: async ({
|
|
90
95
|
context
|
|
91
96
|
}, use) => {
|
|
@@ -95,6 +100,11 @@ const test = base.extend({
|
|
|
95
100
|
},
|
|
96
101
|
...additionalPages
|
|
97
102
|
});
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
103
|
+
const {
|
|
104
|
+
Given,
|
|
105
|
+
When,
|
|
106
|
+
Then
|
|
107
|
+
} = (0, _bddFramework.createBdd)();
|
|
108
|
+
exports.Then = Then;
|
|
109
|
+
exports.When = When;
|
|
110
|
+
exports.Given = Given;
|
|
@@ -11,8 +11,7 @@ exports.isUserConfigFileAvailable = isUserConfigFileAvailable;
|
|
|
11
11
|
var _fs = require("fs");
|
|
12
12
|
var _path = _interopRequireDefault(require("path"));
|
|
13
13
|
var _logger = require("../../utils/logger");
|
|
14
|
-
const fileName = 'uat.config.js';
|
|
15
|
-
exports.fileName = fileName;
|
|
14
|
+
const fileName = exports.fileName = 'uat.config.js';
|
|
16
15
|
function getDefaultConfig() {
|
|
17
16
|
return {
|
|
18
17
|
browsers: ['Chrome'],
|
|
@@ -9,8 +9,8 @@ var _test = require("@playwright/test");
|
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
var _readConfigFile = require("../readConfigFile");
|
|
11
11
|
var _configUtils = require("./config-utils");
|
|
12
|
+
var _main = require("../../../bdd-poc/main");
|
|
12
13
|
var _testDataMap = require("../../../bdd-poc/test/testDataMap");
|
|
13
|
-
var _runner = require("../../../bdd-poc/runner");
|
|
14
14
|
const {
|
|
15
15
|
browsers,
|
|
16
16
|
trace,
|
|
@@ -34,14 +34,12 @@ const projects = (0, _configUtils.getProjects)({
|
|
|
34
34
|
testTimeout,
|
|
35
35
|
viewport
|
|
36
36
|
});
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const testDir = (0, _configUtils.getTestDir)(bddMode, process.cwd(), {
|
|
38
|
+
featureFilesFolder,
|
|
39
|
+
stepDefinitionsFolder
|
|
40
|
+
});
|
|
39
41
|
function getPlaywrightConfig() {
|
|
40
|
-
|
|
41
|
-
(0, _runner.stepFileMap)();
|
|
42
|
-
(0, _testDataMap.testDataCreation)().then(inputs => {
|
|
43
|
-
globalThis.globalTestdata = inputs;
|
|
44
|
-
});
|
|
42
|
+
(0, _main.cucumberBDDtoTestFile)();
|
|
45
43
|
return {
|
|
46
44
|
testDir,
|
|
47
45
|
outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
|
|
@@ -74,5 +72,4 @@ function getPlaywrightConfig() {
|
|
|
74
72
|
}, ...projects] : [...projects]
|
|
75
73
|
};
|
|
76
74
|
}
|
|
77
|
-
var _default = (0, _test.defineConfig)(getPlaywrightConfig());
|
|
78
|
-
exports.default = _default;
|
|
75
|
+
var _default = exports.default = (0, _test.defineConfig)(getPlaywrightConfig());
|
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getProjects = getProjects;
|
|
8
|
+
exports.getTestDir = getTestDir;
|
|
8
9
|
var _test = require("@playwright/test");
|
|
9
10
|
var _path = _interopRequireDefault(require("path"));
|
|
10
11
|
var _readConfigFile = require("../readConfigFile");
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
var _bddFramework = require("../../../bdd-framework");
|
|
13
13
|
function getBrowserConfig({
|
|
14
14
|
browserName,
|
|
15
15
|
isAuthMode,
|
|
@@ -98,15 +98,14 @@ function getProjects({
|
|
|
98
98
|
viewport
|
|
99
99
|
})).filter(Boolean);
|
|
100
100
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// }
|
|
101
|
+
function getTestDir(bddMode, cwd, {
|
|
102
|
+
stepDefinitionsFolder
|
|
103
|
+
}) {
|
|
104
|
+
return bddMode ? (0, _bddFramework.defineBddConfig)({
|
|
105
|
+
paths: [_path.default.join(cwd, 'uat', '**', '*.feature')],
|
|
106
|
+
import: [_path.default.join(cwd, 'uat', '**', stepDefinitionsFolder, '*.spec.js')],
|
|
107
|
+
featuresRoot: _path.default.join(cwd, 'uat'),
|
|
108
|
+
outputDir: _path.default.join(cwd, 'uat', '.features-gen'),
|
|
109
|
+
publish: true
|
|
110
|
+
}) : _path.default.join(cwd, 'uat');
|
|
111
|
+
}
|
|
@@ -13,7 +13,6 @@ var _envInitializer = require("./env-initializer");
|
|
|
13
13
|
var _logger = require("../../utils/logger");
|
|
14
14
|
var _readConfigFile = require("./readConfigFile");
|
|
15
15
|
var _rootPath = require("../../utils/rootPath");
|
|
16
|
-
var _main = require("../../bdd-poc/main");
|
|
17
16
|
function parseUserArgs() {
|
|
18
17
|
return (0, _cliArgsToObject.cliArgsToObject)(process.argv.slice(2));
|
|
19
18
|
}
|
|
@@ -31,36 +30,32 @@ function getPlaywrightArgs(userArgsObject, debug, bddMode, tagArgs, headless) {
|
|
|
31
30
|
}
|
|
32
31
|
return playwrightArgs;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// });
|
|
61
|
-
// });
|
|
62
|
-
// }
|
|
63
|
-
|
|
33
|
+
function runPreprocessing(tagArgs, configPath) {
|
|
34
|
+
const beforeCommand = 'node';
|
|
35
|
+
const bddGenPath = _path.default.resolve(__dirname, '../', '../', 'bdd-framework', 'cli', 'index.js');
|
|
36
|
+
const beforeArgs = [bddGenPath, '-c', configPath];
|
|
37
|
+
if (tagArgs) {
|
|
38
|
+
beforeArgs.push('--tags');
|
|
39
|
+
beforeArgs.push(tagArgs);
|
|
40
|
+
}
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
const childProcessForPreprocessing = (0, _child_process.spawn)(beforeCommand, beforeArgs, {
|
|
43
|
+
stdio: 'inherit'
|
|
44
|
+
});
|
|
45
|
+
childProcessForPreprocessing.on('error', data => {
|
|
46
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, data);
|
|
47
|
+
reject();
|
|
48
|
+
});
|
|
49
|
+
childProcessForPreprocessing.on('exit', code => {
|
|
50
|
+
if (code === 0) {
|
|
51
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Feature Files Processed Successfully');
|
|
52
|
+
resolve();
|
|
53
|
+
} else {
|
|
54
|
+
reject(`BddGen exited with code ${code}`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
64
59
|
function runPlaywright(command, args) {
|
|
65
60
|
return new Promise((resolve, reject) => {
|
|
66
61
|
const childProcessForRunningPlaywright = (0, _child_process.spawn)(command, args, {
|
|
@@ -106,14 +101,11 @@ function main() {
|
|
|
106
101
|
const args = ['test', '--config', configPath].concat(playwrightArgs);
|
|
107
102
|
let promises = [];
|
|
108
103
|
if (bddMode) {
|
|
109
|
-
(
|
|
110
|
-
// promises.push(runPreprocessing(tagArgs, configPath));
|
|
104
|
+
promises.push(runPreprocessing(tagArgs, configPath));
|
|
111
105
|
}
|
|
112
|
-
|
|
113
106
|
Promise.all(promises).then(() => runPlaywright(command, args)).catch(err => {
|
|
114
107
|
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, err);
|
|
115
108
|
process.exit();
|
|
116
109
|
});
|
|
117
110
|
}
|
|
118
|
-
var _default = main;
|
|
119
|
-
exports.default = _default;
|
|
111
|
+
var _default = exports.default = main;
|
package/build/decorators.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export * from './bdd-framework/decorators';
|
package/build/decorators.js
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _decorators = require("./bdd-framework/decorators");
|
|
7
|
+
Object.keys(_decorators).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _decorators[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _decorators[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|