@zohodesk/testinglibrary 0.1.8-exp-bdd-v2 → 0.1.8-exp-bdd-v4
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/.eslintrc.js +5 -1
- package/build/bdd-framework/cli/commands/env.js +2 -3
- package/build/bdd-framework/cli/commands/export.js +1 -2
- package/build/bdd-framework/cli/commands/test.js +7 -4
- package/build/bdd-framework/cli/options.js +1 -2
- package/build/bdd-framework/config/env.js +2 -1
- package/build/bdd-framework/config/index.js +1 -2
- package/build/bdd-framework/config/lang.js +14 -0
- package/build/bdd-framework/cucumber/loadSteps.js +8 -3
- package/build/bdd-framework/decorators.js +6 -10
- package/build/bdd-framework/gen/fixtures.js +48 -0
- package/build/bdd-framework/gen/formatter.js +57 -10
- package/build/bdd-framework/gen/i18n.js +6 -2
- package/build/bdd-framework/gen/index.js +7 -6
- package/build/bdd-framework/gen/testFile.js +105 -39
- package/build/bdd-framework/gen/testNode.js +16 -3
- package/build/bdd-framework/gen/testPoms.js +18 -8
- package/build/bdd-framework/hooks/scenario.js +107 -0
- package/build/bdd-framework/hooks/worker.js +83 -0
- package/build/bdd-framework/playwright/fixtureParameterNames.js +24 -8
- package/build/bdd-framework/playwright/getLocationInFile.js +13 -7
- package/build/bdd-framework/playwright/testTypeImpl.js +11 -7
- package/build/bdd-framework/playwright/transform.js +6 -2
- package/build/bdd-framework/playwright/utils.js +1 -4
- package/build/bdd-framework/run/StepInvoker.js +73 -0
- package/build/bdd-framework/run/bddFixtures.js +119 -57
- package/build/bdd-framework/run/bddWorld.js +24 -36
- package/build/bdd-framework/snippets/index.js +3 -2
- package/build/bdd-framework/snippets/snippetSyntax.js +3 -1
- package/build/bdd-framework/stepDefinitions/createBdd.js +28 -11
- package/build/bdd-framework/stepDefinitions/decorators/{poms.js → class.js} +7 -3
- package/build/bdd-framework/stepDefinitions/decorators/steps.js +8 -3
- package/build/bdd-framework/stepDefinitions/defineStep.js +2 -1
- package/build/bdd-framework/utils/exit.js +8 -4
- package/build/bdd-framework/utils/index.js +27 -1
- package/build/bdd-framework/utils/logger.js +4 -3
- package/build/bdd-poc/core-runner/main.js +10 -0
- package/build/bdd-poc/core-runner/stepDefinitions.js +0 -1
- package/build/bdd-poc/index.js +26 -0
- package/build/bdd-poc/test/stepGenerate/stepFileGenerate.js +6 -6
- package/build/bdd-poc/test/stepGenerate/stepsnippets.js +1 -2
- package/build/bdd-poc/test/testDataMap.js +5 -5
- package/build/core/jest/preprocessor/jsPreprocessor.js +2 -3
- package/build/core/playwright/builtInFixtures/addTags.js +19 -0
- package/build/core/playwright/builtInFixtures/cacheLayer.js +13 -0
- package/build/core/playwright/builtInFixtures/context.js +15 -0
- package/build/core/playwright/builtInFixtures/index.js +26 -0
- package/build/core/playwright/builtInFixtures/page.js +51 -0
- package/build/core/playwright/clear-caches.js +29 -0
- package/build/core/playwright/custom-commands.js +1 -2
- package/build/core/playwright/index.js +12 -93
- package/build/core/playwright/readConfigFile.js +12 -6
- package/build/core/playwright/report-generator.js +2 -1
- package/build/core/playwright/setup/config-creator.js +23 -17
- package/build/core/playwright/setup/config-utils.js +43 -11
- package/build/core/playwright/setup/custom-reporter.js +109 -0
- package/build/core/playwright/tag-processor.js +68 -0
- package/build/core/playwright/test-runner.js +40 -36
- package/build/decorators.d.ts +1 -1
- package/build/decorators.js +2 -16
- package/build/index.d.ts +59 -4
- package/build/index.js +10 -9
- package/build/lib/cli.js +10 -1
- package/build/parser/parser.js +0 -1
- package/build/setup-folder-structure/helper.js +34 -0
- package/build/setup-folder-structure/reportEnhancement/addonScript.html +25 -0
- package/build/setup-folder-structure/reportEnhancement/reportAlteration.js +25 -0
- package/build/setup-folder-structure/samples/git-ignore.sample.js +8 -4
- package/build/setup-folder-structure/samples/uat-config-sample.js +3 -2
- package/build/setup-folder-structure/setupProject.js +10 -5
- package/build/utils/fileUtils.js +15 -4
- package/build/utils/logger.js +1 -2
- package/build/utils/stepDefinitionsFormatter.js +1 -2
- package/changelog.md +57 -0
- package/npm-shrinkwrap.json +1426 -2172
- package/package.json +5 -4
- package/build/bdd-framework/cucumber/gherkin.d.ts +0 -45
- package/build/bdd-framework/gen/poms.js +0 -46
- package/build/bdd-framework/stepDefinitions/createDecorators.js +0 -109
- package/build/bdd-poc/main.js +0 -10
- /package/build/bdd-poc/{runner.js → core-runner/runner.js} +0 -0
|
@@ -4,6 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.callWithTimeout = callWithTimeout;
|
|
8
|
+
exports.extractTemplateParams = extractTemplateParams;
|
|
7
9
|
exports.getPackageVersion = getPackageVersion;
|
|
8
10
|
exports.getSymbolByName = getSymbolByName;
|
|
9
11
|
exports.removeDuplicates = removeDuplicates;
|
|
@@ -11,7 +13,12 @@ exports.resolvePackageRoot = resolvePackageRoot;
|
|
|
11
13
|
exports.template = template;
|
|
12
14
|
var _fs = _interopRequireDefault(require("fs"));
|
|
13
15
|
var _path = _interopRequireDefault(require("path"));
|
|
14
|
-
|
|
16
|
+
var _util = require("util");
|
|
17
|
+
const setTimeoutPromise = (0, _util.promisify)(setTimeout);
|
|
18
|
+
/**
|
|
19
|
+
* Returns Symbol by name.
|
|
20
|
+
* See: https://stackoverflow.com/questions/50453640/how-can-i-get-the-value-of-a-symbol-property
|
|
21
|
+
*/
|
|
15
22
|
function getSymbolByName(target, name) {
|
|
16
23
|
const ownKeys = Reflect.ownKeys(target);
|
|
17
24
|
const symbol = ownKeys.find(key => key.toString() === `Symbol(${name})`);
|
|
@@ -29,6 +36,13 @@ function template(t, params = {}) {
|
|
|
29
36
|
return params[key] !== undefined ? String(params[key]) : match;
|
|
30
37
|
});
|
|
31
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Extracts all template params from string.
|
|
41
|
+
* Params defined as <param>.
|
|
42
|
+
*/
|
|
43
|
+
function extractTemplateParams(t) {
|
|
44
|
+
return [...t.matchAll(/<(.+?)>/g)].map(m => m[1]);
|
|
45
|
+
}
|
|
32
46
|
function removeDuplicates(arr) {
|
|
33
47
|
return [...new Set(arr)];
|
|
34
48
|
}
|
|
@@ -41,4 +55,16 @@ function getPackageVersion(packageName) {
|
|
|
41
55
|
const packageJsonPath = _path.default.join(packageRoot, 'package.json');
|
|
42
56
|
const packageJson = JSON.parse(_fs.default.readFileSync(packageJsonPath, 'utf8'));
|
|
43
57
|
return packageJson.version || '';
|
|
58
|
+
}
|
|
59
|
+
async function callWithTimeout(fn, timeout, timeoutMsg) {
|
|
60
|
+
if (!timeout) {
|
|
61
|
+
return fn();
|
|
62
|
+
}
|
|
63
|
+
const ac = new AbortController();
|
|
64
|
+
return Promise.race([fn(), setTimeoutPromise(timeout, null, {
|
|
65
|
+
ref: false,
|
|
66
|
+
signal: ac.signal
|
|
67
|
+
}).then(() => {
|
|
68
|
+
throw new Error(timeoutMsg || `Function timeout (${timeout} ms)`);
|
|
69
|
+
})]).finally(() => ac.abort());
|
|
44
70
|
}
|
|
@@ -13,7 +13,9 @@ class Logger {
|
|
|
13
13
|
this.options = options;
|
|
14
14
|
}
|
|
15
15
|
log(...args) {
|
|
16
|
-
if (this.options.verbose)
|
|
16
|
+
if (this.options.verbose) {
|
|
17
|
+
console.log(...args);
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
20
|
warn(...args) {
|
|
19
21
|
// using log() to output warnings to stdout, not stderr
|
|
@@ -25,5 +27,4 @@ class Logger {
|
|
|
25
27
|
}
|
|
26
28
|
// default logger
|
|
27
29
|
exports.Logger = Logger;
|
|
28
|
-
const logger = new Logger();
|
|
29
|
-
exports.logger = logger;
|
|
30
|
+
const logger = exports.logger = new Logger();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createCucumberBDD = createCucumberBDD;
|
|
7
|
+
var _stepFileGenerate = require("../test/stepGenerate/stepFileGenerate");
|
|
8
|
+
async function createCucumberBDD() {
|
|
9
|
+
await (0, _stepFileGenerate.generateSpecFiles)();
|
|
10
|
+
}
|
|
@@ -27,7 +27,6 @@ function getInputArray(description, argument) {
|
|
|
27
27
|
return [specInput.dataTableStep];
|
|
28
28
|
}
|
|
29
29
|
if (specInput.scenarioTable) {
|
|
30
|
-
console.log(specInput.inputParameter);
|
|
31
30
|
var exceedParam = specInput.inputParameter[0];
|
|
32
31
|
const extracted = argument.map(element => {
|
|
33
32
|
return exceedParam[element];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "createBdd", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _exportMethods.createBdd;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "createCucumberBDD", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _main.createCucumberBDD;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "createNativeBDD", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _stepDefinitions.createNativeBDD;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
var _exportMethods = require("./core-runner/exportMethods");
|
|
25
|
+
var _stepDefinitions = require("./core-runner/stepDefinitions");
|
|
26
|
+
var _main = require("./core-runner/main");
|
|
@@ -11,18 +11,18 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
11
11
|
var _featureFileParer = require("../cucumber/featureFileParer");
|
|
12
12
|
var _testStructure = require("../testStructure");
|
|
13
13
|
async function stepFileCreation(featureContent, stepFilename, featureFilePath) {
|
|
14
|
-
const generatedFolderPath = _path.default.resolve(process.cwd(), 'uat', 'feature-gen');
|
|
15
|
-
if (!(0, _fs.existsSync)(generatedFolderPath)) {
|
|
16
|
-
(0, _fs.mkdirSync)('./feature-gen', {
|
|
17
|
-
recursive: true
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
14
|
const stepsFilePath = _path.default.resolve(process.cwd(), 'uat', 'feature-gen', stepFilename);
|
|
21
15
|
const stepsSnippets = (0, _testStructure.testSnippet)(featureContent, featureFilePath);
|
|
22
16
|
await (0, _fs.writeFileSync)(stepsFilePath, stepsSnippets);
|
|
23
17
|
}
|
|
24
18
|
function generateSpecFiles() {
|
|
25
19
|
const featureFilePattern = _path.default.resolve(process.cwd(), 'uat', 'modules', '**', '**', '**', '**', '**', '**', '**', '**', '*.feature').split(`\\`).join('/');
|
|
20
|
+
const generatedFolderPath = _path.default.resolve(process.cwd(), 'uat', 'feature-gen');
|
|
21
|
+
if (!(0, _fs.existsSync)(generatedFolderPath)) {
|
|
22
|
+
(0, _fs.mkdirSync)(generatedFolderPath, {
|
|
23
|
+
recursive: true
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
26
|
_fastGlob.default.globSync(featureFilePattern, {
|
|
27
27
|
dot: true,
|
|
28
28
|
cwd: process.cwd()
|
|
@@ -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
|
}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.testDataCreation = testDataCreation;
|
|
8
|
-
var _gherkin =
|
|
8
|
+
var _gherkin = require("@cucumber/gherkin");
|
|
9
9
|
var _messages = require("@cucumber/messages");
|
|
10
10
|
var _fastGlob = _interopRequireDefault(require("fast-glob"));
|
|
11
11
|
var _fs = require("fs");
|
|
@@ -13,12 +13,12 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
13
13
|
var _testStructure = require("./testStructure");
|
|
14
14
|
async function testDataCreation() {
|
|
15
15
|
var uuidFn = _messages.IdGenerator.uuid();
|
|
16
|
-
var builder = new _gherkin.
|
|
17
|
-
var matcher = new _gherkin.
|
|
18
|
-
var parser = new _gherkin.
|
|
16
|
+
var builder = new _gherkin.AstBuilder(uuidFn);
|
|
17
|
+
var matcher = new _gherkin.GherkinClassicTokenMatcher();
|
|
18
|
+
var parser = new _gherkin.Parser(builder, matcher);
|
|
19
19
|
var exampleSteps = [];
|
|
20
20
|
const globalTestdata = new Map();
|
|
21
|
-
const actualStepFilePath = _path.default.resolve('uat', 'modules', '**', '**', '**', '**', '**', '*.
|
|
21
|
+
const actualStepFilePath = _path.default.resolve('uat', 'modules', '**', '**', '**', '**', '**', '*.feature').split('\\').join('/');
|
|
22
22
|
await _fastGlob.default.globSync(actualStepFilePath, {
|
|
23
23
|
dot: true,
|
|
24
24
|
cwd: process.cwd()
|
|
@@ -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
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
addTags: [async ({
|
|
9
|
+
$tags
|
|
10
|
+
}, use, testInfo) => {
|
|
11
|
+
testInfo.annotations.push({
|
|
12
|
+
type: 'tags',
|
|
13
|
+
description: $tags.join(', ')
|
|
14
|
+
});
|
|
15
|
+
await use();
|
|
16
|
+
}, {
|
|
17
|
+
auto: true
|
|
18
|
+
}]
|
|
19
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
const cacheMap = new Map();
|
|
8
|
+
var _default = exports.default = {
|
|
9
|
+
// eslint-disable-next-line no-empty-pattern
|
|
10
|
+
cacheLayer: async ({}, use) => {
|
|
11
|
+
await use(cacheMap);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
context: async ({
|
|
9
|
+
context
|
|
10
|
+
}, use) => {
|
|
11
|
+
// eslint-disable-next-line no-undef
|
|
12
|
+
await context.addInitScript(() => window.localStorage.setItem('isDnBannerHide', true));
|
|
13
|
+
await use(context);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _page = _interopRequireDefault(require("./page"));
|
|
9
|
+
var _context = _interopRequireDefault(require("./context"));
|
|
10
|
+
var _cacheLayer = _interopRequireDefault(require("./cacheLayer"));
|
|
11
|
+
var _addTags = _interopRequireDefault(require("./addTags"));
|
|
12
|
+
function getBuiltInFixtures(bddMode) {
|
|
13
|
+
let builtInFixtures = {
|
|
14
|
+
..._page.default,
|
|
15
|
+
..._context.default,
|
|
16
|
+
..._cacheLayer.default
|
|
17
|
+
};
|
|
18
|
+
if (bddMode) {
|
|
19
|
+
builtInFixtures = {
|
|
20
|
+
...builtInFixtures,
|
|
21
|
+
..._addTags.default
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return builtInFixtures;
|
|
25
|
+
}
|
|
26
|
+
var _default = exports.default = getBuiltInFixtures;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
// function test(descrition, callback) {
|
|
8
|
+
// return test(descrition, ({ page }) => {
|
|
9
|
+
// const { locator, ...custompage } = page
|
|
10
|
+
// callback({ page: custompage })
|
|
11
|
+
// })
|
|
12
|
+
// }
|
|
13
|
+
// class FilteredPage {
|
|
14
|
+
// constructor(page) {
|
|
15
|
+
// this.page = page;
|
|
16
|
+
// this.allowedMethods = ['getByText', 'getByTitle'];
|
|
17
|
+
// this.context = page.context;
|
|
18
|
+
// }
|
|
19
|
+
// goto(...args) {
|
|
20
|
+
// return this.page['goto'](...args);
|
|
21
|
+
// }
|
|
22
|
+
// getByRole(...args) {
|
|
23
|
+
// return this.page['getByRole'](...args);
|
|
24
|
+
// }
|
|
25
|
+
// }
|
|
26
|
+
// function FilteredPage(page) {
|
|
27
|
+
// return {
|
|
28
|
+
// getByRole: () => {
|
|
29
|
+
// throw new Error('You cannnot use getByRole property')
|
|
30
|
+
// }
|
|
31
|
+
// }
|
|
32
|
+
// }
|
|
33
|
+
var _default = exports.default = {
|
|
34
|
+
page: async ({
|
|
35
|
+
page
|
|
36
|
+
}, use) => {
|
|
37
|
+
page.getBaseUrl = function () {
|
|
38
|
+
if (process.env.mode === 'dev') {
|
|
39
|
+
return `${process.env.domain}?devURL=${process.env.devUrl}`;
|
|
40
|
+
}
|
|
41
|
+
return `${process.env.domain}`;
|
|
42
|
+
};
|
|
43
|
+
page.getCustomPageUrl = function (url) {
|
|
44
|
+
if (process.env.mode === 'dev') {
|
|
45
|
+
return `${process.env.domain}/${url}?devURL=${process.env.devUrl}`;
|
|
46
|
+
}
|
|
47
|
+
return `${process.env.domain}/${url}`;
|
|
48
|
+
};
|
|
49
|
+
await use(page);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _fileUtils = require("../../utils/fileUtils");
|
|
10
|
+
var _logger = require("../../utils/logger");
|
|
11
|
+
var _readConfigFile = require("./readConfigFile");
|
|
12
|
+
function clearCaches() {
|
|
13
|
+
try {
|
|
14
|
+
const {
|
|
15
|
+
authFilePath,
|
|
16
|
+
reportPath
|
|
17
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
18
|
+
authFilePath.split('/').pop();
|
|
19
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting auth files present in ${authFilePath}`);
|
|
20
|
+
(0, _fileUtils.deleteFolder)(_path.default.resolve(process.cwd(), authFilePath));
|
|
21
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting Playwright report ${reportPath}`);
|
|
22
|
+
(0, _fileUtils.deleteFolder)(reportPath);
|
|
23
|
+
(0, _fileUtils.deleteFolder)(_path.default.resolve(process.cwd(), 'uat', '.features-gen'));
|
|
24
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Caches Cleared');
|
|
25
|
+
} catch (err) {
|
|
26
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Error While clearing cookies');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
var _default = exports.default = clearCaches;
|
|
@@ -4,5 +4,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CUSTOM_COMMANDS = void 0;
|
|
7
|
-
const CUSTOM_COMMANDS = ['mode', 'tags'];
|
|
8
|
-
exports.CUSTOM_COMMANDS = CUSTOM_COMMANDS;
|
|
7
|
+
const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags', 'edition'];
|
|
@@ -1,15 +1,9 @@
|
|
|
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
|
-
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
|
-
});
|
|
13
7
|
Object.defineProperty(exports, "expect", {
|
|
14
8
|
enumerable: true,
|
|
15
9
|
get: function () {
|
|
@@ -17,96 +11,21 @@ Object.defineProperty(exports, "expect", {
|
|
|
17
11
|
}
|
|
18
12
|
});
|
|
19
13
|
exports.test = void 0;
|
|
20
|
-
var _bddFramework = require("../../bdd-framework");
|
|
21
14
|
var _test = require("@playwright/test");
|
|
22
15
|
var _readConfigFile = require("./readConfigFile");
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
// const { locator, ...custompage } = page
|
|
26
|
-
// callback({ page: custompage })
|
|
27
|
-
// })
|
|
28
|
-
// }
|
|
29
|
-
|
|
30
|
-
// class FilteredPage {
|
|
31
|
-
// constructor(page) {
|
|
32
|
-
// this.page = page;
|
|
33
|
-
// this.allowedMethods = ['getByText', 'getByTitle'];
|
|
34
|
-
// this.context = page.context;
|
|
35
|
-
// }
|
|
36
|
-
|
|
37
|
-
// goto(...args) {
|
|
38
|
-
// return this.page['goto'](...args);
|
|
39
|
-
// }
|
|
16
|
+
var _builtInFixtures = _interopRequireDefault(require("./builtInFixtures"));
|
|
17
|
+
// import { createBdd, test as bddBase } from '../../bdd-framework';
|
|
40
18
|
|
|
41
|
-
// getByRole(...args) {
|
|
42
|
-
// return this.page['getByRole'](...args);
|
|
43
|
-
// }
|
|
44
|
-
// }
|
|
45
|
-
|
|
46
|
-
// function FilteredPage(page) {
|
|
47
|
-
// return {
|
|
48
|
-
// getByRole: () => {
|
|
49
|
-
// throw new Error('You cannnot use getByRole property')
|
|
50
|
-
// }
|
|
51
|
-
// }
|
|
52
|
-
// }
|
|
53
19
|
const {
|
|
54
|
-
additionalPages,
|
|
20
|
+
additionalPages: userFixtures,
|
|
55
21
|
bddMode
|
|
56
22
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
// get: function (obj, prop) {
|
|
64
|
-
// console.log('Gettig Priop', prop);
|
|
65
|
-
// let filterMethod = FilteredPage(page)[prop];
|
|
66
|
-
// if (filterMethod) {
|
|
67
|
-
// return filterMethod;
|
|
68
|
-
// } else {
|
|
69
|
-
// return obj[prop] ? obj[prop] : 'property does not exist';
|
|
70
|
-
// }
|
|
71
|
-
// }
|
|
72
|
-
// })
|
|
73
|
-
page.getBaseUrl = function () {
|
|
74
|
-
if (process.env.mode === 'dev') {
|
|
75
|
-
return `${process.env.domain}?devURL=${process.env.devUrl}`;
|
|
76
|
-
}
|
|
77
|
-
return `${process.env.domain}`;
|
|
78
|
-
};
|
|
79
|
-
page.getCustomPageUrl = function (url) {
|
|
80
|
-
if (process.env.mode === 'dev') {
|
|
81
|
-
return `${process.env.domain}/${url}?devURL=${process.env.devUrl}`;
|
|
82
|
-
}
|
|
83
|
-
return `${process.env.domain}/${url}`;
|
|
84
|
-
};
|
|
85
|
-
await use(page);
|
|
86
|
-
|
|
87
|
-
//await use(new FilteredPage(page));
|
|
88
|
-
|
|
89
|
-
// await use(async (page) => {
|
|
90
|
-
// delete page.getByTestId;
|
|
91
|
-
// await page;
|
|
92
|
-
// });
|
|
93
|
-
},
|
|
94
|
-
|
|
95
|
-
context: async ({
|
|
96
|
-
context
|
|
97
|
-
}, use) => {
|
|
98
|
-
// eslint-disable-next-line no-undef
|
|
99
|
-
await context.addInitScript(() => window.localStorage.setItem('isDnBannerHide', true));
|
|
100
|
-
await use(context);
|
|
101
|
-
},
|
|
102
|
-
...additionalPages
|
|
23
|
+
// In house BDD testing. so, use playwright test
|
|
24
|
+
let base = _test.test;
|
|
25
|
+
const buildInFixtures = (0, _builtInFixtures.default)(bddMode);
|
|
26
|
+
const test = exports.test = base.extend({
|
|
27
|
+
...buildInFixtures,
|
|
28
|
+
...userFixtures
|
|
103
29
|
});
|
|
104
|
-
|
|
105
|
-
const {
|
|
106
|
-
Given,
|
|
107
|
-
When,
|
|
108
|
-
Then
|
|
109
|
-
} = (0, _bddFramework.createBdd)();
|
|
110
|
-
exports.Then = Then;
|
|
111
|
-
exports.When = When;
|
|
112
|
-
exports.Given = Given;
|
|
30
|
+
|
|
31
|
+
// const { Given, When, Then } = createBdd();
|
|
@@ -11,10 +11,10 @@ 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 {
|
|
17
|
+
headless: false,
|
|
18
18
|
browsers: ['Chrome'],
|
|
19
19
|
trace: false,
|
|
20
20
|
video: false,
|
|
@@ -31,7 +31,11 @@ function getDefaultConfig() {
|
|
|
31
31
|
},
|
|
32
32
|
debug: false,
|
|
33
33
|
mode: 'dev',
|
|
34
|
-
additionalPages: {}
|
|
34
|
+
additionalPages: {},
|
|
35
|
+
featureFilesFolder: 'feature-files',
|
|
36
|
+
stepDefinitionsFolder: 'steps',
|
|
37
|
+
testIdAttribute: 'data-testid',
|
|
38
|
+
editionOrder: ['Free', 'Express', 'Standard', 'Professional', 'Enterprise']
|
|
35
39
|
};
|
|
36
40
|
}
|
|
37
41
|
function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
@@ -39,7 +43,7 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
39
43
|
let configurationObj = {};
|
|
40
44
|
Object.keys(userConfiguration).forEach(configKey => {
|
|
41
45
|
let configValue = userConfiguration[configKey];
|
|
42
|
-
if (configValue && configValue !==
|
|
46
|
+
if (configValue !== null && configValue !== undefined) {
|
|
43
47
|
configurationObj[configKey] = configValue;
|
|
44
48
|
} else if (defaultConfig[configKey]) {
|
|
45
49
|
configurationObj[configKey] = defaultConfig[configKey];
|
|
@@ -67,7 +71,7 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
67
71
|
* @property {boolean} video - video for test cases,
|
|
68
72
|
* @property {boolean} debug - debug mode
|
|
69
73
|
* @property {string} mode: mode in which the test cases needs to run
|
|
70
|
-
* @property {boolean} isAuthMode - Auth Mode
|
|
74
|
+
* @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
|
|
71
75
|
* @property {string} authFilePath - File Path where the cookies stored
|
|
72
76
|
* @property {any} browsers: List of browsers
|
|
73
77
|
* @property {string} openReportOn: default Option value (never, on-failure and always)
|
|
@@ -78,7 +82,9 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
78
82
|
* @property {Object} additionalPages: custom pages configuration
|
|
79
83
|
* @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
|
|
80
84
|
* @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
|
|
81
|
-
* @property {viewportConfig} viewport: viewport configuration
|
|
85
|
+
* @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
|
|
86
|
+
* @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
|
|
87
|
+
* @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
|
|
82
88
|
*/
|
|
83
89
|
|
|
84
90
|
/**
|
|
@@ -17,7 +17,8 @@ const {
|
|
|
17
17
|
reportPath: htmlPath
|
|
18
18
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
19
19
|
const args = ['show-report', htmlPath].concat(userArgs);
|
|
20
|
-
function generateReport() {
|
|
20
|
+
async function generateReport() {
|
|
21
|
+
// await preProcessReport()
|
|
21
22
|
const childProcess = (0, _child_process.spawn)(command, args, {
|
|
22
23
|
stdio: 'inherit'
|
|
23
24
|
});
|
|
@@ -10,7 +10,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
10
10
|
var _readConfigFile = require("../readConfigFile");
|
|
11
11
|
var _configUtils = require("./config-utils");
|
|
12
12
|
var _testDataMap = require("../../../bdd-poc/test/testDataMap");
|
|
13
|
-
var
|
|
13
|
+
var _index = require("../../../bdd-poc/index");
|
|
14
14
|
const {
|
|
15
15
|
browsers,
|
|
16
16
|
trace,
|
|
@@ -23,8 +23,7 @@ const {
|
|
|
23
23
|
testTimeout,
|
|
24
24
|
authFilePath,
|
|
25
25
|
viewport,
|
|
26
|
-
|
|
27
|
-
stepDefinitionsFolder
|
|
26
|
+
testIdAttribute
|
|
28
27
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
29
28
|
const projects = (0, _configUtils.getProjects)({
|
|
30
29
|
browsers,
|
|
@@ -36,9 +35,21 @@ const projects = (0, _configUtils.getProjects)({
|
|
|
36
35
|
});
|
|
37
36
|
// const testDir = getTestDir(bddMode, process.cwd(), { featureFilesFolder, stepDefinitionsFolder });
|
|
38
37
|
const testDir = _path.default.resolve(process.cwd(), 'uat', 'feature-gen');
|
|
38
|
+
const testOptions = (0, _configUtils.getTestUseOptions)({
|
|
39
|
+
trace,
|
|
40
|
+
video,
|
|
41
|
+
viewport,
|
|
42
|
+
testIdAttribute
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Playwright configuration object
|
|
47
|
+
*
|
|
48
|
+
* @returns {import('@playwright/test').PlaywrightTestConfig}
|
|
49
|
+
*/
|
|
39
50
|
function getPlaywrightConfig() {
|
|
40
51
|
globalThis.globalStepMap = new Map();
|
|
41
|
-
(0,
|
|
52
|
+
(0, _index.stepFileMap)();
|
|
42
53
|
(0, _testDataMap.testDataCreation)().then(inputs => {
|
|
43
54
|
globalThis.globalTestdata = inputs;
|
|
44
55
|
});
|
|
@@ -52,27 +63,22 @@ function getPlaywrightConfig() {
|
|
|
52
63
|
reporter: [['html', {
|
|
53
64
|
outputFolder: reportPath,
|
|
54
65
|
open: openReportOn
|
|
55
|
-
}]],
|
|
66
|
+
}], ['list'], ['./custom-reporter.js']],
|
|
56
67
|
timeout: testTimeout,
|
|
57
68
|
expect: {
|
|
58
69
|
timeout: expectTimeout
|
|
59
70
|
},
|
|
60
|
-
use:
|
|
61
|
-
viewport,
|
|
62
|
-
trace: trace ? 'on' : 'off',
|
|
63
|
-
video: video ? {
|
|
64
|
-
mode: 'on',
|
|
65
|
-
size: {
|
|
66
|
-
...viewport
|
|
67
|
-
}
|
|
68
|
-
} : 'off'
|
|
69
|
-
},
|
|
71
|
+
use: testOptions,
|
|
70
72
|
projects: isAuthMode ? [{
|
|
71
73
|
name: 'setup',
|
|
72
74
|
testMatch: /.*\.setup\.js/,
|
|
75
|
+
testDir: _path.default.join(process.cwd(), 'uat'),
|
|
76
|
+
teardown: 'cleanup'
|
|
77
|
+
}, {
|
|
78
|
+
name: 'cleanup',
|
|
79
|
+
testMatch: /.*\.teardown\.js/,
|
|
73
80
|
testDir: _path.default.join(process.cwd(), 'uat')
|
|
74
81
|
}, ...projects] : [...projects]
|
|
75
82
|
};
|
|
76
83
|
}
|
|
77
|
-
var _default = (0, _test.defineConfig)(getPlaywrightConfig());
|
|
78
|
-
exports.default = _default;
|
|
84
|
+
var _default = exports.default = (0, _test.defineConfig)(getPlaywrightConfig());
|