@zohodesk/testinglibrary 0.5.0-n18-experimental → 0.5.1-n18-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/README.md +18 -8
- package/build/core/playwright/configuration/ConfigurationHelper.js +7 -5
- package/build/core/playwright/constants/configConstants.js +17 -0
- package/build/core/playwright/constants/{reporterPathConstants.js → reporterConstants.js} +2 -2
- package/build/core/playwright/custom-commands.js +1 -1
- package/build/core/playwright/env-initializer.js +10 -9
- package/build/core/playwright/helpers/auth/getUsers.js +14 -14
- package/build/core/playwright/helpers/configFileNameProvider.js +15 -8
- package/build/core/playwright/helpers/configPathResolver.js +38 -0
- package/build/core/playwright/readConfigFile.js +3 -2
- package/build/core/playwright/reporter/helpers/mergeAbortedTests.js +6 -7
- package/build/core/playwright/test-runner.js +4 -2
- package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +54 -13
- package/build/test/core/playwright/helpers/__tests__/configPathResolver.test.js +55 -0
- package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +29 -26
- package/npm-shrinkwrap.json +116 -59
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -17,20 +17,29 @@
|
|
|
17
17
|
|
|
18
18
|
- npm run report
|
|
19
19
|
|
|
20
|
+
### v3.2.15 - 14-11-2025
|
|
21
|
+
|
|
22
|
+
#### Enhancement
|
|
23
|
+
|
|
24
|
+
- Aborted test results are now merged into the `.last-run.json` file.
|
|
25
|
+
This ensures that any timed-out tests are included in the next retry cycle.
|
|
26
|
+
|
|
27
|
+
### v3.2.13 - 30-10-2025
|
|
28
|
+
|
|
29
|
+
#### Enhancement
|
|
30
|
+
|
|
31
|
+
- A teardown option has been introduced in the configuration to manage and clean up login sessions stored in the NFS environment.
|
|
32
|
+
|
|
33
|
+
### Issue fix
|
|
34
|
+
|
|
35
|
+
- Custom teardown comment provided
|
|
36
|
+
|
|
20
37
|
### v3.2.11 - 13-10-2025
|
|
21
38
|
|
|
22
39
|
### Feature
|
|
23
40
|
|
|
24
41
|
- New step a search entity using {string} provided for search indexing, This step will use run time data generation response as input for the indexing
|
|
25
42
|
|
|
26
|
-
### Issue fix
|
|
27
|
-
- Custom teardown comment provided
|
|
28
|
-
|
|
29
|
-
### v3.2.10 - 09-10-2025
|
|
30
|
-
|
|
31
|
-
#### Enhancement
|
|
32
|
-
- A teardown option has been introduced in the configuration to manage and clean up login sessions stored in the NFS environment.
|
|
33
|
-
|
|
34
43
|
|
|
35
44
|
### v3.2.9 - 26-09-2025
|
|
36
45
|
|
|
@@ -60,6 +69,7 @@
|
|
|
60
69
|
- Multi-actor execution support – now possible to switch between multiple profile agents within scenarios using the predefined step: - `access the {string} profile page`
|
|
61
70
|
|
|
62
71
|
### Bug fix
|
|
72
|
+
|
|
63
73
|
- Fixed the issue where localapp and hcapp UAT were not running properly.
|
|
64
74
|
|
|
65
75
|
### v3.2.5 - 28-08-2025
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.combineConfiguration = combineConfiguration;
|
|
8
7
|
exports.getApplicationConfig = getApplicationConfig;
|
|
9
|
-
|
|
8
|
+
exports.getRunStage = getRunStage;
|
|
10
9
|
var _logger = require("../../../utils/logger");
|
|
11
10
|
var _configFileNameProvider = require("../helpers/configFileNameProvider");
|
|
12
11
|
var _mergeObjects = require("../helpers/mergeObjects");
|
|
13
12
|
var _fs = require("fs");
|
|
14
|
-
const Configuration = require("./Configuration");
|
|
15
13
|
function combineConfiguration(defaultConfig, userConfiguration) {
|
|
16
14
|
let configurationObj = {};
|
|
17
15
|
Object.keys(userConfiguration).forEach(configKey => {
|
|
@@ -26,10 +24,10 @@ function combineConfiguration(defaultConfig, userConfiguration) {
|
|
|
26
24
|
});
|
|
27
25
|
return (0, _mergeObjects.mergeObjects)(defaultConfig, configurationObj);
|
|
28
26
|
}
|
|
29
|
-
function getApplicationConfig(mode) {
|
|
27
|
+
function getApplicationConfig(stage, mode) {
|
|
30
28
|
let filePath = "";
|
|
31
29
|
try {
|
|
32
|
-
filePath =
|
|
30
|
+
filePath = (0, _configFileNameProvider.getUATFileName)(stage, mode);
|
|
33
31
|
if (!(0, _fs.existsSync)(filePath)) {
|
|
34
32
|
throw new Error("Exception while getting the uat file from the application - " + filePath);
|
|
35
33
|
}
|
|
@@ -40,4 +38,8 @@ function getApplicationConfig(mode) {
|
|
|
40
38
|
_logger.Logger.error(err);
|
|
41
39
|
return {};
|
|
42
40
|
}
|
|
41
|
+
}
|
|
42
|
+
function getRunStage() {
|
|
43
|
+
const stage = process.env.stage;
|
|
44
|
+
return stage || 'uat';
|
|
43
45
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
class configConstants {
|
|
8
|
+
static DEFAULT_CONFIG_DIR = 'default';
|
|
9
|
+
static BETA_DIR = 'beta';
|
|
10
|
+
static ACTOR_DIR = 'actors';
|
|
11
|
+
static UAT_CONFIG_FILE = 'uat.config.js';
|
|
12
|
+
static INDEX_FILE = 'index.js';
|
|
13
|
+
static SETTINGS_FILE = 'settings.json';
|
|
14
|
+
static TEST_SUMMARY_FILE = 'test-summary.json';
|
|
15
|
+
static STAGE_CONFIG_MAP_FILE = 'uat/conf_path_map.properties';
|
|
16
|
+
}
|
|
17
|
+
exports.default = configConstants;
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
class
|
|
7
|
+
class ReporterConstants {
|
|
8
8
|
static DEFAULT_REPORTER_PATH = 'uat/test-results/playwright-test-results.json';
|
|
9
9
|
static LAST_RUN_REPORTER_PATH = 'uat/test-results/.last-run.json';
|
|
10
10
|
}
|
|
11
|
-
exports.default =
|
|
11
|
+
exports.default = ReporterConstants;
|
|
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CUSTOM_COMMANDS = void 0;
|
|
7
|
-
const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags', 'edition', 'browsers', 'filePath', 'headless', 'modules', 'isTearDown'];
|
|
7
|
+
const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['stage', 'mode', 'tags', 'edition', 'browsers', 'filePath', 'headless', 'modules', 'isTearDown'];
|
|
@@ -17,19 +17,20 @@ function setEnvironmentVariables(configJSON) {
|
|
|
17
17
|
}
|
|
18
18
|
function addHelperLogsForEnvInitialization() {
|
|
19
19
|
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Mode under which test cases should run has not been specified in args.`);
|
|
20
|
-
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Please specify --mode='dev/
|
|
20
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Please specify --mode='dev/ci/cd/devautomation' while running ZDTestingFramework test`);
|
|
21
21
|
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Going to use default mode as dev`);
|
|
22
22
|
}
|
|
23
|
-
function initializeEnvConfig(mode, isAuthMode) {
|
|
23
|
+
function initializeEnvConfig(stage, mode, isAuthMode) {
|
|
24
|
+
if (!mode) {
|
|
25
|
+
addHelperLogsForEnvInitialization();
|
|
26
|
+
mode = 'dev';
|
|
27
|
+
}
|
|
28
|
+
const configFilePath = (0, _fs.readFileSync)(_path.default.resolve(process.cwd(), `./${(0, _configFileNameProvider.getEnvConfigFilePath)(stage, mode)}`));
|
|
24
29
|
try {
|
|
25
|
-
|
|
26
|
-
addHelperLogsForEnvInitialization();
|
|
27
|
-
mode = 'dev';
|
|
28
|
-
}
|
|
29
|
-
const configFile = (0, _fs.readFileSync)(_path.default.resolve(process.cwd(), `./${(0, _configFileNameProvider.getEnvConfigFilePath)(mode)}`));
|
|
30
|
-
const configJSON = JSON.parse(configFile);
|
|
30
|
+
const configJSON = JSON.parse(configFilePath);
|
|
31
31
|
setEnvironmentVariables({
|
|
32
32
|
...configJSON,
|
|
33
|
+
stage,
|
|
33
34
|
mode
|
|
34
35
|
});
|
|
35
36
|
if (isAuthMode) {
|
|
@@ -38,6 +39,6 @@ function initializeEnvConfig(mode, isAuthMode) {
|
|
|
38
39
|
}
|
|
39
40
|
} catch (err) {
|
|
40
41
|
_logger.Logger.error(err);
|
|
41
|
-
throw new Error(`Config File Not Exists. Please provide a
|
|
42
|
+
throw new Error(`Config File Not Exists. Please provide a ${configFilePath} to initialize the environment variables`);
|
|
42
43
|
}
|
|
43
44
|
}
|
|
@@ -13,7 +13,9 @@ exports.isCI = isCI;
|
|
|
13
13
|
exports.isDevelopmentSetup = isDevelopmentSetup;
|
|
14
14
|
var _path = _interopRequireDefault(require("path"));
|
|
15
15
|
var _fs = require("fs");
|
|
16
|
-
var
|
|
16
|
+
var _configPathResolver = require("../configPathResolver");
|
|
17
|
+
var _ConfigurationHelper = require("./../../configuration/ConfigurationHelper");
|
|
18
|
+
var _configConstants = _interopRequireDefault(require("../../constants/configConstants"));
|
|
17
19
|
/* eslint-disable global-require */
|
|
18
20
|
function getRunMode() {
|
|
19
21
|
let {
|
|
@@ -30,19 +32,18 @@ function isDevelopmentSetup() {
|
|
|
30
32
|
return mode === 'DEV' || mode === 'dev';
|
|
31
33
|
}
|
|
32
34
|
function getDefaultActorConf() {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
const filePath = _path.default.join(uatDirectory, modeSettingsFile);
|
|
35
|
+
const stage = (0, _ConfigurationHelper.getRunStage)();
|
|
36
|
+
const stagePath = (0, _configPathResolver.getConfigPath)(stage);
|
|
37
|
+
const modeSettingsFile = `${stagePath}/${getRunMode()}/${_configConstants.default.SETTINGS_FILE}`;
|
|
38
|
+
const filePath = _path.default.join(_path.default.resolve(process.cwd(), modeSettingsFile));
|
|
38
39
|
try {
|
|
39
40
|
if (!(0, _fs.existsSync)(filePath)) {
|
|
40
|
-
const defaultSettingsFile = _path.default.join(
|
|
41
|
+
const defaultSettingsFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.SETTINGS_FILE}`));
|
|
41
42
|
return require(defaultSettingsFile);
|
|
42
43
|
}
|
|
43
44
|
return require(filePath);
|
|
44
45
|
} catch (error) {
|
|
45
|
-
throw new Error(`${
|
|
46
|
+
throw new Error(`${filePath} file missing.`);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
function getDefaultActor() {
|
|
@@ -53,18 +54,17 @@ function getDefaultActor() {
|
|
|
53
54
|
return getUserForSelectedEditionAndProfile(edition, profile);
|
|
54
55
|
}
|
|
55
56
|
function getListOfActors(betaFeature) {
|
|
56
|
-
const {
|
|
57
|
-
uatDirectory
|
|
58
|
-
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
59
57
|
const mode = getRunMode();
|
|
60
|
-
|
|
58
|
+
const stage = (0, _ConfigurationHelper.getRunStage)();
|
|
59
|
+
const stagePath = (0, _configPathResolver.getConfigPath)(stage);
|
|
60
|
+
let configFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${mode}/${_configConstants.default.ACTOR_DIR}/${_configConstants.default.INDEX_FILE}`));
|
|
61
61
|
let betaReference = mode;
|
|
62
62
|
if (!(0, _fs.existsSync)(configFile)) {
|
|
63
|
-
configFile = _path.default.join(
|
|
63
|
+
configFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.ACTOR_DIR}/${_configConstants.default.INDEX_FILE}`));
|
|
64
64
|
betaReference = "default";
|
|
65
65
|
}
|
|
66
66
|
if (betaFeature) {
|
|
67
|
-
configFile = _path.default.join(
|
|
67
|
+
configFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${betaReference}/${_configConstants.default.ACTOR_DIR}/${_configConstants.default.BETA_DIR}/${betaFeature}/${_configConstants.default.INDEX_FILE}`));
|
|
68
68
|
if (!(0, _fs.existsSync)(configFile)) {
|
|
69
69
|
throw new Error(`There is no beta feature configured with the name "${betaFeature}"`);
|
|
70
70
|
}
|
|
@@ -10,22 +10,29 @@ exports.getUATFileName = getUATFileName;
|
|
|
10
10
|
var _path = _interopRequireDefault(require("path"));
|
|
11
11
|
var _fs = _interopRequireDefault(require("fs"));
|
|
12
12
|
var _auth = require("./auth");
|
|
13
|
-
|
|
13
|
+
var _ConfigurationHelper = require("./../configuration/ConfigurationHelper");
|
|
14
|
+
var _configPathResolver = require("./configPathResolver");
|
|
15
|
+
var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
|
|
16
|
+
function getUATFileName(stage, mode) {
|
|
17
|
+
stage = stage || (0, _ConfigurationHelper.getRunStage)();
|
|
14
18
|
mode = mode || (0, _auth.getRunMode)();
|
|
15
|
-
const
|
|
19
|
+
const stagePath = (0, _configPathResolver.getConfigPath)(stage);
|
|
20
|
+
const uatConfFilePath = _path.default.resolve(process.cwd(), `${stagePath}/${mode}/${_configConstants.default.UAT_CONFIG_FILE}`);
|
|
16
21
|
if (_fs.default.existsSync(uatConfFilePath)) {
|
|
17
22
|
return uatConfFilePath;
|
|
18
23
|
}
|
|
19
|
-
|
|
24
|
+
;
|
|
25
|
+
return _path.default.resolve(process.cwd(), `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.UAT_CONFIG_FILE}`);
|
|
20
26
|
}
|
|
21
|
-
function getEnvConfigFilePath(mode) {
|
|
22
|
-
const
|
|
27
|
+
function getEnvConfigFilePath(stage, mode) {
|
|
28
|
+
const stagePath = (0, _configPathResolver.getConfigPath)(stage);
|
|
29
|
+
const confFilePath = `${stagePath}/${mode}/${_configConstants.default.SETTINGS_FILE}`;
|
|
23
30
|
// TODO: Actors Mode as config
|
|
24
31
|
if (_fs.default.existsSync(confFilePath)) {
|
|
25
|
-
return
|
|
32
|
+
return confFilePath;
|
|
26
33
|
}
|
|
27
|
-
return
|
|
34
|
+
return `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.SETTINGS_FILE}`;
|
|
28
35
|
}
|
|
29
36
|
function getReportFileName() {
|
|
30
|
-
return
|
|
37
|
+
return `${_configConstants.default.TEST_SUMMARY_FILE}`;
|
|
31
38
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getConfigPath = getConfigPath;
|
|
8
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _propertiesReader = _interopRequireDefault(require("properties-reader"));
|
|
11
|
+
var _logger = require("../../../utils/logger");
|
|
12
|
+
var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
|
|
13
|
+
//This function reads a properties file and returns the entire properties
|
|
14
|
+
|
|
15
|
+
function readPropertiesFile(relativeFilePath) {
|
|
16
|
+
const filePath = _path.default.resolve(process.cwd(), relativeFilePath);
|
|
17
|
+
let properties;
|
|
18
|
+
if (_fs.default.existsSync(filePath)) {
|
|
19
|
+
properties = (0, _propertiesReader.default)(filePath);
|
|
20
|
+
} else {
|
|
21
|
+
// we have to remove this logic after adding all the projects with proper config files
|
|
22
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Properties file ${filePath} not found. Using default configurations.`);
|
|
23
|
+
properties = (0, _propertiesReader.default)();
|
|
24
|
+
properties.set('uat', 'uat/conf');
|
|
25
|
+
}
|
|
26
|
+
return properties;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// This function return the value for the passed arguments key
|
|
30
|
+
|
|
31
|
+
function getConfigPath(stage) {
|
|
32
|
+
const props = readPropertiesFile(_configConstants.default.STAGE_CONFIG_MAP_FILE);
|
|
33
|
+
const configPath = props.get(stage);
|
|
34
|
+
if (!configPath) {
|
|
35
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `No config mapping found for stage: "${stage}"`);
|
|
36
|
+
}
|
|
37
|
+
return configPath;
|
|
38
|
+
}
|
|
@@ -111,15 +111,16 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
111
111
|
*/
|
|
112
112
|
|
|
113
113
|
function getConfigFilePath() {
|
|
114
|
-
return
|
|
114
|
+
return (0, _configFileNameProvider.getUATFileName)();
|
|
115
115
|
}
|
|
116
116
|
function generateConfigFromFile() {
|
|
117
117
|
if (cachedConfig === null) {
|
|
118
118
|
// Getting the default config's from framework
|
|
119
119
|
const uatConfig = new _Configuration.default(getDefaultConfig());
|
|
120
120
|
// overriding the application config's from project
|
|
121
|
-
const appConfig = new _Configuration.default((0, _ConfigurationHelper.getApplicationConfig)());
|
|
122
121
|
const userArgConfig = new _Configuration.default(_UserArgs.default.parseToObject(process.argv.slice(2)));
|
|
122
|
+
const stage = userArgConfig.get("stage");
|
|
123
|
+
const appConfig = new _Configuration.default((0, _ConfigurationHelper.getApplicationConfig)(stage));
|
|
123
124
|
// overriding the user config's from CLI
|
|
124
125
|
uatConfig.addAll(appConfig);
|
|
125
126
|
uatConfig.addAll(userArgConfig);
|
|
@@ -9,17 +9,17 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
var _logger = require("../../../../utils/logger");
|
|
11
11
|
var _fileUtils = require("../../../../utils/fileUtils");
|
|
12
|
-
var
|
|
12
|
+
var _reporterConstants = _interopRequireDefault(require("../../constants/reporterConstants"));
|
|
13
13
|
function mergeAbortedTestsIntoLastRun() {
|
|
14
|
-
let resultsFile = _path.default.resolve(process.cwd(),
|
|
15
|
-
lastRunFile = _path.default.resolve(process.cwd(),
|
|
14
|
+
let resultsFile = _path.default.resolve(process.cwd(), _reporterConstants.default.DEFAULT_REPORTER_PATH),
|
|
15
|
+
lastRunFile = _path.default.resolve(process.cwd(), _reporterConstants.default.LAST_RUN_REPORTER_PATH);
|
|
16
16
|
try {
|
|
17
17
|
let report;
|
|
18
18
|
try {
|
|
19
19
|
report = JSON.parse(_fs.default.readFileSync(resultsFile, 'utf-8'));
|
|
20
20
|
} catch (e) {
|
|
21
|
-
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse results file: ${resultsFile}
|
|
22
|
-
|
|
21
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse results file: ${resultsFile}`, e);
|
|
22
|
+
return;
|
|
23
23
|
}
|
|
24
24
|
const abortedTests = collectAbortedSpecIds(report);
|
|
25
25
|
let lastRunData = {
|
|
@@ -32,8 +32,7 @@ function mergeAbortedTestsIntoLastRun() {
|
|
|
32
32
|
lastRunData.status = parsed.status || lastRunData.status;
|
|
33
33
|
lastRunData.failedTests = Array.isArray(parsed.failedTests) ? parsed.failedTests : [];
|
|
34
34
|
} catch (e) {
|
|
35
|
-
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse existing last-run file: ${lastRunFile}
|
|
36
|
-
throw e;
|
|
35
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse existing last-run file: ${lastRunFile}`, e);
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
|
|
@@ -86,7 +86,8 @@ function main() {
|
|
|
86
86
|
// overriding the application config's from project
|
|
87
87
|
const userArgConfig = new _Configuration.default(_UserArgs.default.parseToObject(process.argv.slice(2)));
|
|
88
88
|
const mode = userArgConfig.get("mode");
|
|
89
|
-
|
|
89
|
+
const stage = userArgConfig.get("stage");
|
|
90
|
+
uatConfig.addAll(new _Configuration.default((0, _ConfigurationHelper.getApplicationConfig)(stage, mode)));
|
|
90
91
|
// overriding the user config's from CLI
|
|
91
92
|
uatConfig.addAll(userArgConfig);
|
|
92
93
|
const modules = uatConfig.get('modules');
|
|
@@ -95,6 +96,7 @@ function main() {
|
|
|
95
96
|
//We need to change this process.env variable to pass the module name in future.
|
|
96
97
|
process.env.modules = modules;
|
|
97
98
|
process.env.tearDown = tearDown;
|
|
99
|
+
process.env.stage = stage;
|
|
98
100
|
const {
|
|
99
101
|
isAuthMode,
|
|
100
102
|
editionOrder,
|
|
@@ -102,7 +104,7 @@ function main() {
|
|
|
102
104
|
bddMode = false,
|
|
103
105
|
headless = false
|
|
104
106
|
} = uatConfig.getAll();
|
|
105
|
-
(0, _envInitializer.initializeEnvConfig)(mode, isAuthMode);
|
|
107
|
+
(0, _envInitializer.initializeEnvConfig)(stage, mode, isAuthMode);
|
|
106
108
|
|
|
107
109
|
//This is only used for pass the user arguments to need places in legacy code. We need to rewamp that also.
|
|
108
110
|
const userArgsObject = userArgConfig.getAll();
|
|
@@ -4,31 +4,72 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
var _fs = require("fs");
|
|
5
5
|
var _path = _interopRequireDefault(require("path"));
|
|
6
6
|
var _configFileNameProvider = require("../../../../../core/playwright/helpers/configFileNameProvider");
|
|
7
|
+
var _configPathResolver = require("../../../../../core/playwright/helpers/configPathResolver");
|
|
7
8
|
jest.mock('fs');
|
|
8
|
-
jest.mock('path')
|
|
9
|
+
jest.mock('path', () => ({
|
|
10
|
+
resolve: jest.fn()
|
|
11
|
+
}));
|
|
12
|
+
jest.mock("../../../../../core/playwright/helpers/configPathResolver", () => ({
|
|
13
|
+
getConfigPath: jest.fn()
|
|
14
|
+
}));
|
|
9
15
|
const mockCwd = '/mock/current/directory';
|
|
10
16
|
_path.default.resolve = jest.fn();
|
|
11
17
|
process.cwd = jest.fn(() => mockCwd);
|
|
12
18
|
describe('getUATFileName', () => {
|
|
13
19
|
beforeEach(() => {
|
|
14
20
|
jest.clearAllMocks();
|
|
21
|
+
_path.default.resolve.mockImplementation((...segments) => segments.join('/'));
|
|
15
22
|
});
|
|
16
|
-
test('return
|
|
23
|
+
test('should return pipeline-matched config path when file exists', () => {
|
|
24
|
+
const stage = 'uat';
|
|
17
25
|
const mode = 'cd';
|
|
18
|
-
|
|
26
|
+
_configPathResolver.getConfigPath.mockReturnValue(`${stage}/conf`);
|
|
19
27
|
_fs.existsSync.mockReturnValue(true);
|
|
20
|
-
|
|
21
|
-
const result = (0, _configFileNameProvider.getUATFileName)(mode);
|
|
22
|
-
expect(
|
|
23
|
-
expect(
|
|
28
|
+
const expected = `${process.cwd()}/${stage}/conf/${mode}/uat.config.js`;
|
|
29
|
+
const result = (0, _configFileNameProvider.getUATFileName)(stage, mode);
|
|
30
|
+
expect(_configPathResolver.getConfigPath).toHaveBeenCalledWith(stage);
|
|
31
|
+
expect(_fs.existsSync).toHaveBeenCalledWith(expected);
|
|
32
|
+
expect(result).toBe(expected);
|
|
24
33
|
});
|
|
25
|
-
test('
|
|
26
|
-
const mode = '
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
test('should use default stage and mode when not provided', () => {
|
|
35
|
+
const mode = 'dev';
|
|
36
|
+
const stageConfigPath = 'uat/conf';
|
|
37
|
+
const expectedPath = `${mockCwd}/${stageConfigPath}/${mode}/uat.config.js`;
|
|
38
|
+
_fs.existsSync.mockReturnValue(true);
|
|
30
39
|
const result = (0, _configFileNameProvider.getUATFileName)(mode);
|
|
31
40
|
expect(_fs.existsSync).toHaveBeenCalledWith(`${mockCwd}/uat/conf/${mode}/uat.config.js`);
|
|
32
|
-
expect(result).toBe(
|
|
41
|
+
expect(result).toBe(expectedPath);
|
|
42
|
+
});
|
|
43
|
+
test('should return the default config files for pipeline matched files not exists', () => {
|
|
44
|
+
const mockStage = 'uat';
|
|
45
|
+
const mockMode = 'ci';
|
|
46
|
+
const stageConfigPath = 'uat/conf';
|
|
47
|
+
const nonExistingPath = `${mockCwd}/${stageConfigPath}/${mockMode}/uat.config.js`;
|
|
48
|
+
const expectedDefaultPath = `${mockCwd}/${mockStage}/conf/default/uat.config.js`;
|
|
49
|
+
_configPathResolver.getConfigPath.mockReturnValue(stageConfigPath);
|
|
50
|
+
_fs.existsSync.mockReturnValue(false);
|
|
51
|
+
const result = (0, _configFileNameProvider.getUATFileName)(mockStage, mockMode);
|
|
52
|
+
expect(_fs.existsSync).toHaveBeenCalledWith(nonExistingPath);
|
|
53
|
+
expect(result).toBe(expectedDefaultPath);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('getEnvConfigFilePath', () => {
|
|
57
|
+
beforeEach(() => {
|
|
58
|
+
jest.clearAllMocks();
|
|
59
|
+
_path.default.resolve.mockImplementation((...segments) => segments.join('/'));
|
|
60
|
+
});
|
|
61
|
+
test('should return conf file path when file exists', () => {
|
|
62
|
+
_configPathResolver.getConfigPath.mockReturnValue('uat/conf');
|
|
63
|
+
_fs.existsSync.mockReturnValue(true);
|
|
64
|
+
const result = (0, _configFileNameProvider.getEnvConfigFilePath)('uat', 'cd');
|
|
65
|
+
expect(_configPathResolver.getConfigPath).toHaveBeenCalledWith('uat');
|
|
66
|
+
expect(_fs.existsSync).toHaveBeenCalled();
|
|
67
|
+
expect(result).toBe('uat/conf/cd/settings.json');
|
|
68
|
+
});
|
|
69
|
+
test('should return default path when file does not exist', () => {
|
|
70
|
+
_configPathResolver.getConfigPath.mockReturnValue('uat/conf');
|
|
71
|
+
_fs.existsSync.mockReturnValue(false);
|
|
72
|
+
const result = (0, _configFileNameProvider.getEnvConfigFilePath)('uat', 'ci');
|
|
73
|
+
expect(result).toBe('uat/conf/default/settings.json');
|
|
33
74
|
});
|
|
34
75
|
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
5
|
+
var _path = _interopRequireDefault(require("path"));
|
|
6
|
+
var _propertiesReader = _interopRequireDefault(require("properties-reader"));
|
|
7
|
+
var _configPathResolver = require("../../../../../core/playwright/helpers/configPathResolver");
|
|
8
|
+
var _logger = require("../../../../../utils/logger");
|
|
9
|
+
var _configConstants = _interopRequireDefault(require("../../../../../core/playwright/constants/configConstants"));
|
|
10
|
+
jest.mock('fs');
|
|
11
|
+
jest.mock('path');
|
|
12
|
+
jest.mock('properties-reader');
|
|
13
|
+
jest.mock('../../../../../utils/logger', () => ({
|
|
14
|
+
Logger: {
|
|
15
|
+
log: jest.fn(),
|
|
16
|
+
INFO_TYPE: 'info',
|
|
17
|
+
FAILURE_TYPE: 'failure'
|
|
18
|
+
}
|
|
19
|
+
}));
|
|
20
|
+
describe('getConfigPath', () => {
|
|
21
|
+
const mockProps = {
|
|
22
|
+
get: jest.fn(),
|
|
23
|
+
set: jest.fn()
|
|
24
|
+
};
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
jest.clearAllMocks();
|
|
27
|
+
_propertiesReader.default.mockReturnValue(mockProps);
|
|
28
|
+
_path.default.resolve.mockImplementation((...args) => args.join('/'));
|
|
29
|
+
});
|
|
30
|
+
test('should return config path when properties file exists and has mapping', () => {
|
|
31
|
+
_fs.default.existsSync.mockReturnValue(true);
|
|
32
|
+
mockProps.get.mockReturnValue('uat/conf');
|
|
33
|
+
const result = (0, _configPathResolver.getConfigPath)('uat');
|
|
34
|
+
expect(_fs.default.existsSync).toHaveBeenCalledWith(expect.stringContaining(_configConstants.default.STAGE_CONFIG_MAP_FILE));
|
|
35
|
+
expect(_propertiesReader.default).toHaveBeenCalled();
|
|
36
|
+
expect(mockProps.get).toHaveBeenCalledWith('uat');
|
|
37
|
+
expect(result).toBe('uat/conf');
|
|
38
|
+
expect(_logger.Logger.log).not.toHaveBeenCalledWith(_logger.Logger.FAILURE_TYPE, expect.any(String));
|
|
39
|
+
});
|
|
40
|
+
test('should log info and use default mapping if file does not exist', () => {
|
|
41
|
+
_fs.default.existsSync.mockReturnValue(false);
|
|
42
|
+
mockProps.get.mockImplementation(key => key === 'uat' ? 'uat/conf' : undefined);
|
|
43
|
+
const result = (0, _configPathResolver.getConfigPath)('uat');
|
|
44
|
+
expect(_logger.Logger.log).toHaveBeenCalledWith(_logger.Logger.INFO_TYPE, expect.stringContaining('not found'));
|
|
45
|
+
expect(mockProps.set).toHaveBeenCalledWith('uat', 'uat/conf');
|
|
46
|
+
expect(result).toBe('uat/conf');
|
|
47
|
+
});
|
|
48
|
+
test('should log failure if config mapping not found for stage', () => {
|
|
49
|
+
_fs.default.existsSync.mockReturnValue(true);
|
|
50
|
+
mockProps.get.mockReturnValue(undefined);
|
|
51
|
+
const result = (0, _configPathResolver.getConfigPath)('stageX');
|
|
52
|
+
expect(_logger.Logger.log).toHaveBeenCalledWith(_logger.Logger.FAILURE_TYPE, expect.stringContaining('stageX'));
|
|
53
|
+
expect(result).toBeUndefined();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -1,80 +1,83 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _fs = require("fs");
|
|
4
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
5
5
|
var _path = _interopRequireDefault(require("path"));
|
|
6
|
+
var _getUsers = require("../../../../../core/playwright/helpers/auth/getUsers");
|
|
7
|
+
var _configPathResolver = require("../../../../../core/playwright/helpers/configPathResolver");
|
|
6
8
|
jest.mock('fs');
|
|
7
9
|
jest.mock('path');
|
|
8
|
-
jest.mock('../../../../../core/playwright/
|
|
9
|
-
|
|
10
|
-
uatDirectory: '/test/directory'
|
|
11
|
-
})),
|
|
12
|
-
getRunMode: jest.fn(() => 'dev')
|
|
10
|
+
jest.mock('../../../../../core/playwright/helpers/configPathResolver', () => ({
|
|
11
|
+
getConfigPath: jest.fn()
|
|
13
12
|
}));
|
|
14
|
-
const {
|
|
15
|
-
getListOfActors
|
|
16
|
-
} = require('../../../../../core/playwright/helpers/auth/getUsers');
|
|
17
13
|
describe('getListOfActors', () => {
|
|
14
|
+
const stageConfig = 'uat/conf';
|
|
15
|
+
const mode = 'dev';
|
|
16
|
+
const stage = 'uat';
|
|
18
17
|
beforeEach(() => {
|
|
19
18
|
jest.clearAllMocks();
|
|
20
19
|
_path.default.join.mockImplementation((...args) => args.join('/'));
|
|
20
|
+
_path.default.resolve.mockImplementation((...args) => args.join('/'));
|
|
21
|
+
_configPathResolver.getConfigPath.mockReturnValue('uat/conf');
|
|
21
22
|
});
|
|
22
23
|
test('throws an error when config file cannot be loaded', () => {
|
|
23
|
-
_fs.existsSync.mockReturnValueOnce(true);
|
|
24
|
-
|
|
25
|
-
jest.mock('/test/directory/conf/dev/actors/index.js', () => {
|
|
24
|
+
_fs.default.existsSync.mockReturnValueOnce(true);
|
|
25
|
+
jest.mock('/uat/conf/dev/actors/index.js', () => {
|
|
26
26
|
throw new Error('Loading error');
|
|
27
27
|
}, {
|
|
28
28
|
virtual: true
|
|
29
29
|
});
|
|
30
|
-
expect(() => getListOfActors()).toThrow(
|
|
30
|
+
expect(() => (0, _getUsers.getListOfActors)()).toThrow(`Error loading actor configuration from ${_path.default.join(_path.default.resolve(process.cwd(), 'uat/conf/dev/actors/index.js'))}`);
|
|
31
31
|
});
|
|
32
32
|
test('throws an error when beta feature config does not exist', () => {
|
|
33
|
-
_fs.existsSync.mockReturnValueOnce(true) // Main config file exists
|
|
33
|
+
_fs.default.existsSync.mockReturnValueOnce(true) // Main config file exists
|
|
34
34
|
.mockReturnValueOnce(false); // Beta feature config does not exist in either path
|
|
35
35
|
|
|
36
36
|
const betaFeature = 'nonExistentFeature';
|
|
37
|
-
expect(() => getListOfActors(betaFeature)).toThrow(`There is no beta feature configured with the name "${betaFeature}"`);
|
|
37
|
+
expect(() => (0, _getUsers.getListOfActors)(betaFeature)).toThrow(`There is no beta feature configured with the name "${betaFeature}"`);
|
|
38
38
|
});
|
|
39
|
-
test('loads main configuration when betaFeature is not provided and main config
|
|
40
|
-
_fs.existsSync.mockReturnValueOnce(true);
|
|
41
|
-
|
|
39
|
+
test('loads main configuration when betaFeature is not provided and main config exists', () => {
|
|
40
|
+
_fs.default.existsSync.mockReturnValueOnce(true);
|
|
41
|
+
const file = _path.default.join(_path.default.resolve(process.cwd(), `${stageConfig}/${mode}/actors/index.js`));
|
|
42
|
+
jest.doMock(file, () => ({
|
|
42
43
|
actors: []
|
|
43
44
|
}), {
|
|
44
45
|
virtual: true
|
|
45
46
|
});
|
|
46
|
-
const result = getListOfActors();
|
|
47
|
+
const result = (0, _getUsers.getListOfActors)();
|
|
47
48
|
expect(result).toEqual({
|
|
48
49
|
actors: []
|
|
49
50
|
});
|
|
50
51
|
});
|
|
51
52
|
test('falls back to default configuration if main config file does not exist', () => {
|
|
52
|
-
_fs.existsSync.mockReturnValueOnce(false)
|
|
53
|
-
|
|
53
|
+
_fs.default.existsSync.mockReturnValueOnce(false) // Main config file missing
|
|
54
|
+
.mockReturnValueOnce(true); // Beta feature config exists
|
|
55
|
+
|
|
56
|
+
const defaultConfigFile = _path.default.join(_path.default.resolve(process.cwd(), `${stage}/conf/default/actors/index.js`));
|
|
57
|
+
jest.doMock(defaultConfigFile, () => ({
|
|
54
58
|
actors: []
|
|
55
59
|
}), {
|
|
56
60
|
virtual: true
|
|
57
61
|
});
|
|
58
|
-
const result = getListOfActors();
|
|
62
|
+
const result = (0, _getUsers.getListOfActors)();
|
|
59
63
|
expect(result).toEqual({
|
|
60
64
|
actors: []
|
|
61
65
|
});
|
|
62
66
|
});
|
|
63
67
|
test('loads beta feature configuration when betaFeature is provided', () => {
|
|
64
|
-
_fs.existsSync.mockReturnValueOnce(true) // Main config file exists
|
|
68
|
+
_fs.default.existsSync.mockReturnValueOnce(true) // Main config file exists
|
|
65
69
|
.mockReturnValueOnce(true); // Beta feature config exists
|
|
66
70
|
|
|
67
71
|
const betaFeature = 'parentchild';
|
|
68
|
-
const betaFeaturePath =
|
|
72
|
+
const betaFeaturePath = _path.default.join(_path.default.resolve(process.cwd(), `${stageConfig}/${mode}/actors/beta/${betaFeature}/index.js`));
|
|
69
73
|
jest.doMock(betaFeaturePath, () => ({
|
|
70
74
|
betaActors: []
|
|
71
75
|
}), {
|
|
72
76
|
virtual: true
|
|
73
77
|
});
|
|
74
|
-
const result = getListOfActors(betaFeature);
|
|
78
|
+
const result = (0, _getUsers.getListOfActors)(betaFeature);
|
|
75
79
|
expect(result).toEqual({
|
|
76
80
|
betaActors: []
|
|
77
81
|
});
|
|
78
|
-
expect(_path.default.join).toHaveBeenCalledWith('/test/directory', `conf/dev/actors/beta/${betaFeature}/index.js`);
|
|
79
82
|
});
|
|
80
83
|
});
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zohodesk/testinglibrary",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1-n18-experimental",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@zohodesk/testinglibrary",
|
|
9
|
-
"version": "0.5.
|
|
9
|
+
"version": "0.5.1-n18-experimental",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"msw": "1.2.3",
|
|
27
27
|
"playwright": "1.53.2",
|
|
28
28
|
"playwright-bdd": "8.3.1",
|
|
29
|
+
"properties-reader": "2.3.0",
|
|
29
30
|
"supports-color": "8.1.1"
|
|
30
31
|
},
|
|
31
32
|
"bin": {
|
|
@@ -2055,9 +2056,9 @@
|
|
|
2055
2056
|
}
|
|
2056
2057
|
},
|
|
2057
2058
|
"node_modules/@cucumber/cucumber/node_modules/glob": {
|
|
2058
|
-
"version": "10.
|
|
2059
|
-
"resolved": "https://registry.npmjs.org/glob/-/glob-10.
|
|
2060
|
-
"integrity": "sha512-
|
|
2059
|
+
"version": "10.5.0",
|
|
2060
|
+
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
|
|
2061
|
+
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
|
|
2061
2062
|
"license": "ISC",
|
|
2062
2063
|
"dependencies": {
|
|
2063
2064
|
"foreground-child": "^3.1.0",
|
|
@@ -2400,9 +2401,9 @@
|
|
|
2400
2401
|
"peer": true
|
|
2401
2402
|
},
|
|
2402
2403
|
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
|
|
2403
|
-
"version": "4.1.
|
|
2404
|
-
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.
|
|
2405
|
-
"integrity": "sha512-
|
|
2404
|
+
"version": "4.1.1",
|
|
2405
|
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
|
|
2406
|
+
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
|
|
2406
2407
|
"license": "MIT",
|
|
2407
2408
|
"peer": true,
|
|
2408
2409
|
"dependencies": {
|
|
@@ -4051,9 +4052,9 @@
|
|
|
4051
4052
|
"license": "MIT"
|
|
4052
4053
|
},
|
|
4053
4054
|
"node_modules/@types/node": {
|
|
4054
|
-
"version": "24.10.
|
|
4055
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.
|
|
4056
|
-
"integrity": "sha512-
|
|
4055
|
+
"version": "24.10.1",
|
|
4056
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
|
|
4057
|
+
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
|
|
4057
4058
|
"license": "MIT",
|
|
4058
4059
|
"dependencies": {
|
|
4059
4060
|
"undici-types": "~7.16.0"
|
|
@@ -4066,18 +4067,18 @@
|
|
|
4066
4067
|
"license": "MIT"
|
|
4067
4068
|
},
|
|
4068
4069
|
"node_modules/@types/react": {
|
|
4069
|
-
"version": "19.2.
|
|
4070
|
-
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.
|
|
4071
|
-
"integrity": "sha512-
|
|
4070
|
+
"version": "19.2.6",
|
|
4071
|
+
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.6.tgz",
|
|
4072
|
+
"integrity": "sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==",
|
|
4072
4073
|
"license": "MIT",
|
|
4073
4074
|
"dependencies": {
|
|
4074
|
-
"csstype": "^3.
|
|
4075
|
+
"csstype": "^3.2.2"
|
|
4075
4076
|
}
|
|
4076
4077
|
},
|
|
4077
4078
|
"node_modules/@types/react-dom": {
|
|
4078
|
-
"version": "19.2.
|
|
4079
|
-
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.
|
|
4080
|
-
"integrity": "sha512-
|
|
4079
|
+
"version": "19.2.3",
|
|
4080
|
+
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
|
|
4081
|
+
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
|
|
4081
4082
|
"license": "MIT",
|
|
4082
4083
|
"peerDependencies": {
|
|
4083
4084
|
"@types/react": "^19.2.0"
|
|
@@ -4129,9 +4130,9 @@
|
|
|
4129
4130
|
"license": "MIT"
|
|
4130
4131
|
},
|
|
4131
4132
|
"node_modules/@types/yargs": {
|
|
4132
|
-
"version": "17.0.
|
|
4133
|
-
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.
|
|
4134
|
-
"integrity": "sha512-
|
|
4133
|
+
"version": "17.0.35",
|
|
4134
|
+
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
|
|
4135
|
+
"integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
|
|
4135
4136
|
"license": "MIT",
|
|
4136
4137
|
"dependencies": {
|
|
4137
4138
|
"@types/yargs-parser": "*"
|
|
@@ -4685,9 +4686,9 @@
|
|
|
4685
4686
|
"license": "MIT"
|
|
4686
4687
|
},
|
|
4687
4688
|
"node_modules/baseline-browser-mapping": {
|
|
4688
|
-
"version": "2.8.
|
|
4689
|
-
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.
|
|
4690
|
-
"integrity": "sha512-
|
|
4689
|
+
"version": "2.8.29",
|
|
4690
|
+
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz",
|
|
4691
|
+
"integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==",
|
|
4691
4692
|
"license": "Apache-2.0",
|
|
4692
4693
|
"bin": {
|
|
4693
4694
|
"baseline-browser-mapping": "dist/cli.js"
|
|
@@ -4739,9 +4740,9 @@
|
|
|
4739
4740
|
}
|
|
4740
4741
|
},
|
|
4741
4742
|
"node_modules/browserslist": {
|
|
4742
|
-
"version": "4.
|
|
4743
|
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.
|
|
4744
|
-
"integrity": "sha512-
|
|
4743
|
+
"version": "4.28.0",
|
|
4744
|
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz",
|
|
4745
|
+
"integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
|
|
4745
4746
|
"funding": [
|
|
4746
4747
|
{
|
|
4747
4748
|
"type": "opencollective",
|
|
@@ -4758,10 +4759,10 @@
|
|
|
4758
4759
|
],
|
|
4759
4760
|
"license": "MIT",
|
|
4760
4761
|
"dependencies": {
|
|
4761
|
-
"baseline-browser-mapping": "^2.8.
|
|
4762
|
-
"caniuse-lite": "^1.0.
|
|
4763
|
-
"electron-to-chromium": "^1.5.
|
|
4764
|
-
"node-releases": "^2.0.
|
|
4762
|
+
"baseline-browser-mapping": "^2.8.25",
|
|
4763
|
+
"caniuse-lite": "^1.0.30001754",
|
|
4764
|
+
"electron-to-chromium": "^1.5.249",
|
|
4765
|
+
"node-releases": "^2.0.27",
|
|
4765
4766
|
"update-browserslist-db": "^1.1.4"
|
|
4766
4767
|
},
|
|
4767
4768
|
"bin": {
|
|
@@ -4876,9 +4877,9 @@
|
|
|
4876
4877
|
}
|
|
4877
4878
|
},
|
|
4878
4879
|
"node_modules/caniuse-lite": {
|
|
4879
|
-
"version": "1.0.
|
|
4880
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
4881
|
-
"integrity": "sha512-
|
|
4880
|
+
"version": "1.0.30001755",
|
|
4881
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz",
|
|
4882
|
+
"integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==",
|
|
4882
4883
|
"funding": [
|
|
4883
4884
|
{
|
|
4884
4885
|
"type": "opencollective",
|
|
@@ -5188,9 +5189,9 @@
|
|
|
5188
5189
|
}
|
|
5189
5190
|
},
|
|
5190
5191
|
"node_modules/core-js": {
|
|
5191
|
-
"version": "3.
|
|
5192
|
-
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.
|
|
5193
|
-
"integrity": "sha512-
|
|
5192
|
+
"version": "3.47.0",
|
|
5193
|
+
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz",
|
|
5194
|
+
"integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==",
|
|
5194
5195
|
"dev": true,
|
|
5195
5196
|
"hasInstallScript": true,
|
|
5196
5197
|
"license": "MIT",
|
|
@@ -5200,13 +5201,13 @@
|
|
|
5200
5201
|
}
|
|
5201
5202
|
},
|
|
5202
5203
|
"node_modules/core-js-compat": {
|
|
5203
|
-
"version": "3.
|
|
5204
|
-
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.
|
|
5205
|
-
"integrity": "sha512-
|
|
5204
|
+
"version": "3.47.0",
|
|
5205
|
+
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz",
|
|
5206
|
+
"integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==",
|
|
5206
5207
|
"dev": true,
|
|
5207
5208
|
"license": "MIT",
|
|
5208
5209
|
"dependencies": {
|
|
5209
|
-
"browserslist": "^4.
|
|
5210
|
+
"browserslist": "^4.28.0"
|
|
5210
5211
|
},
|
|
5211
5212
|
"funding": {
|
|
5212
5213
|
"type": "opencollective",
|
|
@@ -5214,9 +5215,9 @@
|
|
|
5214
5215
|
}
|
|
5215
5216
|
},
|
|
5216
5217
|
"node_modules/core-js-pure": {
|
|
5217
|
-
"version": "3.
|
|
5218
|
-
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.
|
|
5219
|
-
"integrity": "sha512-
|
|
5218
|
+
"version": "3.47.0",
|
|
5219
|
+
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz",
|
|
5220
|
+
"integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==",
|
|
5220
5221
|
"hasInstallScript": true,
|
|
5221
5222
|
"license": "MIT",
|
|
5222
5223
|
"funding": {
|
|
@@ -5301,9 +5302,9 @@
|
|
|
5301
5302
|
"license": "MIT"
|
|
5302
5303
|
},
|
|
5303
5304
|
"node_modules/csstype": {
|
|
5304
|
-
"version": "3.
|
|
5305
|
-
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.
|
|
5306
|
-
"integrity": "sha512-
|
|
5305
|
+
"version": "3.2.3",
|
|
5306
|
+
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
|
5307
|
+
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
|
5307
5308
|
"license": "MIT"
|
|
5308
5309
|
},
|
|
5309
5310
|
"node_modules/data-urls": {
|
|
@@ -5569,9 +5570,9 @@
|
|
|
5569
5570
|
"license": "MIT"
|
|
5570
5571
|
},
|
|
5571
5572
|
"node_modules/electron-to-chromium": {
|
|
5572
|
-
"version": "1.5.
|
|
5573
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.
|
|
5574
|
-
"integrity": "sha512-
|
|
5573
|
+
"version": "1.5.255",
|
|
5574
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.255.tgz",
|
|
5575
|
+
"integrity": "sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==",
|
|
5575
5576
|
"license": "ISC"
|
|
5576
5577
|
},
|
|
5577
5578
|
"node_modules/emittery": {
|
|
@@ -6396,9 +6397,9 @@
|
|
|
6396
6397
|
}
|
|
6397
6398
|
},
|
|
6398
6399
|
"node_modules/form-data": {
|
|
6399
|
-
"version": "4.0.
|
|
6400
|
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.
|
|
6401
|
-
"integrity": "sha512-
|
|
6400
|
+
"version": "4.0.5",
|
|
6401
|
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
|
|
6402
|
+
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
|
|
6402
6403
|
"license": "MIT",
|
|
6403
6404
|
"dependencies": {
|
|
6404
6405
|
"asynckit": "^0.4.0",
|
|
@@ -6424,6 +6425,20 @@
|
|
|
6424
6425
|
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
|
6425
6426
|
"license": "ISC"
|
|
6426
6427
|
},
|
|
6428
|
+
"node_modules/fsevents": {
|
|
6429
|
+
"version": "2.3.3",
|
|
6430
|
+
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
|
6431
|
+
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
|
6432
|
+
"hasInstallScript": true,
|
|
6433
|
+
"license": "MIT",
|
|
6434
|
+
"optional": true,
|
|
6435
|
+
"os": [
|
|
6436
|
+
"darwin"
|
|
6437
|
+
],
|
|
6438
|
+
"engines": {
|
|
6439
|
+
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
|
6440
|
+
}
|
|
6441
|
+
},
|
|
6427
6442
|
"node_modules/function-bind": {
|
|
6428
6443
|
"version": "1.1.2",
|
|
6429
6444
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
@@ -9187,9 +9202,9 @@
|
|
|
9187
9202
|
"license": "MIT"
|
|
9188
9203
|
},
|
|
9189
9204
|
"node_modules/js-yaml": {
|
|
9190
|
-
"version": "3.14.
|
|
9191
|
-
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.
|
|
9192
|
-
"integrity": "sha512-
|
|
9205
|
+
"version": "3.14.2",
|
|
9206
|
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
|
|
9207
|
+
"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
|
|
9193
9208
|
"license": "MIT",
|
|
9194
9209
|
"dependencies": {
|
|
9195
9210
|
"argparse": "^1.0.7",
|
|
@@ -10493,6 +10508,20 @@
|
|
|
10493
10508
|
"node": ">=18"
|
|
10494
10509
|
}
|
|
10495
10510
|
},
|
|
10511
|
+
"node_modules/playwright/node_modules/fsevents": {
|
|
10512
|
+
"version": "2.3.2",
|
|
10513
|
+
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
|
10514
|
+
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
|
10515
|
+
"hasInstallScript": true,
|
|
10516
|
+
"license": "MIT",
|
|
10517
|
+
"optional": true,
|
|
10518
|
+
"os": [
|
|
10519
|
+
"darwin"
|
|
10520
|
+
],
|
|
10521
|
+
"engines": {
|
|
10522
|
+
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
|
10523
|
+
}
|
|
10524
|
+
},
|
|
10496
10525
|
"node_modules/possible-typed-array-names": {
|
|
10497
10526
|
"version": "1.1.0",
|
|
10498
10527
|
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
|
|
@@ -10544,9 +10573,9 @@
|
|
|
10544
10573
|
}
|
|
10545
10574
|
},
|
|
10546
10575
|
"node_modules/pretty-format/node_modules/@types/yargs": {
|
|
10547
|
-
"version": "15.0.
|
|
10548
|
-
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.
|
|
10549
|
-
"integrity": "sha512-
|
|
10576
|
+
"version": "15.0.20",
|
|
10577
|
+
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.20.tgz",
|
|
10578
|
+
"integrity": "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==",
|
|
10550
10579
|
"license": "MIT",
|
|
10551
10580
|
"dependencies": {
|
|
10552
10581
|
"@types/yargs-parser": "*"
|
|
@@ -10583,6 +10612,34 @@
|
|
|
10583
10612
|
"node": ">= 6"
|
|
10584
10613
|
}
|
|
10585
10614
|
},
|
|
10615
|
+
"node_modules/properties-reader": {
|
|
10616
|
+
"version": "2.3.0",
|
|
10617
|
+
"resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz",
|
|
10618
|
+
"integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==",
|
|
10619
|
+
"license": "MIT",
|
|
10620
|
+
"dependencies": {
|
|
10621
|
+
"mkdirp": "^1.0.4"
|
|
10622
|
+
},
|
|
10623
|
+
"engines": {
|
|
10624
|
+
"node": ">=14"
|
|
10625
|
+
},
|
|
10626
|
+
"funding": {
|
|
10627
|
+
"type": "github",
|
|
10628
|
+
"url": "https://github.com/steveukx/properties?sponsor=1"
|
|
10629
|
+
}
|
|
10630
|
+
},
|
|
10631
|
+
"node_modules/properties-reader/node_modules/mkdirp": {
|
|
10632
|
+
"version": "1.0.4",
|
|
10633
|
+
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
|
10634
|
+
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
|
10635
|
+
"license": "MIT",
|
|
10636
|
+
"bin": {
|
|
10637
|
+
"mkdirp": "bin/cmd.js"
|
|
10638
|
+
},
|
|
10639
|
+
"engines": {
|
|
10640
|
+
"node": ">=10"
|
|
10641
|
+
}
|
|
10642
|
+
},
|
|
10586
10643
|
"node_modules/property-expr": {
|
|
10587
10644
|
"version": "2.0.6",
|
|
10588
10645
|
"resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zohodesk/testinglibrary",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1-n18-experimental",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"msw": "1.2.3",
|
|
38
38
|
"playwright": "1.53.2",
|
|
39
39
|
"playwright-bdd": "8.3.1",
|
|
40
|
+
"properties-reader": "2.3.0",
|
|
40
41
|
"supports-color": "8.1.1"
|
|
41
42
|
},
|
|
42
43
|
"bin": {
|