@zohodesk/testinglibrary 0.4.3-experimental → 0.4.5-experimental
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/.gitlab-ci.yml +111 -0
- package/README.md +8 -19
- package/build/bdd-framework/cli/commands/env.js +42 -0
- package/build/bdd-framework/cli/commands/export.js +62 -0
- package/build/bdd-framework/cli/commands/test.js +64 -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/configDir.js +35 -0
- package/build/bdd-framework/config/enrichReporterData.js +23 -0
- package/build/bdd-framework/config/env.js +50 -0
- package/build/bdd-framework/config/index.js +94 -0
- package/build/bdd-framework/config/lang.js +14 -0
- package/build/bdd-framework/cucumber/buildStepDefinition.js +43 -0
- package/build/bdd-framework/cucumber/createTestStep.js +43 -0
- package/build/bdd-framework/cucumber/formatter/EventDataCollector.js +126 -0
- package/build/bdd-framework/cucumber/formatter/GherkinDocumentParser.js +72 -0
- package/build/bdd-framework/cucumber/formatter/PickleParser.js +25 -0
- package/build/bdd-framework/cucumber/formatter/durationHelpers.js +13 -0
- package/build/bdd-framework/cucumber/formatter/getColorFns.js +57 -0
- package/build/bdd-framework/cucumber/formatter/index.js +16 -0
- package/build/bdd-framework/cucumber/formatter/locationHelpers.js +16 -0
- package/build/bdd-framework/cucumber/loadConfig.js +17 -0
- package/build/bdd-framework/cucumber/loadFeatures.js +70 -0
- package/build/bdd-framework/cucumber/loadSnippetBuilder.js +20 -0
- package/build/bdd-framework/cucumber/loadSteps.js +47 -0
- package/build/bdd-framework/cucumber/resolveFeaturePaths.js +62 -0
- package/build/bdd-framework/cucumber/stepArguments.js +21 -0
- package/build/bdd-framework/cucumber/types.js +5 -0
- package/build/bdd-framework/cucumber/valueChecker.js +23 -0
- package/build/bdd-framework/decorators.js +18 -0
- package/build/bdd-framework/gen/fixtures.js +48 -0
- package/build/bdd-framework/gen/formatter.js +167 -0
- package/build/bdd-framework/gen/i18n.js +39 -0
- package/build/bdd-framework/gen/index.js +197 -0
- package/build/bdd-framework/gen/specialTags.js +70 -0
- package/build/bdd-framework/gen/testFile.js +470 -0
- package/build/bdd-framework/gen/testMeta.js +60 -0
- package/build/bdd-framework/gen/testNode.js +35 -0
- package/build/bdd-framework/gen/testPoms.js +133 -0
- package/build/bdd-framework/hooks/scenario.js +130 -0
- package/build/bdd-framework/hooks/worker.js +89 -0
- package/build/bdd-framework/index.js +52 -0
- package/build/bdd-framework/playwright/fixtureParameterNames.js +93 -0
- package/build/bdd-framework/playwright/getLocationInFile.js +79 -0
- package/build/bdd-framework/playwright/loadConfig.js +42 -0
- package/build/bdd-framework/playwright/loadUtils.js +33 -0
- package/build/bdd-framework/playwright/testTypeImpl.js +79 -0
- package/build/bdd-framework/playwright/transform.js +88 -0
- package/build/bdd-framework/playwright/types.js +12 -0
- package/build/bdd-framework/playwright/utils.js +56 -0
- package/build/bdd-framework/reporter/cucumber/base.js +52 -0
- package/build/bdd-framework/reporter/cucumber/custom.js +73 -0
- package/build/bdd-framework/reporter/cucumber/helper.js +12 -0
- package/build/bdd-framework/reporter/cucumber/html.js +40 -0
- package/build/bdd-framework/reporter/cucumber/index.js +74 -0
- package/build/bdd-framework/reporter/cucumber/json.js +312 -0
- package/build/bdd-framework/reporter/cucumber/junit.js +205 -0
- package/build/bdd-framework/reporter/cucumber/message.js +20 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/AttachmentMapper.js +82 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +197 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocument.js +43 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocumentClone.js +52 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocuments.js +105 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Hook.js +70 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Meta.js +45 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Pickles.js +27 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Projects.js +38 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCase.js +128 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRun.js +154 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +123 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +67 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +114 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +30 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwStepUtils.js +70 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/timing.js +35 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/types.js +5 -0
- package/build/bdd-framework/run/StepInvoker.js +69 -0
- package/build/bdd-framework/run/bddData/index.js +59 -0
- package/build/bdd-framework/run/bddData/types.js +5 -0
- package/build/bdd-framework/run/bddFixtures.js +192 -0
- package/build/bdd-framework/run/bddWorld.js +79 -0
- package/build/bdd-framework/run/bddWorldInternal.js +11 -0
- package/build/bdd-framework/snippets/index.js +132 -0
- package/build/bdd-framework/snippets/snippetSyntax.js +43 -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 +66 -0
- package/build/bdd-framework/stepDefinitions/decorators/class.js +68 -0
- package/build/bdd-framework/stepDefinitions/decorators/steps.js +99 -0
- package/build/bdd-framework/stepDefinitions/defineStep.js +62 -0
- package/build/bdd-framework/stepDefinitions/stepConfig.js +24 -0
- package/build/bdd-framework/steps/createBdd.js +78 -0
- package/build/bdd-framework/steps/decorators/class.js +68 -0
- package/build/bdd-framework/steps/decorators/steps.js +98 -0
- package/build/bdd-framework/steps/defineStep.js +62 -0
- package/build/bdd-framework/steps/stepConfig.js +24 -0
- package/build/bdd-framework/utils/AutofillMap.js +20 -0
- package/build/bdd-framework/utils/exit.js +62 -0
- package/build/bdd-framework/utils/index.js +93 -0
- package/build/bdd-framework/utils/jsStringWrap.js +44 -0
- package/build/bdd-framework/utils/logger.js +30 -0
- package/build/bdd-framework/utils/stripAnsiEscapes.js +20 -0
- package/build/core/playwright/configuration/Configuration.js +3 -0
- package/build/core/playwright/configuration/ConfigurationHelper.js +2 -9
- package/build/core/playwright/env-initializer.js +0 -1
- package/build/core/playwright/helpers/auth/getUsers.js +34 -35
- package/build/core/playwright/helpers/configFileNameProvider.js +9 -3
- package/build/core/playwright/index.js +23 -10
- package/build/core/playwright/readConfigFile.js +22 -22
- package/build/core/playwright/setup/config-creator.js +9 -8
- package/build/core/playwright/setup/config-utils.js +25 -8
- package/build/core/playwright/test-runner.js +7 -5
- package/build/core/playwright/validateFeature.js +58 -0
- package/build/decorators.d.ts +1 -1
- package/build/decorators.js +1 -1
- package/build/lib/cli.js +6 -0
- package/build/test/core/playwright/__tests__/validateFeature.test.js +64 -0
- package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +34 -0
- package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +80 -0
- package/build/utils/cliArgsToObject.js +3 -0
- package/jest.config.js +18 -8
- package/nobdd/README.md +1 -0
- package/nobdd/package.json +17 -0
- package/nobdd/src/App.js +7 -0
- package/nobdd/uat/conf/default/actors/beta/custom-module.json +24 -0
- package/nobdd/uat/conf/default/actors/beta/index.js +6 -0
- package/nobdd/uat/conf/default/actors/beta/parent-child.json +24 -0
- package/nobdd/uat/conf/default/actors/editions/enterprise.json +24 -0
- package/nobdd/uat/conf/default/actors/editions/index.js +4 -0
- package/nobdd/uat/conf/default/actors/index.js +5 -0
- package/nobdd/uat/conf/default/settings.json +6 -0
- package/nobdd/uat/conf/nobdd/uat.config.js +28 -0
- package/nobdd/uat/env-config.json +20 -0
- package/nobdd/uat/fixtures/auth.setup.js +44 -0
- package/nobdd/uat/fixtures/setup.teardown.js +32 -0
- package/nobdd/uat/modules/nobdd/steps/VerifyNoBDD.feature.spec.js +16 -0
- package/nobdd/uat/shared/commands/_index-custom-fixtures.js +9 -0
- package/nobdd/uat/shared/commands/i18n.js +25 -0
- package/nobdd/uat/shared/commands/unauthenticatedPage.js +8 -0
- package/nobdd/uat/shared/index.js +7 -0
- package/nobdd/uat/shared/onboardings/onboardingUpdate.js +44 -0
- package/nobdd/uat/shared/url-helpers/getUrlOrigin.js +6 -0
- package/nobdd/uat.config.js +30 -0
- package/npm-shrinkwrap.json +2179 -5830
- package/package.json +8 -7
- package/playwright.config.js +1 -1
- package/build/core/playwright/fixtures.js +0 -24
|
@@ -33,12 +33,17 @@ function getDefaultActorConf() {
|
|
|
33
33
|
const {
|
|
34
34
|
uatDirectory
|
|
35
35
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
36
|
-
const
|
|
37
|
-
const filePath = _path.default.join(uatDirectory,
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const modeSettingsFile = `conf/${getRunMode()}/settings.json`;
|
|
37
|
+
const filePath = _path.default.join(uatDirectory, modeSettingsFile);
|
|
38
|
+
try {
|
|
39
|
+
if (!(0, _fs.existsSync)(filePath)) {
|
|
40
|
+
const defaultSettingsFile = _path.default.join(uatDirectory, `conf/default/settings.json`);
|
|
41
|
+
return require(defaultSettingsFile);
|
|
42
|
+
}
|
|
43
|
+
return require(filePath);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
throw new Error(`${defaultSettingFile} ${filePath} both files are missing.`);
|
|
40
46
|
}
|
|
41
|
-
return require(filePath);
|
|
42
47
|
}
|
|
43
48
|
function getDefaultActor() {
|
|
44
49
|
const {
|
|
@@ -47,51 +52,45 @@ function getDefaultActor() {
|
|
|
47
52
|
} = getDefaultActorConf();
|
|
48
53
|
return getUserForSelectedEditionAndProfile(edition, profile);
|
|
49
54
|
}
|
|
50
|
-
function getListOfActors() {
|
|
55
|
+
function getListOfActors(betaFeature) {
|
|
51
56
|
const {
|
|
52
57
|
uatDirectory
|
|
53
58
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
54
59
|
const mode = getRunMode();
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!(0, _fs.existsSync)(
|
|
58
|
-
|
|
60
|
+
let configFile = _path.default.join(uatDirectory, `conf/${mode}/actors/index.js`);
|
|
61
|
+
let betaReference = mode;
|
|
62
|
+
if (!(0, _fs.existsSync)(configFile)) {
|
|
63
|
+
configFile = _path.default.join(uatDirectory, `conf/default/actors/index.js`);
|
|
64
|
+
betaReference = "default";
|
|
65
|
+
}
|
|
66
|
+
if (betaFeature) {
|
|
67
|
+
configFile = _path.default.join(uatDirectory, `conf/${betaReference}/actors/beta/${betaFeature}/index.js`);
|
|
68
|
+
if (!(0, _fs.existsSync)(configFile)) {
|
|
69
|
+
throw new Error(`There is no beta feature configured with the name "${betaFeature}"`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
return require(configFile);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
throw new Error(`Error loading actor configuration from ${configFile}`);
|
|
59
76
|
}
|
|
60
|
-
return require(filePath);
|
|
61
77
|
}
|
|
62
78
|
function getUserForSelectedEditionAndProfile(preferedEdition, preferredProfile, betaFeature, testDataPortal = null) {
|
|
79
|
+
const actorsData = getListOfActors(betaFeature);
|
|
80
|
+
if (!actorsData || !actorsData.editions) {
|
|
81
|
+
throw new Error("The actors data is missing.");
|
|
82
|
+
}
|
|
63
83
|
const {
|
|
64
|
-
editions: userdata
|
|
65
|
-
|
|
66
|
-
} = getListOfActors();
|
|
84
|
+
editions: userdata
|
|
85
|
+
} = actorsData;
|
|
67
86
|
const defaultConf = getDefaultActorConf();
|
|
68
87
|
const edition = preferedEdition || defaultConf.edition;
|
|
69
88
|
const profile = preferredProfile || defaultConf.profile;
|
|
70
89
|
let selectedProfile = {};
|
|
71
|
-
if (betaFeature && betaFeature !== null) {
|
|
72
|
-
if (!betaPortals.hasOwnProperty(betaFeature)) {
|
|
73
|
-
throw new Error(`There is no "${betaFeature}" beta feature configured.`);
|
|
74
|
-
}
|
|
75
|
-
const betaEdition = betaPortals[betaFeature].find(portal => portal.edition === edition);
|
|
76
|
-
if (!betaEdition) {
|
|
77
|
-
throw new Error(`There is no "${edition}" edition configured in "${betaFeature}" beta feature.`);
|
|
78
|
-
}
|
|
79
|
-
const {
|
|
80
|
-
profiles: betaProfiles,
|
|
81
|
-
...betaEditionData
|
|
82
|
-
} = betaEdition;
|
|
83
|
-
selectedProfile = betaProfiles.find(user => user.profile === profile);
|
|
84
|
-
if (!selectedProfile) {
|
|
85
|
-
throw new Error(`There is no "${profile}" configured in edition of "${edition}" in "${betaFeature}" beta features.`);
|
|
86
|
-
}
|
|
87
|
-
return {
|
|
88
|
-
...betaEditionData,
|
|
89
|
-
...selectedProfile
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
90
|
|
|
93
91
|
// TODO: We are returning the first data from array. We need to check the possiblity of having multiple users for same profile and possibly round robin
|
|
94
92
|
// For this we need to get the data from ci environment.
|
|
93
|
+
|
|
95
94
|
let testingPortal = null;
|
|
96
95
|
if (!userdata.hasOwnProperty(edition)) {
|
|
97
96
|
throw new Error(`There is no "${edition}" edition configured.`);
|
|
@@ -9,8 +9,14 @@ exports.getReportFileName = getReportFileName;
|
|
|
9
9
|
exports.getUATFileName = getUATFileName;
|
|
10
10
|
var _path = _interopRequireDefault(require("path"));
|
|
11
11
|
var _fs = _interopRequireDefault(require("fs"));
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
var _auth = require("./auth");
|
|
13
|
+
function getUATFileName(mode) {
|
|
14
|
+
mode = mode || (0, _auth.getRunMode)();
|
|
15
|
+
const uatConfFilePath = _path.default.resolve(process.cwd(), `uat/conf/${mode}/uat.config.js`);
|
|
16
|
+
if (_fs.default.existsSync(uatConfFilePath)) {
|
|
17
|
+
return uatConfFilePath;
|
|
18
|
+
}
|
|
19
|
+
return _path.default.resolve(process.cwd(), `uat.config.js`);
|
|
14
20
|
}
|
|
15
21
|
function getEnvConfigFilePath(mode) {
|
|
16
22
|
const confFilePath = _path.default.resolve(process.cwd(), `uat/conf/${mode}/settings.json`);
|
|
@@ -18,7 +24,7 @@ function getEnvConfigFilePath(mode) {
|
|
|
18
24
|
if (_fs.default.existsSync(confFilePath)) {
|
|
19
25
|
return `uat/conf/${mode}/settings.json`;
|
|
20
26
|
}
|
|
21
|
-
return `uat/
|
|
27
|
+
return `uat/conf/default/settings.json`;
|
|
22
28
|
}
|
|
23
29
|
function getReportFileName() {
|
|
24
30
|
return `test-summary.json`;
|
|
@@ -1,24 +1,37 @@
|
|
|
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
|
|
7
|
-
Object.defineProperty(exports, "expect", {
|
|
7
|
+
Object.defineProperty(exports, "createBdd", {
|
|
8
8
|
enumerable: true,
|
|
9
9
|
get: function () {
|
|
10
|
-
return
|
|
10
|
+
return _bddFramework.createBdd;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
Object.defineProperty(exports, "
|
|
13
|
+
Object.defineProperty(exports, "expect", {
|
|
14
14
|
enumerable: true,
|
|
15
15
|
get: function () {
|
|
16
|
-
return
|
|
16
|
+
return _test.expect;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
|
|
19
|
+
exports.test = void 0;
|
|
20
|
+
var _bddFramework = require("../../bdd-framework");
|
|
20
21
|
var _test = require("@playwright/test");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
var _readConfigFile = require("./readConfigFile");
|
|
23
|
+
var _builtInFixtures = _interopRequireDefault(require("./builtInFixtures"));
|
|
24
|
+
var _getUserFixtures = _interopRequireDefault(require("./helpers/getUserFixtures"));
|
|
25
|
+
const {
|
|
26
|
+
bddMode
|
|
27
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
28
|
+
let base = bddMode ? _bddFramework.test : _test.test;
|
|
29
|
+
const buildInFixtures = (0, _builtInFixtures.default)(bddMode);
|
|
30
|
+
const buildInFixturesTest = base.extend({
|
|
31
|
+
...buildInFixtures
|
|
32
|
+
});
|
|
33
|
+
const userFixtures = (0, _getUserFixtures.default)();
|
|
34
|
+
const userFixturesTest = base.extend({
|
|
35
|
+
...userFixtures
|
|
36
|
+
});
|
|
37
|
+
const test = exports.test = (0, _test.mergeTests)(buildInFixturesTest, userFixturesTest);
|
|
@@ -13,13 +13,17 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
13
13
|
var _logger = require("../../utils/logger");
|
|
14
14
|
var _configFileNameProvider = require("./helpers/configFileNameProvider");
|
|
15
15
|
var _mergeObjects = require("./helpers/mergeObjects");
|
|
16
|
-
var _Configuration = require("./configuration/Configuration");
|
|
16
|
+
var _Configuration = _interopRequireDefault(require("./configuration/Configuration"));
|
|
17
|
+
var _UserArgs = _interopRequireDefault(require("./configuration/UserArgs"));
|
|
18
|
+
var _ConfigurationHelper = require("./configuration/ConfigurationHelper");
|
|
17
19
|
let cachedConfig = null;
|
|
18
20
|
function getDefaultConfig() {
|
|
19
21
|
return {
|
|
20
22
|
uatDirectory: _path.default.join(process.cwd(), 'uat'),
|
|
21
23
|
headless: false,
|
|
22
24
|
browsers: ['Chrome'],
|
|
25
|
+
forbidOnly: false,
|
|
26
|
+
retries: 0,
|
|
23
27
|
trace: false,
|
|
24
28
|
video: false,
|
|
25
29
|
isAuthMode: false,
|
|
@@ -34,26 +38,18 @@ function getDefaultConfig() {
|
|
|
34
38
|
height: 720
|
|
35
39
|
},
|
|
36
40
|
debug: false,
|
|
37
|
-
|
|
41
|
+
testIdAttribute: 'data-testid',
|
|
38
42
|
additionalPages: {},
|
|
39
43
|
featureFilesFolder: 'feature-files',
|
|
40
44
|
stepDefinitionsFolder: 'steps',
|
|
41
|
-
testIdAttribute: 'data-testid',
|
|
42
45
|
testSetup: {},
|
|
43
46
|
editionOrder: ['Free', 'Express', 'Standard', 'Professional', 'Enterprise']
|
|
44
47
|
};
|
|
45
48
|
}
|
|
46
|
-
function checkForDeprecatedKeys(configKey) {
|
|
47
|
-
let deprecatedConfigInUatConfigFile = ['mode'];
|
|
48
|
-
if (deprecatedConfigInUatConfigFile.includes(configKey)) {
|
|
49
|
-
_logger.Logger.log(_logger.Logger.INFO_TYPE, `key ${configKey} is deprecated. Please use other options`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
49
|
function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
53
50
|
let defaultConfig = getDefaultConfig();
|
|
54
51
|
let configurationObj = {};
|
|
55
52
|
Object.keys(userConfiguration).forEach(configKey => {
|
|
56
|
-
checkForDeprecatedKeys(configKey);
|
|
57
53
|
let configValue = userConfiguration[configKey];
|
|
58
54
|
if (configValue !== null && configValue !== undefined) {
|
|
59
55
|
configurationObj[configKey] = configValue;
|
|
@@ -112,22 +108,26 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
112
108
|
*
|
|
113
109
|
* @returns {UserConfig}
|
|
114
110
|
*/
|
|
111
|
+
|
|
112
|
+
function getConfigFilePath() {
|
|
113
|
+
return _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
|
|
114
|
+
}
|
|
115
115
|
function generateConfigFromFile() {
|
|
116
|
-
if (cachedConfig
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
116
|
+
if (cachedConfig === null) {
|
|
117
|
+
// Getting the default config's from framework
|
|
118
|
+
const uatConfig = new _Configuration.default(getDefaultConfig());
|
|
119
|
+
// overriding the application config's from project
|
|
120
|
+
const appConfig = new _Configuration.default((0, _ConfigurationHelper.getApplicationConfig)());
|
|
121
|
+
const userArgConfig = new _Configuration.default(_UserArgs.default.parseToObject(process.argv.slice(2)));
|
|
122
|
+
// overriding the user config's from CLI
|
|
123
|
+
uatConfig.addAll(appConfig);
|
|
124
|
+
uatConfig.addAll(userArgConfig);
|
|
125
|
+
cachedConfig = uatConfig.getAll();
|
|
126
126
|
}
|
|
127
|
-
return
|
|
127
|
+
return cachedConfig;
|
|
128
128
|
}
|
|
129
129
|
function isUserConfigFileAvailable() {
|
|
130
|
-
const filePath =
|
|
130
|
+
const filePath = getConfigFilePath();
|
|
131
131
|
if ((0, _fs.existsSync)(filePath)) {
|
|
132
132
|
return true;
|
|
133
133
|
}
|
|
@@ -9,6 +9,7 @@ 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
|
+
const uatConfig = (0, _readConfigFile.generateConfigFromFile)();
|
|
12
13
|
const {
|
|
13
14
|
browsers,
|
|
14
15
|
trace,
|
|
@@ -25,7 +26,7 @@ const {
|
|
|
25
26
|
stepDefinitionsFolder,
|
|
26
27
|
testIdAttribute,
|
|
27
28
|
globalTimeout
|
|
28
|
-
} =
|
|
29
|
+
} = uatConfig;
|
|
29
30
|
const projects = (0, _configUtils.getProjects)({
|
|
30
31
|
browsers,
|
|
31
32
|
isAuthMode,
|
|
@@ -38,12 +39,12 @@ const testDir = (0, _configUtils.getTestDir)(bddMode, process.cwd(), {
|
|
|
38
39
|
featureFilesFolder,
|
|
39
40
|
stepDefinitionsFolder
|
|
40
41
|
});
|
|
41
|
-
const
|
|
42
|
+
const testOptions = (0, _configUtils.getTestUseOptions)({
|
|
42
43
|
trace,
|
|
43
44
|
video,
|
|
44
45
|
viewport,
|
|
45
46
|
testIdAttribute
|
|
46
|
-
};
|
|
47
|
+
});
|
|
47
48
|
|
|
48
49
|
/**
|
|
49
50
|
* Playwright configuration object
|
|
@@ -51,13 +52,11 @@ const use = {
|
|
|
51
52
|
* @returns {import('@playwright/test').PlaywrightTestConfig}
|
|
52
53
|
*/
|
|
53
54
|
function getPlaywrightConfig() {
|
|
54
|
-
|
|
55
|
+
const playwrightConfig = {
|
|
55
56
|
testDir,
|
|
56
57
|
globalTimeout: globalTimeout || 3600000,
|
|
57
58
|
outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
|
|
58
59
|
fullyParallel: true,
|
|
59
|
-
forbidOnly: !!process.env.CI,
|
|
60
|
-
retries: process.env.CI ? 2 : 0,
|
|
61
60
|
reporter: [['html', {
|
|
62
61
|
outputFolder: reportPath,
|
|
63
62
|
open: openReportOn
|
|
@@ -66,7 +65,7 @@ function getPlaywrightConfig() {
|
|
|
66
65
|
expect: {
|
|
67
66
|
timeout: expectTimeout
|
|
68
67
|
},
|
|
69
|
-
use,
|
|
68
|
+
use: testOptions,
|
|
70
69
|
projects: isAuthMode ? [{
|
|
71
70
|
name: 'setup',
|
|
72
71
|
testMatch: /.*\.setup\.js/,
|
|
@@ -76,7 +75,9 @@ function getPlaywrightConfig() {
|
|
|
76
75
|
name: 'cleanup',
|
|
77
76
|
testMatch: /.*\.teardown\.js/,
|
|
78
77
|
testDir: _path.default.join(process.cwd(), 'uat')
|
|
79
|
-
}, ...projects] : [...projects]
|
|
78
|
+
}, ...projects] : [...projects],
|
|
79
|
+
...uatConfig
|
|
80
80
|
};
|
|
81
|
+
return playwrightConfig;
|
|
81
82
|
}
|
|
82
83
|
var _default = exports.default = (0, _test.defineConfig)(getPlaywrightConfig());
|
|
@@ -7,12 +7,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.getBrowsersList = getBrowsersList;
|
|
8
8
|
exports.getProjects = getProjects;
|
|
9
9
|
exports.getTestDir = getTestDir;
|
|
10
|
+
exports.getTestUseOptions = getTestUseOptions;
|
|
10
11
|
var _test = require("@playwright/test");
|
|
11
12
|
var _path = _interopRequireDefault(require("path"));
|
|
12
13
|
var _readConfigFile = require("../readConfigFile");
|
|
13
|
-
var
|
|
14
|
+
var _bddFramework = require("../../../bdd-framework");
|
|
14
15
|
var _logger = require("../../../utils/logger");
|
|
15
16
|
var _browserTypes = require("../constants/browserTypes");
|
|
17
|
+
var _configFileNameProvider = require("../helpers/configFileNameProvider");
|
|
16
18
|
var _fileUtils = require("../../../utils/fileUtils");
|
|
17
19
|
/**
|
|
18
20
|
** Playwright project configuration
|
|
@@ -146,15 +148,30 @@ function getPathsForFeatureFiles(cwd) {
|
|
|
146
148
|
function getTestDir(bddMode, cwd, {
|
|
147
149
|
stepDefinitionsFolder
|
|
148
150
|
}) {
|
|
149
|
-
return bddMode ? (0,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
importTestFrom: require.resolve('../fixtures.js'),
|
|
151
|
+
return bddMode ? (0, _bddFramework.defineBddConfig)({
|
|
152
|
+
paths: getPathsForFeatureFiles(cwd),
|
|
153
|
+
import: [_path.default.join(cwd, 'uat', '**', stepDefinitionsFolder, '*.spec.js')],
|
|
153
154
|
featuresRoot: _path.default.join(cwd, 'uat'),
|
|
154
155
|
outputDir: _path.default.join(cwd, 'uat', '.features-gen'),
|
|
155
|
-
disableWarnings: {
|
|
156
|
-
importTestFrom: true
|
|
157
|
-
},
|
|
158
156
|
publish: true
|
|
159
157
|
}) : _path.default.join(cwd, 'uat');
|
|
158
|
+
}
|
|
159
|
+
function getTestUseOptions({
|
|
160
|
+
viewport,
|
|
161
|
+
trace,
|
|
162
|
+
video,
|
|
163
|
+
testIdAttribute
|
|
164
|
+
}) {
|
|
165
|
+
let defaultTestuseOptions = {
|
|
166
|
+
viewport,
|
|
167
|
+
testIdAttribute,
|
|
168
|
+
trace: trace ? 'on' : 'off',
|
|
169
|
+
video: video ? {
|
|
170
|
+
mode: 'on',
|
|
171
|
+
size: {
|
|
172
|
+
...viewport
|
|
173
|
+
}
|
|
174
|
+
} : 'off'
|
|
175
|
+
};
|
|
176
|
+
return defaultTestuseOptions;
|
|
160
177
|
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
exports.runPreprocessing = runPreprocessing;
|
|
8
9
|
var _child_process = require("child_process");
|
|
9
10
|
var _path = _interopRequireDefault(require("path"));
|
|
10
11
|
var _customCommands = require("./custom-commands");
|
|
@@ -42,7 +43,7 @@ function getPlaywrightArgs(userArgsObject, debug, bddMode, tagArgs, headless) {
|
|
|
42
43
|
}
|
|
43
44
|
function runPreprocessing(tagArgs, configPath) {
|
|
44
45
|
const beforeCommand = 'node';
|
|
45
|
-
const bddGenPath = _path.default.resolve(
|
|
46
|
+
const bddGenPath = _path.default.resolve(__dirname, '../', '../', 'bdd-framework', 'cli', 'index.js');
|
|
46
47
|
const beforeArgs = [bddGenPath, '-c', configPath];
|
|
47
48
|
if (tagArgs) {
|
|
48
49
|
beforeArgs.push('--tags');
|
|
@@ -57,7 +58,7 @@ function runPreprocessing(tagArgs, configPath) {
|
|
|
57
58
|
});
|
|
58
59
|
childProcessForPreprocessing.on('error', data => {
|
|
59
60
|
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, data);
|
|
60
|
-
reject();
|
|
61
|
+
reject(data);
|
|
61
62
|
});
|
|
62
63
|
childProcessForPreprocessing.on('exit', code => {
|
|
63
64
|
if (code === 0) {
|
|
@@ -103,15 +104,16 @@ function main() {
|
|
|
103
104
|
const uatConfig = new _Configuration.default((0, _readConfigFile.getDefaultConfig)());
|
|
104
105
|
|
|
105
106
|
// overriding the application config's from project
|
|
106
|
-
uatConfig.addAll(new _Configuration.default((0, _ConfigurationHelper.getApplicationConfig)()));
|
|
107
107
|
|
|
108
|
-
// overriding the user config's from CLI
|
|
109
108
|
const userArgConfig = new _Configuration.default(_UserArgs.default.parseToObject(process.argv.slice(2)));
|
|
109
|
+
const mode = userArgConfig.get("mode");
|
|
110
|
+
uatConfig.addAll(new _Configuration.default((0, _ConfigurationHelper.getApplicationConfig)(mode)));
|
|
111
|
+
|
|
112
|
+
// overriding the user config's from CLI
|
|
110
113
|
uatConfig.addAll(userArgConfig);
|
|
111
114
|
const {
|
|
112
115
|
isAuthMode,
|
|
113
116
|
editionOrder,
|
|
114
|
-
mode,
|
|
115
117
|
debug,
|
|
116
118
|
bddMode = false,
|
|
117
119
|
headless = false
|
|
@@ -0,0 +1,58 @@
|
|
|
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 _parseUserArgs = _interopRequireDefault(require("./helpers/parseUserArgs"));
|
|
9
|
+
var _readConfigFile = require("./readConfigFile");
|
|
10
|
+
var _tagProcessor = require("./tag-processor");
|
|
11
|
+
var _testRunner = require("./test-runner");
|
|
12
|
+
var _logger = require("../../utils/logger");
|
|
13
|
+
// @cucumber/gherkins need to be includ in package.json
|
|
14
|
+
|
|
15
|
+
// const getFeatureFiles = (dir) => {
|
|
16
|
+
// let featureFiles = [];
|
|
17
|
+
// const files = fs.readdirSync(dir, { withFileTypes: true });
|
|
18
|
+
// files.forEach(file => {
|
|
19
|
+
// const fullPath = path.join(dir, file.name);
|
|
20
|
+
// if (file.isDirectory()) {
|
|
21
|
+
// featureFiles = featureFiles.concat(getFeatureFiles(fullPath));
|
|
22
|
+
// } else if (file.isFile() && fullPath.endsWith('.feature')) {
|
|
23
|
+
// featureFiles.push(fullPath);
|
|
24
|
+
// }
|
|
25
|
+
// });
|
|
26
|
+
// return featureFiles;
|
|
27
|
+
// };
|
|
28
|
+
|
|
29
|
+
//const validateFeatureFiles = () => {
|
|
30
|
+
// const featuresDir = path.join(process.cwd(), 'uat/modules');
|
|
31
|
+
// const parser = new Parser();
|
|
32
|
+
// const featureFiles = getFeatureFiles(featuresDir);
|
|
33
|
+
// featureFiles.forEach( filePath => {
|
|
34
|
+
// const featureFileContent = fs.readFileSync(filePath, 'utf-8');
|
|
35
|
+
// try {
|
|
36
|
+
// parser.parse(featureFileContent);
|
|
37
|
+
// console.log(`${filePath}: Feature file is valid!`);
|
|
38
|
+
// } catch (error) {
|
|
39
|
+
// console.error(`${filePath}: Feature file is invalid - ${error.message}`);
|
|
40
|
+
// }
|
|
41
|
+
// })
|
|
42
|
+
//}
|
|
43
|
+
|
|
44
|
+
const validateFeatureFiles = () => {
|
|
45
|
+
const userArgsObject = (0, _parseUserArgs.default)();
|
|
46
|
+
const uatConfig = (0, _readConfigFile.generateConfigFromFile)();
|
|
47
|
+
const {
|
|
48
|
+
editionOrder
|
|
49
|
+
} = uatConfig;
|
|
50
|
+
const configPath = (0, _readConfigFile.isUserConfigFileAvailable)() ? require.resolve('./setup/config-creator.js') : require.resolve('../../../playwright.config.js');
|
|
51
|
+
const tagArgs = (0, _tagProcessor.tagProcessor)(userArgsObject, editionOrder);
|
|
52
|
+
(0, _testRunner.runPreprocessing)(tagArgs, configPath).then(() => {
|
|
53
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Feature files validated successfully.');
|
|
54
|
+
}).catch(error => {
|
|
55
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Error while validating the feature files - ${error}`);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
var _default = exports.default = validateFeatureFiles;
|
package/build/decorators.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from './bdd-framework/decorators';
|
package/build/decorators.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
var _decorators = require("
|
|
6
|
+
var _decorators = require("./bdd-framework/decorators");
|
|
7
7
|
Object.keys(_decorators).forEach(function (key) {
|
|
8
8
|
if (key === "default" || key === "__esModule") return;
|
|
9
9
|
if (key in exports && exports[key] === _decorators[key]) return;
|
package/build/lib/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ var _parser = require("../parser/parser");
|
|
|
10
10
|
var _clearCaches = _interopRequireDefault(require("../core/playwright/clear-caches"));
|
|
11
11
|
var _helper = _interopRequireDefault(require("../setup-folder-structure/helper"));
|
|
12
12
|
var _parseUserArgs = _interopRequireDefault(require("../core/playwright/helpers/parseUserArgs"));
|
|
13
|
+
var _validateFeature = _interopRequireDefault(require("../core/playwright/validateFeature"));
|
|
13
14
|
// import createJestRunner from '../core/jest/runner/jest-runner';
|
|
14
15
|
|
|
15
16
|
const [,, option, ...otherOptions] = process.argv;
|
|
@@ -21,6 +22,11 @@ switch (option) {
|
|
|
21
22
|
//createJestRunner();
|
|
22
23
|
break;
|
|
23
24
|
}
|
|
25
|
+
case 'validate':
|
|
26
|
+
{
|
|
27
|
+
(0, _validateFeature.default)();
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
24
30
|
case 're-run-failed':
|
|
25
31
|
{
|
|
26
32
|
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Running Failed Tests..');
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _validateFeature = _interopRequireDefault(require("../../../../core/playwright/validateFeature"));
|
|
5
|
+
var _parseUserArgs = _interopRequireDefault(require("../../../../core/playwright/helpers/parseUserArgs"));
|
|
6
|
+
var _readConfigFile = require("../../../../core/playwright/readConfigFile");
|
|
7
|
+
var _tagProcessor = require("../../../../core/playwright/tag-processor");
|
|
8
|
+
var _testRunner = require("../../../../core/playwright/test-runner");
|
|
9
|
+
var _logger = require("../../../../utils/logger");
|
|
10
|
+
jest.mock('../../../../core/playwright/helpers/parseUserArgs', () => ({
|
|
11
|
+
__esModule: true,
|
|
12
|
+
default: jest.fn()
|
|
13
|
+
}));
|
|
14
|
+
jest.mock('../../../../core/playwright/readConfigFile');
|
|
15
|
+
jest.mock('../../../../core/playwright/tag-processor');
|
|
16
|
+
jest.mock('../../../../core/playwright/test-runner');
|
|
17
|
+
jest.mock('../../../../utils/logger', () => ({
|
|
18
|
+
__esModule: true,
|
|
19
|
+
Logger: {
|
|
20
|
+
log: jest.fn(),
|
|
21
|
+
SUCCESS_TYPE: 'success',
|
|
22
|
+
FAILURE_TYPE: 'failure'
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
describe('validateFeatureFiles', () => {
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
jest.clearAllMocks();
|
|
28
|
+
});
|
|
29
|
+
test('runPreprocessing with correct arguments and log success', async () => {
|
|
30
|
+
const mockUserArgs = {
|
|
31
|
+
mode: 'dev'
|
|
32
|
+
};
|
|
33
|
+
_parseUserArgs.default.mockReturnValue(mockUserArgs);
|
|
34
|
+
const mockConfig = {
|
|
35
|
+
editionOrder: ["beta", "enterprice"]
|
|
36
|
+
};
|
|
37
|
+
_readConfigFile.generateConfigFromFile.mockReturnValue(mockConfig);
|
|
38
|
+
_readConfigFile.isUserConfigFileAvailable.mockReturnValue(true);
|
|
39
|
+
const mockTagArgs = ['@beta_admin'];
|
|
40
|
+
_tagProcessor.tagProcessor.mockReturnValue(mockTagArgs);
|
|
41
|
+
_testRunner.runPreprocessing.mockResolvedValueOnce();
|
|
42
|
+
await (0, _validateFeature.default)();
|
|
43
|
+
expect(_parseUserArgs.default).toHaveBeenCalled();
|
|
44
|
+
expect(_readConfigFile.generateConfigFromFile).toHaveBeenCalled();
|
|
45
|
+
expect(_readConfigFile.isUserConfigFileAvailable).toHaveBeenCalled();
|
|
46
|
+
expect(_tagProcessor.tagProcessor).toHaveBeenCalledWith(mockUserArgs, ["beta", "enterprice"]);
|
|
47
|
+
expect(_testRunner.runPreprocessing).toHaveBeenCalledWith(mockTagArgs, expect.stringContaining('config-creator.js'));
|
|
48
|
+
expect(_logger.Logger.log).toHaveBeenCalledWith(_logger.Logger.SUCCESS_TYPE, 'Feature files validated successfully.');
|
|
49
|
+
});
|
|
50
|
+
test('runPreprocessing with playwright conf', async () => {
|
|
51
|
+
const mockTagArgs = ['@beta_admin'];
|
|
52
|
+
_tagProcessor.tagProcessor.mockReturnValue(mockTagArgs);
|
|
53
|
+
_readConfigFile.isUserConfigFileAvailable.mockReturnValue(false);
|
|
54
|
+
_testRunner.runPreprocessing.mockResolvedValueOnce();
|
|
55
|
+
await (0, _validateFeature.default)();
|
|
56
|
+
expect(_testRunner.runPreprocessing).toHaveBeenCalledWith(mockTagArgs, expect.stringContaining('playwright.config.js'));
|
|
57
|
+
});
|
|
58
|
+
test('error when runPreprocessing fails', async () => {
|
|
59
|
+
const mockError = new Error('Test error');
|
|
60
|
+
_testRunner.runPreprocessing.mockRejectedValueOnce(mockError);
|
|
61
|
+
await await (0, _validateFeature.default)();
|
|
62
|
+
expect(_logger.Logger.log).toHaveBeenCalledWith(_logger.Logger.FAILURE_TYPE, `Error while validating the feature files - ${mockError}`);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _fs = require("fs");
|
|
5
|
+
var _path = _interopRequireDefault(require("path"));
|
|
6
|
+
var _configFileNameProvider = require("../../../../../core/playwright/helpers/configFileNameProvider");
|
|
7
|
+
jest.mock('fs');
|
|
8
|
+
jest.mock('path');
|
|
9
|
+
const mockCwd = '/mock/current/directory';
|
|
10
|
+
_path.default.resolve = jest.fn();
|
|
11
|
+
process.cwd = jest.fn(() => mockCwd);
|
|
12
|
+
describe('getUATFileName', () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
jest.clearAllMocks();
|
|
15
|
+
});
|
|
16
|
+
test('return the pipeline matched config files for pipeline matched files exists', () => {
|
|
17
|
+
const mode = 'cd';
|
|
18
|
+
const mockPath = `${mockCwd}/uat/conf/${mode}/uat.config.js`;
|
|
19
|
+
_fs.existsSync.mockReturnValue(true);
|
|
20
|
+
_path.default.resolve.mockImplementation((...args) => args.join('/'));
|
|
21
|
+
const result = (0, _configFileNameProvider.getUATFileName)(mode);
|
|
22
|
+
expect(_fs.existsSync).toHaveBeenCalledWith(mockPath);
|
|
23
|
+
expect(result).toBe(mockPath);
|
|
24
|
+
});
|
|
25
|
+
test('return the default config files for pipeline matched files not exists', () => {
|
|
26
|
+
const mode = 'ci';
|
|
27
|
+
const defaultPath = `${mockCwd}/uat.config.js`;
|
|
28
|
+
_fs.existsSync.mockReturnValue(false);
|
|
29
|
+
_path.default.resolve.mockImplementation((...args) => args.join('/'));
|
|
30
|
+
const result = (0, _configFileNameProvider.getUATFileName)(mode);
|
|
31
|
+
expect(_fs.existsSync).toHaveBeenCalledWith(`${mockCwd}/uat/conf/${mode}/uat.config.js`);
|
|
32
|
+
expect(result).toBe(defaultPath);
|
|
33
|
+
});
|
|
34
|
+
});
|