@zohodesk/testinglibrary 0.1.8-stb-bdd-v26 → 0.1.9
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 +21 -18
- package/.eslintrc.js +31 -31
- package/.prettierrc +5 -5
- package/README.md +17 -17
- package/bin/cli.js +2 -2
- package/build/bdd-framework/cli/commands/env.js +42 -0
- package/build/bdd-framework/cli/commands/export.js +47 -0
- package/build/bdd-framework/cli/commands/test.js +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 +123 -0
- package/build/bdd-framework/gen/i18n.js +39 -0
- package/build/bdd-framework/gen/index.js +185 -0
- package/build/bdd-framework/gen/testFile.js +465 -0
- package/build/bdd-framework/gen/testMeta.js +60 -0
- package/build/bdd-framework/gen/testNode.js +60 -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 +61 -0
- package/build/bdd-framework/playwright/transform.js +88 -0
- package/build/bdd-framework/playwright/types.js +5 -0
- package/build/bdd-framework/playwright/utils.js +34 -0
- package/build/bdd-framework/reporter/cucumber/base.js +57 -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 +35 -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 +64 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +196 -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 +126 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +102 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +50 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +88 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +30 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwUtils.js +51 -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 +68 -0
- package/build/bdd-framework/run/bddDataAttachment.js +46 -0
- package/build/bdd-framework/run/bddFixtures.js +191 -0
- package/build/bdd-framework/run/bddWorld.js +79 -0
- package/build/bdd-framework/run/bddWorldInternal.js +15 -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/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/builtInFixtures/addTags.js +1 -1
- package/build/core/playwright/builtInFixtures/context.js +18 -1
- package/build/core/playwright/builtInFixtures/i18N.js +33 -0
- package/build/core/playwright/builtInFixtures/index.js +19 -7
- package/build/core/playwright/builtInFixtures/page.js +69 -39
- package/build/core/playwright/builtInFixtures/unauthenticatedPage.js +18 -0
- package/build/core/playwright/clear-caches.js +19 -8
- package/build/core/playwright/codegen.js +4 -4
- package/build/core/playwright/constants/browserTypes.js +12 -0
- package/build/core/playwright/custom-commands.js +1 -1
- package/build/core/playwright/env-initializer.js +10 -6
- package/build/core/playwright/helpers/auth/accountLogin.js +18 -0
- package/build/core/playwright/helpers/auth/checkAuthCookies.js +47 -0
- package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
- package/build/core/playwright/helpers/auth/getUsers.js +72 -0
- package/build/core/playwright/helpers/auth/index.js +58 -0
- package/build/core/playwright/helpers/auth/loginSteps.js +36 -0
- package/build/core/playwright/helpers/configFileNameProvider.js +17 -0
- package/build/core/playwright/helpers/getUserFixtures.js +23 -0
- package/build/core/playwright/helpers/mergeObjects.js +13 -0
- package/build/core/playwright/helpers/parseUserArgs.js +11 -0
- package/build/core/playwright/index.js +69 -15
- package/build/core/playwright/readConfigFile.js +50 -39
- package/build/core/playwright/report-generator.js +7 -7
- package/build/core/playwright/setup/config-creator.js +15 -16
- package/build/core/playwright/setup/config-utils.js +60 -26
- package/build/core/playwright/setup/custom-reporter.js +3 -2
- package/build/core/playwright/tag-processor.js +12 -23
- package/build/core/playwright/test-runner.js +49 -63
- package/build/core/playwright/types.js +43 -0
- package/build/decorators.d.ts +1 -1
- package/build/decorators.js +16 -2
- package/build/index.d.ts +79 -12
- package/build/index.js +51 -9
- package/build/lib/cli.js +12 -3
- package/build/lib/post-install.js +18 -10
- package/build/parser/sample.feature +34 -34
- package/build/parser/sample.spec.js +18 -18
- package/build/setup-folder-structure/helper.js +3 -0
- package/build/setup-folder-structure/reportEnhancement/addonScript.html +24 -24
- package/build/setup-folder-structure/samples/auth-setup-sample.js +72 -72
- package/build/setup-folder-structure/samples/authUsers-sample.json +8 -8
- package/build/setup-folder-structure/samples/env-config-sample.json +20 -20
- package/build/setup-folder-structure/samples/git-ignore.sample.js +36 -36
- package/build/setup-folder-structure/samples/uat-config-sample.js +44 -44
- package/build/utils/cliArgsToObject.js +30 -26
- package/build/utils/fileUtils.js +4 -19
- package/build/utils/getFilePath.js +1 -2
- package/build/utils/rootPath.js +16 -9
- package/changelog.md +144 -131
- package/jest.config.js +63 -63
- package/npm-shrinkwrap.json +6475 -5994
- package/package.json +57 -56
- package/playwright.config.js +112 -112
- package/build/bdd-poc/config/pathConfig.js +0 -22
- package/build/bdd-poc/core-runner/exportMethods.js +0 -22
- package/build/bdd-poc/core-runner/main.js +0 -15
- package/build/bdd-poc/core-runner/stepDefinitions.js +0 -157
- package/build/bdd-poc/core-runner/stepRunner.js +0 -25
- package/build/bdd-poc/errors/throwError.js +0 -23
- package/build/bdd-poc/index.js +0 -26
- package/build/bdd-poc/test/cucumber/featureFileParer.js +0 -84
- package/build/bdd-poc/test/cucumber/parserCucumber.js +0 -15
- package/build/bdd-poc/test/stepGenerate/extractTestInputs.js +0 -65
- package/build/bdd-poc/test/stepGenerate/parserSteps.js +0 -81
- package/build/bdd-poc/test/stepGenerate/stepFileGenerate.js +0 -40
- package/build/bdd-poc/test/stepGenerate/stepsnippets.js +0 -61
- package/build/bdd-poc/test/tagsHandle.js +0 -70
- package/build/bdd-poc/test/testData.js +0 -125
- package/build/bdd-poc/test/testStructure.js +0 -92
- package/build/bdd-poc/utils/stringManipulation.js +0 -26
|
@@ -4,16 +4,17 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.fileName = void 0;
|
|
8
7
|
exports.generateConfigFromFile = generateConfigFromFile;
|
|
9
8
|
exports.getAuthFilePath = getAuthFilePath;
|
|
10
9
|
exports.isUserConfigFileAvailable = isUserConfigFileAvailable;
|
|
11
10
|
var _fs = require("fs");
|
|
12
11
|
var _path = _interopRequireDefault(require("path"));
|
|
13
12
|
var _logger = require("../../utils/logger");
|
|
14
|
-
|
|
13
|
+
var _configFileNameProvider = require("./helpers/configFileNameProvider");
|
|
14
|
+
var _mergeObjects = require("./helpers/mergeObjects");
|
|
15
15
|
function getDefaultConfig() {
|
|
16
16
|
return {
|
|
17
|
+
uatDirectory: _path.default.join(process.cwd(), 'uat'),
|
|
17
18
|
headless: false,
|
|
18
19
|
browsers: ['Chrome'],
|
|
19
20
|
trace: false,
|
|
@@ -35,6 +36,7 @@ function getDefaultConfig() {
|
|
|
35
36
|
featureFilesFolder: 'feature-files',
|
|
36
37
|
stepDefinitionsFolder: 'steps',
|
|
37
38
|
testIdAttribute: 'data-testid',
|
|
39
|
+
testSetup: {},
|
|
38
40
|
editionOrder: ['Free', 'Express', 'Standard', 'Professional', 'Enterprise']
|
|
39
41
|
};
|
|
40
42
|
}
|
|
@@ -51,49 +53,58 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
51
53
|
_logger.Logger.log(_logger.Logger.INFO_TYPE, `key - ${configKey} is not yet supported in uat configuration. This will not be used while creating playwright configuration`);
|
|
52
54
|
}
|
|
53
55
|
});
|
|
54
|
-
return
|
|
55
|
-
...defaultConfig,
|
|
56
|
-
...configurationObj
|
|
57
|
-
};
|
|
56
|
+
return (0, _mergeObjects.mergeObjects)(defaultConfig, configurationObj);
|
|
58
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* @typedef {Object|null} viewportConfig
|
|
60
|
+
* @property {number} width - width of the viewport
|
|
61
|
+
* @property {number} height - height of the viewport
|
|
62
|
+
*/
|
|
63
|
+
/**
|
|
64
|
+
* @typedef {Object|null} viewportConfig
|
|
65
|
+
* @property {number} width - width of the viewport
|
|
66
|
+
* @property {number} height - height of the viewport
|
|
67
|
+
*/
|
|
59
68
|
|
|
60
|
-
/**
|
|
61
|
-
* @typedef {Object|null}
|
|
62
|
-
* @property {
|
|
63
|
-
* @property {
|
|
69
|
+
/**
|
|
70
|
+
* @typedef {Object|null} testSetupConfig
|
|
71
|
+
* @property {any} page - Function that will be called while setting up page fixtures
|
|
72
|
+
* @property {any} context - Function that will be called while setting up context fixtures
|
|
64
73
|
*/
|
|
65
74
|
|
|
66
|
-
/**
|
|
67
|
-
* Represents the user configuration object.
|
|
68
|
-
* @typedef {Object} UserConfig
|
|
69
|
-
* @property {string}
|
|
70
|
-
* @property {
|
|
71
|
-
* @property {
|
|
72
|
-
* @property {boolean}
|
|
73
|
-
* @property {
|
|
74
|
-
* @property {
|
|
75
|
-
* @property {
|
|
76
|
-
* @property {
|
|
77
|
-
* @property {
|
|
78
|
-
* @property {
|
|
79
|
-
* @property {
|
|
80
|
-
* @property {
|
|
81
|
-
* @property {number}
|
|
82
|
-
* @property {
|
|
83
|
-
* @property {
|
|
84
|
-
* @property {string}
|
|
85
|
-
* @property {
|
|
86
|
-
* @property {
|
|
87
|
-
* @property {
|
|
75
|
+
/**
|
|
76
|
+
* Represents the user configuration object.
|
|
77
|
+
* @typedef {Object} UserConfig
|
|
78
|
+
* @property {string} uatDirectory - Directory in which uat configuration is places.
|
|
79
|
+
* @property {string} headless - Headless Browsers mode.
|
|
80
|
+
* @property {number} trace - trace for test cases.
|
|
81
|
+
* @property {boolean} video - video for test cases,
|
|
82
|
+
* @property {boolean} debug - debug mode
|
|
83
|
+
* @property {string} mode: mode in which the test cases needs to run
|
|
84
|
+
* @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
|
|
85
|
+
* @property {string} authFilePath - File Path where the cookies stored
|
|
86
|
+
* @property {any} browsers: List of browsers
|
|
87
|
+
* @property {string} openReportOn: default Option value (never, on-failure and always)
|
|
88
|
+
* @property {any} reportPath : directory where report is generate
|
|
89
|
+
* @property {boolean} bddMode: Feature files needs to be processed
|
|
90
|
+
* @property {number} expectTimeout: time in milliseconds which the expect condition should fail
|
|
91
|
+
* @property {number} testTimeout: time in milliseconds which the test should fail
|
|
92
|
+
* @property {Object} additionalPages: custom pages configuration
|
|
93
|
+
* @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
|
|
94
|
+
* @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
|
|
95
|
+
* @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
|
|
96
|
+
* @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
|
|
97
|
+
* @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
|
|
98
|
+
* @property {testSetupConfig} testSetup: Specify page and context functions that will be called while intilaizing fixtures.
|
|
88
99
|
*/
|
|
89
100
|
|
|
90
|
-
/**
|
|
91
|
-
* Generates a configuration object from a file, if it exists.
|
|
92
|
-
*
|
|
93
|
-
* @returns {UserConfig}
|
|
94
|
-
*/
|
|
101
|
+
/**
|
|
102
|
+
* Generates a configuration object from a file, if it exists.
|
|
103
|
+
*
|
|
104
|
+
* @returns {UserConfig}
|
|
105
|
+
*/
|
|
95
106
|
function generateConfigFromFile() {
|
|
96
|
-
const filePath = _path.default.resolve(process.cwd(),
|
|
107
|
+
const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
|
|
97
108
|
if ((0, _fs.existsSync)(filePath)) {
|
|
98
109
|
/** @type {UserConfig} */
|
|
99
110
|
const config = require(filePath);
|
|
@@ -103,7 +114,7 @@ function generateConfigFromFile() {
|
|
|
103
114
|
return {};
|
|
104
115
|
}
|
|
105
116
|
function isUserConfigFileAvailable() {
|
|
106
|
-
const filePath = _path.default.resolve(process.cwd(),
|
|
117
|
+
const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
|
|
107
118
|
if ((0, _fs.existsSync)(filePath)) {
|
|
108
119
|
return true;
|
|
109
120
|
}
|
|
@@ -10,15 +10,15 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
10
10
|
var _logger = require("../../utils/logger");
|
|
11
11
|
var _rootPath = require("../../utils/rootPath");
|
|
12
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
|
|
18
|
-
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
19
|
-
const args = ['show-report', htmlPath].concat(userArgs);
|
|
20
13
|
async function generateReport() {
|
|
21
14
|
// await preProcessReport()
|
|
15
|
+
const userArgs = process.argv.slice(3);
|
|
16
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
17
|
+
const command = playwrightPath;
|
|
18
|
+
const {
|
|
19
|
+
reportPath: htmlPath
|
|
20
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
21
|
+
const args = ['show-report', htmlPath].concat(userArgs);
|
|
22
22
|
const childProcess = (0, _child_process.spawn)(command, args, {
|
|
23
23
|
stdio: 'inherit'
|
|
24
24
|
});
|
|
@@ -9,8 +9,8 @@ var _test = require("@playwright/test");
|
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
var _readConfigFile = require("../readConfigFile");
|
|
11
11
|
var _configUtils = require("./config-utils");
|
|
12
|
-
var
|
|
13
|
-
|
|
12
|
+
var _bddFramework = require("../../../bdd-framework");
|
|
13
|
+
const defaultCIBrowsers = ['Chrome', 'Firefox', 'Edge', 'Safari'];
|
|
14
14
|
const {
|
|
15
15
|
browsers,
|
|
16
16
|
trace,
|
|
@@ -23,21 +23,23 @@ const {
|
|
|
23
23
|
testTimeout,
|
|
24
24
|
authFilePath,
|
|
25
25
|
viewport,
|
|
26
|
+
featureFilesFolder,
|
|
27
|
+
stepDefinitionsFolder,
|
|
26
28
|
testIdAttribute
|
|
27
29
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
30
|
+
const browserList = process.env.mode === 'ci' ? defaultCIBrowsers : browsers;
|
|
28
31
|
const projects = (0, _configUtils.getProjects)({
|
|
29
|
-
browsers,
|
|
32
|
+
browsers: browserList,
|
|
30
33
|
isAuthMode,
|
|
31
34
|
authFilePath,
|
|
32
35
|
expectTimeout,
|
|
33
36
|
testTimeout,
|
|
34
37
|
viewport
|
|
35
38
|
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
39
|
+
const testDir = (0, _configUtils.getTestDir)(bddMode, process.cwd(), {
|
|
40
|
+
featureFilesFolder,
|
|
41
|
+
stepDefinitionsFolder
|
|
42
|
+
});
|
|
41
43
|
const testOptions = (0, _configUtils.getTestUseOptions)({
|
|
42
44
|
trace,
|
|
43
45
|
video,
|
|
@@ -45,15 +47,12 @@ const testOptions = (0, _configUtils.getTestUseOptions)({
|
|
|
45
47
|
testIdAttribute
|
|
46
48
|
});
|
|
47
49
|
|
|
48
|
-
/**
|
|
49
|
-
* Playwright configuration object
|
|
50
|
-
*
|
|
51
|
-
* @returns {import('@playwright/test').PlaywrightTestConfig}
|
|
50
|
+
/**
|
|
51
|
+
* Playwright configuration object
|
|
52
|
+
*
|
|
53
|
+
* @returns {import('@playwright/test').PlaywrightTestConfig}
|
|
52
54
|
*/
|
|
53
|
-
|
|
54
|
-
globalThis.globalStepMap = new Map();
|
|
55
|
-
(0, _stepRunner.createStepCallBack)();
|
|
56
|
-
globalThis.globalTestdata = await (0, _testData.testDataCreation)();
|
|
55
|
+
function getPlaywrightConfig() {
|
|
57
56
|
return {
|
|
58
57
|
testDir,
|
|
59
58
|
outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
|
|
@@ -4,16 +4,21 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.getBrowsersList = getBrowsersList;
|
|
7
8
|
exports.getProjects = getProjects;
|
|
9
|
+
exports.getTestDir = getTestDir;
|
|
8
10
|
exports.getTestUseOptions = getTestUseOptions;
|
|
9
11
|
var _test = require("@playwright/test");
|
|
10
12
|
var _path = _interopRequireDefault(require("path"));
|
|
11
13
|
var _readConfigFile = require("../readConfigFile");
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
var _bddFramework = require("../../../bdd-framework");
|
|
15
|
+
var _logger = require("../../../utils/logger");
|
|
16
|
+
var _browserTypes = require("../constants/browserTypes");
|
|
17
|
+
var _configFileNameProvider = require("../helpers/configFileNameProvider");
|
|
18
|
+
var _fileUtils = require("../../../utils/fileUtils");
|
|
19
|
+
/**
|
|
20
|
+
** Playwright project configuration
|
|
21
|
+
* @returns {import('@playwright/test').Project}
|
|
17
22
|
*/
|
|
18
23
|
function getBrowserConfig({
|
|
19
24
|
browserName,
|
|
@@ -31,7 +36,7 @@ function getBrowserConfig({
|
|
|
31
36
|
const dependencies = isAuthMode ? ['setup'] : [];
|
|
32
37
|
if (browser === 'chrome') {
|
|
33
38
|
return {
|
|
34
|
-
name:
|
|
39
|
+
name: _browserTypes.BROWSER_PROJECT_MAPPING.CHROME,
|
|
35
40
|
use: {
|
|
36
41
|
..._test.devices['Desktop Chrome'],
|
|
37
42
|
...commonConfig
|
|
@@ -44,7 +49,7 @@ function getBrowserConfig({
|
|
|
44
49
|
};
|
|
45
50
|
} else if (browser === 'edge') {
|
|
46
51
|
return {
|
|
47
|
-
name:
|
|
52
|
+
name: _browserTypes.BROWSER_PROJECT_MAPPING.EDGE,
|
|
48
53
|
timeout: testTimeout,
|
|
49
54
|
expect: {
|
|
50
55
|
timeout: expectTimeout
|
|
@@ -58,7 +63,7 @@ function getBrowserConfig({
|
|
|
58
63
|
};
|
|
59
64
|
} else if (browser === 'firefox') {
|
|
60
65
|
return {
|
|
61
|
-
name:
|
|
66
|
+
name: _browserTypes.BROWSER_PROJECT_MAPPING.FIREFOX,
|
|
62
67
|
timeout: 2 * testTimeout,
|
|
63
68
|
expect: {
|
|
64
69
|
timeout: 2 * expectTimeout
|
|
@@ -71,7 +76,7 @@ function getBrowserConfig({
|
|
|
71
76
|
};
|
|
72
77
|
} else if (browser === 'safari') {
|
|
73
78
|
return {
|
|
74
|
-
name:
|
|
79
|
+
name: _browserTypes.BROWSER_PROJECT_MAPPING.SAFARI,
|
|
75
80
|
timeout: 4 * testTimeout,
|
|
76
81
|
expect: {
|
|
77
82
|
timeout: 4 * expectTimeout
|
|
@@ -87,10 +92,10 @@ function getBrowserConfig({
|
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
94
|
|
|
90
|
-
/**
|
|
91
|
-
*
|
|
92
|
-
* @param {*} param0
|
|
93
|
-
* @returns {import('@playwright/test').Project[]}
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @param {*} param0
|
|
98
|
+
* @returns {import('@playwright/test').Project[]}
|
|
94
99
|
*/
|
|
95
100
|
function getProjects({
|
|
96
101
|
browsers,
|
|
@@ -109,19 +114,48 @@ function getProjects({
|
|
|
109
114
|
viewport
|
|
110
115
|
})).filter(Boolean);
|
|
111
116
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
117
|
+
function getBrowsersList(browserFromArgs) {
|
|
118
|
+
if (browserFromArgs) {
|
|
119
|
+
if (typeof browserFromArgs === 'string') {
|
|
120
|
+
let listOfbrowsers = browserFromArgs.split(',').map(browser => browser.trim().toLowerCase());
|
|
121
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Using browsers from command line args');
|
|
122
|
+
return listOfbrowsers;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
function getPathsForFeatureFiles(cwd) {
|
|
128
|
+
if (process.env.isRerunFailedCases) {
|
|
129
|
+
let {
|
|
130
|
+
reportPath
|
|
131
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
132
|
+
let filePathFromArgs = process.env.filePath;
|
|
133
|
+
let filePath = filePathFromArgs ? filePathFromArgs : reportPath;
|
|
134
|
+
const testSummary = (0, _fileUtils.readFileContents)(filePath);
|
|
135
|
+
if (testSummary !== null) {
|
|
136
|
+
const {
|
|
137
|
+
failed = []
|
|
138
|
+
} = JSON.parse(testSummary);
|
|
139
|
+
const casesToRun = failed.map(filePath => _path.default.join(cwd, 'uat', filePath.replace(/\.spec\.js$|\.js$/, '')));
|
|
140
|
+
return casesToRun;
|
|
141
|
+
} else {
|
|
142
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Unable to read test summary from the ${reportPath}. Verify If File Exists in the path`);
|
|
143
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Going to run all test cases');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return [_path.default.join(cwd, 'uat', '**', '*.feature')];
|
|
147
|
+
}
|
|
148
|
+
function getTestDir(bddMode, cwd, {
|
|
149
|
+
stepDefinitionsFolder
|
|
150
|
+
}) {
|
|
151
|
+
return bddMode ? (0, _bddFramework.defineBddConfig)({
|
|
152
|
+
paths: getPathsForFeatureFiles(cwd),
|
|
153
|
+
import: [_path.default.join(cwd, 'uat', '**', stepDefinitionsFolder, '*.spec.js')],
|
|
154
|
+
featuresRoot: _path.default.join(cwd, 'uat'),
|
|
155
|
+
outputDir: _path.default.join(cwd, 'uat', '.features-gen'),
|
|
156
|
+
publish: true
|
|
157
|
+
}) : _path.default.join(cwd, 'uat');
|
|
158
|
+
}
|
|
125
159
|
function getTestUseOptions({
|
|
126
160
|
viewport,
|
|
127
161
|
trace,
|
|
@@ -10,6 +10,7 @@ var _readline = _interopRequireDefault(require("readline"));
|
|
|
10
10
|
var _fileUtils = require("../../../utils/fileUtils");
|
|
11
11
|
var _readConfigFile = require("../readConfigFile");
|
|
12
12
|
var _logger = require("../../../utils/logger");
|
|
13
|
+
var _configFileNameProvider = require("../helpers/configFileNameProvider");
|
|
13
14
|
class JSONSummaryReporter {
|
|
14
15
|
constructor() {
|
|
15
16
|
this.durationInMS = -1;
|
|
@@ -43,7 +44,7 @@ class JSONSummaryReporter {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
// This will publish the file name + line number test begins on
|
|
46
|
-
const z = `${fileName[0]}
|
|
47
|
+
const z = `${fileName[0]}`;
|
|
47
48
|
// Using the t variable in the push will push a full test name + test description
|
|
48
49
|
const t = title.join(' > ');
|
|
49
50
|
// Set the status
|
|
@@ -93,7 +94,7 @@ class JSONSummaryReporter {
|
|
|
93
94
|
let {
|
|
94
95
|
reportPath
|
|
95
96
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
96
|
-
(0, _fileUtils.writeFileContents)(_path.default.join(reportPath, './',
|
|
97
|
+
(0, _fileUtils.writeFileContents)(_path.default.join(reportPath, './', (0, _configFileNameProvider.getReportFileName)()), JSON.stringify(this, null, ' '));
|
|
97
98
|
}
|
|
98
99
|
onExit() {
|
|
99
100
|
const shouldClearLastLine = this._open !== 'always' || this._open !== 'on-failure';
|
|
@@ -3,16 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.buildEditionTags = buildEditionTags;
|
|
7
|
-
exports.editionPreprocessing = editionPreprocessing;
|
|
8
6
|
exports.tagProcessor = tagProcessor;
|
|
9
7
|
var _logger = require("../../utils/logger");
|
|
10
8
|
/* eslint-disable dot-notation */
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
function getTagsString(tags, editionTags) {
|
|
11
|
+
return tags && tags !== '' ? `${tags} and not (${editionTags})` : `not (${editionTags})`;
|
|
12
|
+
}
|
|
16
13
|
function getEdition(edition) {
|
|
17
14
|
if (edition.startsWith('<=')) {
|
|
18
15
|
return ['<=', edition.slice(2)];
|
|
@@ -31,11 +28,11 @@ function editionPreprocessing(editionOrder, selectedEdition) {
|
|
|
31
28
|
if (index !== -1) {
|
|
32
29
|
let resultArray;
|
|
33
30
|
if (operator === '<=') {
|
|
34
|
-
resultArray = editionOrder.slice(
|
|
31
|
+
resultArray = editionOrder.slice(index + 1);
|
|
35
32
|
} else if (operator === '>=') {
|
|
36
33
|
resultArray = editionOrder.slice(0, index);
|
|
37
34
|
} else if (operator === '<') {
|
|
38
|
-
resultArray = editionOrder.slice(
|
|
35
|
+
resultArray = editionOrder.slice(index);
|
|
39
36
|
} else if (operator === '>') {
|
|
40
37
|
resultArray = editionOrder.slice(0, index + 1);
|
|
41
38
|
} else {
|
|
@@ -46,34 +43,26 @@ function editionPreprocessing(editionOrder, selectedEdition) {
|
|
|
46
43
|
_logger.Logger.log(_logger.Logger.INFO_TYPE, `No matching editions ${selectedEdition} found. Running with default edition`);
|
|
47
44
|
return [];
|
|
48
45
|
}
|
|
49
|
-
function buildEditionTags(editionArgs, operator
|
|
50
|
-
return editionArgs.map(edition =>
|
|
46
|
+
function buildEditionTags(editionArgs, operator) {
|
|
47
|
+
return editionArgs.map(edition => `@edition_${edition}`).join(` ${operator} `);
|
|
51
48
|
}
|
|
52
49
|
function tagProcessor(userArgsObject, editionOrder) {
|
|
53
|
-
let filteredTags;
|
|
54
50
|
let tagArgs = userArgsObject['tags'];
|
|
55
|
-
let multiTags = userArgsObject['tags'] || " ";
|
|
56
|
-
if (multiTags.split(',').length >= 2) {
|
|
57
|
-
tagArgs = buildEditionTags(multiTags.split(','), '|');
|
|
58
|
-
}
|
|
59
51
|
const edition = userArgsObject['edition'] || null;
|
|
60
52
|
if (edition !== null) {
|
|
61
53
|
let editionsArray = edition.split(',');
|
|
62
54
|
if (editionsArray.length === 1) {
|
|
63
55
|
const editionArgs = editionPreprocessing(editionOrder, edition);
|
|
64
56
|
if (editionArgs && editionArgs.length > 0) {
|
|
65
|
-
const editionTags = buildEditionTags(editionArgs, '
|
|
66
|
-
|
|
57
|
+
const editionTags = buildEditionTags(editionArgs, 'or');
|
|
58
|
+
tagArgs = `${getTagsString(tagArgs, editionTags)}`;
|
|
67
59
|
}
|
|
68
60
|
} else {
|
|
69
61
|
// More than one edition given
|
|
70
62
|
const filteredEditions = editionOrder.filter(edition => !editionsArray.includes(edition));
|
|
71
|
-
const editionTags = buildEditionTags(filteredEditions, '
|
|
72
|
-
|
|
63
|
+
const editionTags = buildEditionTags(filteredEditions, 'or');
|
|
64
|
+
tagArgs = `${getTagsString(tagArgs, editionTags)}`;
|
|
73
65
|
}
|
|
74
66
|
}
|
|
75
|
-
return
|
|
76
|
-
tags: tagArgs,
|
|
77
|
-
editionTags: filteredTags
|
|
78
|
-
};
|
|
67
|
+
return tagArgs;
|
|
79
68
|
}
|
|
@@ -14,76 +14,66 @@ var _logger = require("../../utils/logger");
|
|
|
14
14
|
var _readConfigFile = require("./readConfigFile");
|
|
15
15
|
var _rootPath = require("../../utils/rootPath");
|
|
16
16
|
var _tagProcessor = require("./tag-processor");
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
function parseUserArgs() {
|
|
21
|
-
return (0, _cliArgsToObject.cliArgsToObject)(process.argv.slice(2));
|
|
22
|
-
}
|
|
17
|
+
var _configUtils = require("./setup/config-utils");
|
|
18
|
+
var _browserTypes = require("./constants/browserTypes");
|
|
19
|
+
var _parseUserArgs = _interopRequireDefault(require("./helpers/parseUserArgs"));
|
|
23
20
|
function getPlaywrightArgs(userArgsObject, debug, bddMode, tagArgs, headless) {
|
|
21
|
+
const {
|
|
22
|
+
browsers = null
|
|
23
|
+
} = userArgsObject;
|
|
24
|
+
let browserList = (0, _configUtils.getBrowsersList)(browsers);
|
|
24
25
|
const playwrightArgs = (0, _cliArgsToObject.objectToCliArgs)(userArgsObject, key => !_customCommands.CUSTOM_COMMANDS.includes(key));
|
|
25
26
|
if (debug) {
|
|
26
27
|
playwrightArgs.push('--debug');
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// playwrightArgs.push(tagArgs);
|
|
32
|
-
// }
|
|
33
|
-
|
|
34
|
-
if (tagArgs && userArgsObject !== null && userArgsObject !== void 0 && userArgsObject.edition || userArgsObject !== null && userArgsObject !== void 0 && userArgsObject.tags) {
|
|
35
|
-
const {
|
|
36
|
-
tags,
|
|
37
|
-
editionTags
|
|
38
|
-
} = tagArgs;
|
|
39
|
-
if (tags) {
|
|
40
|
-
playwrightArgs.push('--grep');
|
|
41
|
-
playwrightArgs.push(tags);
|
|
42
|
-
}
|
|
43
|
-
if (editionTags) {
|
|
44
|
-
playwrightArgs.push('--grep-invert');
|
|
45
|
-
playwrightArgs.push(editionTags);
|
|
46
|
-
}
|
|
29
|
+
if (!bddMode && tagArgs) {
|
|
30
|
+
playwrightArgs.push('--grep');
|
|
31
|
+
playwrightArgs.push(tagArgs);
|
|
47
32
|
}
|
|
48
33
|
if (!headless && !userArgsObject.headed) {
|
|
49
34
|
playwrightArgs.push('--headed');
|
|
50
35
|
}
|
|
36
|
+
if (browserList && browserList.length > 0) {
|
|
37
|
+
browserList.map(browser => playwrightArgs.push(`--project=${_browserTypes.BROWSER_PROJECT_MAPPING[browser.toUpperCase()]}`));
|
|
38
|
+
}
|
|
51
39
|
return playwrightArgs;
|
|
52
40
|
}
|
|
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
|
-
|
|
41
|
+
function runPreprocessing(tagArgs, configPath) {
|
|
42
|
+
const beforeCommand = 'node';
|
|
43
|
+
const bddGenPath = _path.default.resolve(__dirname, '../', '../', 'bdd-framework', 'cli', 'index.js');
|
|
44
|
+
const beforeArgs = [bddGenPath, '-c', configPath];
|
|
45
|
+
if (tagArgs) {
|
|
46
|
+
beforeArgs.push('--tags');
|
|
47
|
+
beforeArgs.push(tagArgs);
|
|
48
|
+
}
|
|
49
|
+
return new Promise((resolve, reject) => {
|
|
50
|
+
const childProcessForPreprocessing = (0, _child_process.spawn)(beforeCommand, beforeArgs, {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
env: {
|
|
53
|
+
...process.env
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
childProcessForPreprocessing.on('error', data => {
|
|
57
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, data);
|
|
58
|
+
reject();
|
|
59
|
+
});
|
|
60
|
+
childProcessForPreprocessing.on('exit', code => {
|
|
61
|
+
if (code === 0) {
|
|
62
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Feature Files Processed Successfully');
|
|
63
|
+
resolve();
|
|
64
|
+
} else {
|
|
65
|
+
reject(`BddGen exited with code ${code}`);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
83
70
|
function runPlaywright(command, args) {
|
|
84
71
|
return new Promise((resolve, reject) => {
|
|
85
72
|
const childProcessForRunningPlaywright = (0, _child_process.spawn)(command, args, {
|
|
86
|
-
stdio: 'inherit'
|
|
73
|
+
stdio: 'inherit',
|
|
74
|
+
env: {
|
|
75
|
+
...process.env
|
|
76
|
+
}
|
|
87
77
|
});
|
|
88
78
|
childProcessForRunningPlaywright.on('error', error => {
|
|
89
79
|
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, error);
|
|
@@ -107,9 +97,7 @@ function runPlaywright(command, args) {
|
|
|
107
97
|
});
|
|
108
98
|
}
|
|
109
99
|
function main() {
|
|
110
|
-
const userArgsObject =
|
|
111
|
-
// eslint-disable-next-line
|
|
112
|
-
|
|
100
|
+
const userArgsObject = (0, _parseUserArgs.default)();
|
|
113
101
|
const {
|
|
114
102
|
debug,
|
|
115
103
|
mode = 'dev',
|
|
@@ -118,18 +106,16 @@ function main() {
|
|
|
118
106
|
editionOrder
|
|
119
107
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
120
108
|
const tagArgs = (0, _tagProcessor.tagProcessor)(userArgsObject, editionOrder);
|
|
121
|
-
// const tagArgs = allowedTags(userArgsObject)
|
|
122
|
-
|
|
123
109
|
const playwrightArgs = getPlaywrightArgs(userArgsObject, debug, bddMode, tagArgs, headless);
|
|
124
110
|
(0, _envInitializer.initializeEnvConfig)(userArgsObject.mode ? userArgsObject.mode : mode);
|
|
125
111
|
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
126
112
|
const command = playwrightPath;
|
|
127
113
|
const configPath = (0, _readConfigFile.isUserConfigFileAvailable)() ? require.resolve('./setup/config-creator.js') : require.resolve('../../../playwright.config.js');
|
|
114
|
+
const args = ['test', '--config', configPath].concat(playwrightArgs);
|
|
128
115
|
let promises = [];
|
|
129
116
|
if (bddMode) {
|
|
130
|
-
promises.push((
|
|
117
|
+
promises.push(runPreprocessing(tagArgs, configPath));
|
|
131
118
|
}
|
|
132
|
-
const args = ['test', '--config', configPath].concat(playwrightArgs);
|
|
133
119
|
Promise.all(promises).then(() => runPlaywright(command, args)).catch(err => {
|
|
134
120
|
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, err);
|
|
135
121
|
process.exit();
|