@zohodesk/testinglibrary 0.0.5 → 0.0.6
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 +19 -0
- package/.eslintrc.js +27 -0
- package/.prettierrc +6 -0
- package/{changelog.md → Changelog.md} +38 -25
- package/README.md +17 -17
- package/bin/cli.js +2 -2
- package/bin/postinstall.js +1 -16
- package/build/bdd-framework/cli/commands/env.js +43 -0
- package/build/bdd-framework/cli/commands/export.js +48 -0
- package/build/bdd-framework/cli/commands/test.js +59 -0
- package/build/bdd-framework/cli/index.js +11 -0
- package/build/bdd-framework/cli/options.js +20 -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 +91 -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 +22 -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 +160 -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 +41 -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 +34 -0
- package/build/bdd-framework/run/bddFixtures.js +108 -0
- package/build/bdd-framework/run/bddWorld.js +87 -0
- package/build/bdd-framework/snippets/index.js +131 -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 +109 -0
- package/build/bdd-framework/stepDefinitions/decorators/poms.js +50 -0
- package/build/bdd-framework/stepDefinitions/decorators/steps.js +94 -0
- package/build/bdd-framework/stepDefinitions/defineStep.js +61 -0
- package/build/bdd-framework/stepDefinitions/stepConfig.js +24 -0
- package/build/bdd-framework/utils/index.js +50 -0
- package/build/bdd-framework/utils/jsStringWrap.js +44 -0
- package/build/bdd-framework/utils/logger.js +29 -0
- package/build/core/jest/preprocessor/jsPreprocessor.js +13 -0
- package/{src → build}/core/jest/runner/jest-runner.js +46 -44
- package/build/core/jest/setup/index.js +9 -0
- package/build/core/playwright/codegen.js +55 -0
- package/build/core/playwright/custom-commands.js +8 -0
- package/build/core/playwright/env-initializer.js +21 -0
- package/{src → build}/core/playwright/index.js +112 -82
- package/build/core/playwright/readConfigFile.js +69 -0
- package/build/core/playwright/report-generator.js +41 -0
- package/build/core/playwright/setup/config-creator.js +117 -0
- package/build/core/playwright/test-runner.js +132 -0
- package/build/decorators.d.ts +1 -0
- package/build/decorators.js +16 -0
- package/build/index.d.ts +5 -0
- package/build/index.js +59 -0
- package/build/lib/cli.js +54 -0
- package/build/lib/post-install.js +17 -0
- package/build/lint/index.js +4 -0
- package/build/parser/parser.js +206 -0
- package/build/parser/sample.feature +34 -0
- package/build/parser/sample.spec.js +37 -0
- package/build/parser/verifier.js +130 -0
- package/build/setup-folder-structure/samples/auth-setup-sample.js +72 -0
- package/build/setup-folder-structure/samples/authUsers-sample.json +9 -0
- package/build/setup-folder-structure/samples/env-config-sample.json +21 -0
- package/build/setup-folder-structure/samples/git-ignore.sample.js +33 -0
- package/build/setup-folder-structure/samples/uat-config-sample.js +35 -0
- package/build/setup-folder-structure/setupProject.js +100 -0
- package/{src → build}/utils/cliArgsToObject.js +65 -63
- package/build/utils/fileUtils.js +53 -0
- package/build/utils/getFilePath.js +11 -0
- package/build/utils/logger.js +58 -0
- package/build/utils/rootPath.js +46 -0
- package/build/utils/stepDefinitionsFormatter.js +12 -0
- package/jest.config.js +63 -63
- package/npm-shrinkwrap.json +8790 -5772
- package/package.json +51 -30
- package/playwright.config.js +112 -112
- 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/readConfigFile.js +0 -63
- package/src/core/playwright/report-generator.js +0 -45
- package/src/core/playwright/setup/config-creator.js +0 -77
- package/src/core/playwright/test-runner.js +0 -67
- package/src/index.js +0 -9
- package/src/lib/cli.js +0 -42
- package/src/setup-folder-structure/env-config-sample.json +0 -17
- package/src/setup-folder-structure/setupProject.js +0 -99
- package/src/setup-folder-structure/uat-config-sample.js +0 -22
- package/src/setup-folder-structure/user-example.json +0 -3
- package/src/utils/getFilePath.js +0 -9
- package/src/utils/logger.js +0 -28
- package/src/utils/rootPath.js +0 -51
|
@@ -1,82 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
// }
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
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
|
-
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
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
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "expect", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _test.expect;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
exports.test = void 0;
|
|
20
|
+
var _bddFramework = require("../../bdd-framework");
|
|
21
|
+
var _test = require("@playwright/test");
|
|
22
|
+
var _readConfigFile = require("./readConfigFile");
|
|
23
|
+
// function test(descrition, callback) {
|
|
24
|
+
// return test(descrition, ({ page }) => {
|
|
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
|
+
// }
|
|
40
|
+
|
|
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
|
+
const {
|
|
54
|
+
additionalPages = {},
|
|
55
|
+
bddMode
|
|
56
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
57
|
+
let base = bddMode ? _bddFramework.test : _test.test;
|
|
58
|
+
const test = base.extend({
|
|
59
|
+
page: async ({
|
|
60
|
+
page
|
|
61
|
+
}, use) => {
|
|
62
|
+
// const proxyPage = new Proxy(page, {
|
|
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
|
|
103
|
+
});
|
|
104
|
+
exports.test = test;
|
|
105
|
+
const {
|
|
106
|
+
Given,
|
|
107
|
+
When,
|
|
108
|
+
Then
|
|
109
|
+
} = (0, _bddFramework.createBdd)();
|
|
110
|
+
exports.Then = Then;
|
|
111
|
+
exports.When = When;
|
|
112
|
+
exports.Given = Given;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.fileName = void 0;
|
|
8
|
+
exports.generateConfigFromFile = generateConfigFromFile;
|
|
9
|
+
exports.getAuthFilePath = getAuthFilePath;
|
|
10
|
+
exports.isUserConfigFileAvailable = isUserConfigFileAvailable;
|
|
11
|
+
var _fs = require("fs");
|
|
12
|
+
var _path = _interopRequireDefault(require("path"));
|
|
13
|
+
var _logger = require("../../utils/logger");
|
|
14
|
+
const fileName = 'uat.config.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Represents the user configuration object.
|
|
18
|
+
* @typedef {Object} UserConfig
|
|
19
|
+
* @property {string} headless - Headless Browsers mode.
|
|
20
|
+
* @property {number} trace - trace for test cases.
|
|
21
|
+
* @property {boolean} video - video for test cases,
|
|
22
|
+
* @property {boolean} debug - debug mode
|
|
23
|
+
* @property {string} mode: mode in which the test cases needs to run
|
|
24
|
+
* @property {boolean} isAuthMode - Auth Mode
|
|
25
|
+
* @property {string} authFilePath - File Path where the cookies stored
|
|
26
|
+
* @property {any} browsers: List of browsers
|
|
27
|
+
* @property {string} openReportOn: default Option value (never, on-failure and always)
|
|
28
|
+
* @property {any} reportPath : directory where report is generate
|
|
29
|
+
* @property {boolean} bddMode: Feature files needs to be processed
|
|
30
|
+
* @property {number} expectTimeout: time in milliseconds which the expect condition should fail
|
|
31
|
+
* @property {number} testTimeout: time in milliseconds which the test should fail
|
|
32
|
+
* @property {Object} additionalPages: custom pages configuration
|
|
33
|
+
* @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
|
|
34
|
+
* @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Generates a configuration object from a file, if it exists.
|
|
39
|
+
*
|
|
40
|
+
* @returns {UserConfig}
|
|
41
|
+
*/
|
|
42
|
+
exports.fileName = fileName;
|
|
43
|
+
function generateConfigFromFile() {
|
|
44
|
+
const filePath = _path.default.resolve(process.cwd(), fileName);
|
|
45
|
+
if ((0, _fs.existsSync)(filePath)) {
|
|
46
|
+
/** @type {UserConfig} */
|
|
47
|
+
const config = require(filePath);
|
|
48
|
+
return config;
|
|
49
|
+
}
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
function isUserConfigFileAvailable() {
|
|
53
|
+
const filePath = _path.default.resolve(process.cwd(), fileName);
|
|
54
|
+
if ((0, _fs.existsSync)(filePath)) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
function getAuthFilePath(filePath) {
|
|
60
|
+
try {
|
|
61
|
+
if ((0, _fs.existsSync)(filePath)) {
|
|
62
|
+
return filePath;
|
|
63
|
+
} else {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
} catch (err) {
|
|
67
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Founded Path - ${filePath} Authetication file not Exist ...`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = generateReport;
|
|
8
|
+
var _child_process = require("child_process");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _logger = require("../../utils/logger");
|
|
11
|
+
var _rootPath = require("../../utils/rootPath");
|
|
12
|
+
var _readConfigFile = require("./readConfigFile");
|
|
13
|
+
const userArgs = process.argv.slice(3);
|
|
14
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
15
|
+
const command = playwrightPath;
|
|
16
|
+
const {
|
|
17
|
+
reportPath: htmlPath = _path.default.resolve(process.cwd(), 'uat', './playwright-report')
|
|
18
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
19
|
+
const args = ['show-report', htmlPath].concat(userArgs);
|
|
20
|
+
function generateReport() {
|
|
21
|
+
const childProcess = (0, _child_process.spawn)(command, args, {
|
|
22
|
+
stdio: 'inherit'
|
|
23
|
+
});
|
|
24
|
+
childProcess.on('error', error => {
|
|
25
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, error);
|
|
26
|
+
});
|
|
27
|
+
childProcess.on('exit', (code, signal) => {
|
|
28
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Child Process Exited with Code ${code} and Signal ${signal}`);
|
|
29
|
+
process.exit();
|
|
30
|
+
});
|
|
31
|
+
process.on('exit', () => {
|
|
32
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Terminating Playwright Process...');
|
|
33
|
+
childProcess.kill();
|
|
34
|
+
return;
|
|
35
|
+
});
|
|
36
|
+
process.on('SIGINT', () => {
|
|
37
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Cleaning up...');
|
|
38
|
+
childProcess.kill();
|
|
39
|
+
process.exit();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
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 _test = require("@playwright/test");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _bddFramework = require("../../../bdd-framework");
|
|
11
|
+
var _readConfigFile = require("../readConfigFile");
|
|
12
|
+
// @ts-check
|
|
13
|
+
|
|
14
|
+
// import { cpus } from 'os';
|
|
15
|
+
// const numOfCpus = cpus().length;
|
|
16
|
+
const defaultBrowser = ['Chrome'];
|
|
17
|
+
const {
|
|
18
|
+
browsers = defaultBrowser,
|
|
19
|
+
trace = false,
|
|
20
|
+
video = false,
|
|
21
|
+
isAuthMode,
|
|
22
|
+
openReportOn,
|
|
23
|
+
reportPath = _path.default.join(process.cwd(), 'uat', 'playwright-report'),
|
|
24
|
+
bddMode = false,
|
|
25
|
+
expectTimeout = 5 * 1000,
|
|
26
|
+
testTimeout = 60 * 1000,
|
|
27
|
+
authFilePath = 'uat/playwright/.auth/user.json'
|
|
28
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
29
|
+
let projects = browsers.map(browserName => {
|
|
30
|
+
let browser = browserName.toLowerCase();
|
|
31
|
+
if (browser === 'chrome') {
|
|
32
|
+
return {
|
|
33
|
+
name: 'chromium',
|
|
34
|
+
use: {
|
|
35
|
+
..._test.devices['Desktop Chrome'],
|
|
36
|
+
storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
|
|
37
|
+
},
|
|
38
|
+
dependencies: isAuthMode ? ['setup'] : []
|
|
39
|
+
};
|
|
40
|
+
} else if (browser === 'edge') {
|
|
41
|
+
return {
|
|
42
|
+
name: 'Microsoft Edge',
|
|
43
|
+
use: {
|
|
44
|
+
..._test.devices['Desktop Chrome'],
|
|
45
|
+
channel: 'msedge',
|
|
46
|
+
storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
|
|
47
|
+
},
|
|
48
|
+
dependencies: isAuthMode ? ['setup'] : []
|
|
49
|
+
};
|
|
50
|
+
} else if (browser === 'firefox') {
|
|
51
|
+
return {
|
|
52
|
+
name: 'firefox',
|
|
53
|
+
timeout: 4 * 60 * 1000,
|
|
54
|
+
expect: {
|
|
55
|
+
timeout: 80 * 1000
|
|
56
|
+
},
|
|
57
|
+
use: {
|
|
58
|
+
..._test.devices['Desktop Firefox'],
|
|
59
|
+
storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
|
|
60
|
+
},
|
|
61
|
+
dependencies: isAuthMode ? ['setup'] : []
|
|
62
|
+
};
|
|
63
|
+
} else if (browser === 'safari') {
|
|
64
|
+
return {
|
|
65
|
+
name: 'webkit',
|
|
66
|
+
timeout: 2 * 60 * 1000,
|
|
67
|
+
expect: {
|
|
68
|
+
timeout: 80 * 1000
|
|
69
|
+
},
|
|
70
|
+
use: {
|
|
71
|
+
..._test.devices['Desktop Safari'],
|
|
72
|
+
storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
|
|
73
|
+
},
|
|
74
|
+
dependencies: isAuthMode ? ['setup'] : null
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}).filter(Boolean);
|
|
78
|
+
const testPath = _path.default.join(_path.default.resolve(process.cwd()), 'uat');
|
|
79
|
+
const testDir = bddMode ? (0, _bddFramework.defineBddConfig)({
|
|
80
|
+
paths: [`${testPath}/**/*.feature`],
|
|
81
|
+
import: [`${testPath}/**/steps/*.spec.js`],
|
|
82
|
+
featuresRoot: `${testPath}`,
|
|
83
|
+
outputDir: `${testPath}/.features-gen`,
|
|
84
|
+
publish: true
|
|
85
|
+
}) : _path.default.join(_path.default.resolve(process.cwd()), 'uat');
|
|
86
|
+
var _default = (0, _test.defineConfig)({
|
|
87
|
+
testDir,
|
|
88
|
+
outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
|
|
89
|
+
fullyParallel: true,
|
|
90
|
+
forbidOnly: !!process.env.CI,
|
|
91
|
+
retries: process.env.CI ? 2 : 0,
|
|
92
|
+
workers: process.env.CI ? 1 : 1,
|
|
93
|
+
reporter: [['html', {
|
|
94
|
+
outputFolder: reportPath,
|
|
95
|
+
open: openReportOn
|
|
96
|
+
}]],
|
|
97
|
+
timeout: testTimeout,
|
|
98
|
+
expect: {
|
|
99
|
+
timeout: expectTimeout
|
|
100
|
+
},
|
|
101
|
+
use: {
|
|
102
|
+
trace: trace ? 'on' : 'off',
|
|
103
|
+
video: video ? {
|
|
104
|
+
mode: 'on',
|
|
105
|
+
size: {
|
|
106
|
+
width: 640,
|
|
107
|
+
height: 480
|
|
108
|
+
}
|
|
109
|
+
} : 'off'
|
|
110
|
+
},
|
|
111
|
+
projects: isAuthMode ? [{
|
|
112
|
+
name: 'setup',
|
|
113
|
+
testMatch: /.*\.setup\.js/,
|
|
114
|
+
testDir: _path.default.join(_path.default.resolve(process.cwd()), 'uat')
|
|
115
|
+
}, ...projects] : [...projects]
|
|
116
|
+
});
|
|
117
|
+
exports.default = _default;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = createTestRunner;
|
|
8
|
+
var _child_process = require("child_process");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _customCommands = require("./custom-commands");
|
|
11
|
+
var _cliArgsToObject = require("../../utils/cliArgsToObject");
|
|
12
|
+
var _envInitializer = require("./env-initializer");
|
|
13
|
+
var _logger = require("../../utils/logger");
|
|
14
|
+
var _readConfigFile = require("./readConfigFile");
|
|
15
|
+
var _rootPath = require("../../utils/rootPath");
|
|
16
|
+
function createTestRunner() {
|
|
17
|
+
// Access the command line arguments
|
|
18
|
+
const userArgs = process.argv.slice(2);
|
|
19
|
+
const userArgsObject = (0, _cliArgsToObject.cliArgsToObject)(userArgs);
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line
|
|
22
|
+
const tagArgs = userArgsObject['tags'];
|
|
23
|
+
const {
|
|
24
|
+
debug,
|
|
25
|
+
mode = 'dev',
|
|
26
|
+
bddMode = false,
|
|
27
|
+
headless = false
|
|
28
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
29
|
+
|
|
30
|
+
// Environment variables Initialization
|
|
31
|
+
(0, _envInitializer.initializeEnvConfig)(userArgsObject.mode ? userArgsObject.mode : mode);
|
|
32
|
+
const playwrightArgs = (0, _cliArgsToObject.objectToCliArgs)(userArgsObject, key => !_customCommands.CUSTOM_COMMANDS.includes(key));
|
|
33
|
+
if (debug) {
|
|
34
|
+
playwrightArgs.push('--debug');
|
|
35
|
+
}
|
|
36
|
+
if (tagArgs) {
|
|
37
|
+
playwrightArgs.push(`--grep ${tagArgs}`);
|
|
38
|
+
}
|
|
39
|
+
if (!headless && !userArgsObject.headed) {
|
|
40
|
+
playwrightArgs.push('--headed');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// ZDTetsting test --tags=@live
|
|
44
|
+
// Command and arguments for npx playwright test
|
|
45
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
46
|
+
const command = playwrightPath;
|
|
47
|
+
|
|
48
|
+
// npm run bddgen && npm run playwright test
|
|
49
|
+
|
|
50
|
+
const configPath = (0, _readConfigFile.isUserConfigFileAvailable)() ? require.resolve('./setup/config-creator.js') : require.resolve('../../../playwright.config.js');
|
|
51
|
+
const args = ['test', '--config', configPath].concat(playwrightArgs);
|
|
52
|
+
// Spawn the child process
|
|
53
|
+
|
|
54
|
+
let promises = [];
|
|
55
|
+
if (bddMode) {
|
|
56
|
+
const beforeCommand = 'node';
|
|
57
|
+
const bddGenPath = _path.default.resolve(_path.default.join(__dirname, '../', '../', 'bdd-framework', 'cli', 'index.js'));
|
|
58
|
+
const beforeArgs = [bddGenPath, '-c', configPath];
|
|
59
|
+
const preprocessingPromise = new Promise((resolve, reject) => {
|
|
60
|
+
const childProcessForPreprocessing = (0, _child_process.spawn)(beforeCommand, beforeArgs, {
|
|
61
|
+
stdio: 'inherit'
|
|
62
|
+
});
|
|
63
|
+
childProcessForPreprocessing.on('error', data => {
|
|
64
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, data);
|
|
65
|
+
reject();
|
|
66
|
+
});
|
|
67
|
+
childProcessForPreprocessing.on('exit', code => {
|
|
68
|
+
if (code === 0) {
|
|
69
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Feature Files Processed Successfully');
|
|
70
|
+
resolve();
|
|
71
|
+
} else {
|
|
72
|
+
reject(`BddGen exited with code ${code}`);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
promises.push(preprocessingPromise);
|
|
77
|
+
} else {
|
|
78
|
+
const beforeCommand = 'node';
|
|
79
|
+
const bddGenPath = _path.default.resolve(_path.default.join(__dirname, '../', '../', 'parser', 'verifier.js'));
|
|
80
|
+
const beforeArgs = [bddGenPath];
|
|
81
|
+
const preprocessingPromise = new Promise((resolve, reject) => {
|
|
82
|
+
const childProcessForPreprocessing = (0, _child_process.spawn)(beforeCommand, beforeArgs);
|
|
83
|
+
|
|
84
|
+
// Handle the output and errors for the first command
|
|
85
|
+
childProcessForPreprocessing.stdout.on('data', data => {
|
|
86
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, data);
|
|
87
|
+
});
|
|
88
|
+
childProcessForPreprocessing.stderr.on('data', data => {
|
|
89
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, data);
|
|
90
|
+
reject();
|
|
91
|
+
});
|
|
92
|
+
childProcessForPreprocessing.on('close', code => {
|
|
93
|
+
if (code === 0) {
|
|
94
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Feature Files Processed Successfully');
|
|
95
|
+
resolve();
|
|
96
|
+
} else {
|
|
97
|
+
reject(`Preprocessing exited with code ${code}`);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
promises.push(preprocessingPromise);
|
|
102
|
+
}
|
|
103
|
+
Promise.all(promises).then(() => {
|
|
104
|
+
const childProcessForRunningPlaywright = (0, _child_process.spawn)(command, args, {
|
|
105
|
+
stdio: 'inherit'
|
|
106
|
+
});
|
|
107
|
+
childProcessForRunningPlaywright.on('error', error => {
|
|
108
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, error);
|
|
109
|
+
});
|
|
110
|
+
childProcessForRunningPlaywright.on('exit', (code, signal) => {
|
|
111
|
+
if (code !== 0) {
|
|
112
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Child Process Exited with Code ${code} and Signal ${signal}`);
|
|
113
|
+
} else {
|
|
114
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Test Ran Successfully');
|
|
115
|
+
}
|
|
116
|
+
process.exit();
|
|
117
|
+
});
|
|
118
|
+
process.on('exit', () => {
|
|
119
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Terminating Playwright Process...');
|
|
120
|
+
//childProcess.kill();
|
|
121
|
+
return;
|
|
122
|
+
});
|
|
123
|
+
process.on('SIGINT', () => {
|
|
124
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Cleaning up...');
|
|
125
|
+
//childProcess.kill();
|
|
126
|
+
process.exit();
|
|
127
|
+
});
|
|
128
|
+
}).catch(err => {
|
|
129
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, err);
|
|
130
|
+
process.exit();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './bdd-framework/decorators';
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
});
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Given, Then, When, Step, expect, test, createBdd } from './core/playwright/index';
|
|
2
|
+
import { fireEvent, render } from '@testing-library/react';
|
|
3
|
+
|
|
4
|
+
export { Given, Then, When, Step, expect, test, createBdd, fireEvent, render };
|
|
5
|
+
export * from '@playwright/test/types/test';
|
package/build/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.When = exports.Then = exports.Step = exports.Given = void 0;
|
|
7
|
+
Object.defineProperty(exports, "createBdd", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _index.createBdd;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "expect", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _index.expect;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "fireEvent", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return _react.fireEvent;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "render", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _react.render;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "test", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _index.test;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var _index = require("./core/playwright/index");
|
|
38
|
+
var _react = require("@testing-library/react");
|
|
39
|
+
// const { expect, test, createBdd } = require('./core/playwright/index');
|
|
40
|
+
// const { fireEvent, render } = require('@testing-library/react');
|
|
41
|
+
|
|
42
|
+
// module.exports = {
|
|
43
|
+
// expect,
|
|
44
|
+
// test,
|
|
45
|
+
// fireEvent,
|
|
46
|
+
// render,
|
|
47
|
+
// createBdd
|
|
48
|
+
// }
|
|
49
|
+
|
|
50
|
+
const {
|
|
51
|
+
Given,
|
|
52
|
+
Then,
|
|
53
|
+
When,
|
|
54
|
+
Step
|
|
55
|
+
} = (0, _index.createBdd)();
|
|
56
|
+
exports.Step = Step;
|
|
57
|
+
exports.When = When;
|
|
58
|
+
exports.Then = Then;
|
|
59
|
+
exports.Given = Given;
|