@zohodesk/testinglibrary 0.0.44-n20-experimental → 0.0.45-n20-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/.vscode/mcp.json +9 -0
- package/README.md +0 -8
- package/build/core/dataGenerator/DataGenerator.js +12 -17
- package/build/core/playwright/constants/reporterConstants.js +1 -0
- package/build/core/playwright/reporter/PlaywrightReporter.js +44 -0
- package/build/core/playwright/reporter/UnitReporter.js +27 -0
- package/build/core/playwright/validateFeature.js +0 -11
- package/build/lib/cli.js +30 -7
- package/build/utils/commonUtils.js +9 -0
- package/npm-shrinkwrap.json +104 -166
- package/package.json +8 -7
- package/build/core/dataGenerator/validateGenerators.js +0 -80
- package/build/core/playwright/report-generator.js +0 -42
package/.vscode/mcp.json
ADDED
package/README.md
CHANGED
|
@@ -17,14 +17,6 @@
|
|
|
17
17
|
|
|
18
18
|
- npm run report
|
|
19
19
|
|
|
20
|
-
### v0.0.44-n20-experimental - 23-03-2026
|
|
21
|
-
|
|
22
|
-
#### Enhancement
|
|
23
|
-
- DataGenerator now walks up the directory tree to discover data-generators folders
|
|
24
|
-
- Supports multiple JSON files in data-generators directory (no longer hardcoded to generators.json)
|
|
25
|
-
- Removed hardcoded folder name dependencies for flexible generator file placement
|
|
26
|
-
- Added duplicate generator name validation to `ZDTestingFramework validate` command
|
|
27
|
-
|
|
28
20
|
### v4.1.1/v3.3.0 - 28-01-2026
|
|
29
21
|
|
|
30
22
|
#### Features
|
|
@@ -49,25 +49,20 @@ class DataGenerator {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
async function _getGenerator(testInfo, generatorName) {
|
|
52
|
-
let
|
|
53
|
-
let
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const filePath = _path.default.join(dataGeneratorsDir, file);
|
|
61
|
-
const data = _fs.default.readFileSync(filePath, 'utf8');
|
|
62
|
-
const generatorObj = JSON.parse(data);
|
|
63
|
-
if (generatorObj.generators && generatorObj.generators[generatorName]) {
|
|
64
|
-
return generatorObj.generators[generatorName];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
52
|
+
let generator = null;
|
|
53
|
+
let generatorFilePath = await (0, _DataGeneratorHelper.getGeneratorFilePath)(testInfo.file);
|
|
54
|
+
generatorFilePath = _path.default.join(generatorFilePath, "../../data-generators/generators.json");
|
|
55
|
+
if (_fs.default.existsSync(generatorFilePath)) {
|
|
56
|
+
const data = _fs.default.readFileSync(generatorFilePath, 'utf8');
|
|
57
|
+
const generatorObj = JSON.parse(data);
|
|
58
|
+
if (generatorName || generatorObj.generators) {
|
|
59
|
+
generator = generatorObj.generators[generatorName] || null;
|
|
67
60
|
}
|
|
68
|
-
searchDir = _path.default.dirname(searchDir);
|
|
69
61
|
}
|
|
70
|
-
|
|
62
|
+
if (!generator) {
|
|
63
|
+
throw new _DataGeneratorError.GeneratorError(`Generator "${generatorName}" could not be found in the path located at "${generatorFilePath}"`);
|
|
64
|
+
}
|
|
65
|
+
return generator;
|
|
71
66
|
}
|
|
72
67
|
async function _generateAPIGenerator(operationId) {
|
|
73
68
|
return [{
|
|
@@ -11,5 +11,6 @@ const stage = (0, _ConfigurationHelper.getRunStage)();
|
|
|
11
11
|
class ReporterConstants {
|
|
12
12
|
static DEFAULT_REPORTER_PATH = `${_configConstants.default.TEST_SLICE_FOLDER}/${stage}/test-results/playwright-test-results.json`;
|
|
13
13
|
static LAST_RUN_REPORTER_PATH = `${_configConstants.default.TEST_SLICE_FOLDER}/${stage}/test-results/.last-run.json`;
|
|
14
|
+
static DEFAULT_UNIT_TEST_REPORTER_PATH = `${_configConstants.default.TEST_SLICE_FOLDER}/unit-test/unit_reports/report.html`;
|
|
14
15
|
}
|
|
15
16
|
exports.default = ReporterConstants;
|
|
@@ -0,0 +1,44 @@
|
|
|
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 _child_process = require("child_process");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _logger = require("../../../utils/logger");
|
|
11
|
+
var _rootPath = require("../../../utils/rootPath");
|
|
12
|
+
var _readConfigFile = require("../readConfigFile");
|
|
13
|
+
class PlaywrightReporter {
|
|
14
|
+
static generate() {
|
|
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
|
+
const childProcess = (0, _child_process.spawn)(command, args, {
|
|
23
|
+
stdio: 'inherit'
|
|
24
|
+
});
|
|
25
|
+
childProcess.on('error', error => {
|
|
26
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, error);
|
|
27
|
+
});
|
|
28
|
+
childProcess.on('exit', (code, signal) => {
|
|
29
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Child Process Exited with Code ${code} and Signal ${signal}`);
|
|
30
|
+
process.exit();
|
|
31
|
+
});
|
|
32
|
+
process.on('exit', () => {
|
|
33
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Terminating Playwright Process...');
|
|
34
|
+
childProcess.kill();
|
|
35
|
+
return;
|
|
36
|
+
});
|
|
37
|
+
process.on('SIGINT', () => {
|
|
38
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, 'Cleaning up...');
|
|
39
|
+
childProcess.kill();
|
|
40
|
+
process.exit();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = PlaywrightReporter;
|
|
@@ -0,0 +1,27 @@
|
|
|
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 _child_process = require("child_process");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _os = require("os");
|
|
11
|
+
var _logger = require("../../../utils/logger");
|
|
12
|
+
var _reporterConstants = _interopRequireDefault(require("../constants/reporterConstants"));
|
|
13
|
+
class UnitReporter {
|
|
14
|
+
static generate() {
|
|
15
|
+
const reportPath = _path.default.resolve(process.cwd(), _reporterConstants.default.DEFAULT_UNIT_TEST_REPORTER_PATH);
|
|
16
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, `Opening unit test report: ${reportPath}`);
|
|
17
|
+
const os = (0, _os.platform)();
|
|
18
|
+
const openCommand = os === 'darwin' ? 'open' : os === 'win32' ? 'start' : 'xdg-open';
|
|
19
|
+
(0, _child_process.execFile)(openCommand, [reportPath], error => {
|
|
20
|
+
if (error) {
|
|
21
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to open report: ${error.message}`);
|
|
22
|
+
}
|
|
23
|
+
process.exit();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = UnitReporter;
|
|
@@ -5,15 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var _path = _interopRequireDefault(require("path"));
|
|
9
8
|
var _parseUserArgs = _interopRequireDefault(require("./helpers/parseUserArgs"));
|
|
10
9
|
var _readConfigFile = require("./readConfigFile");
|
|
11
10
|
var _tagProcessor = _interopRequireDefault(require("./tagProcessor"));
|
|
12
11
|
var _testRunner = require("./test-runner");
|
|
13
12
|
var _logger = require("../../utils/logger");
|
|
14
|
-
var _validateGenerators = require("../dataGenerator/validateGenerators");
|
|
15
|
-
var _configConstants = _interopRequireDefault(require("./constants/configConstants"));
|
|
16
|
-
var _ConfigurationHelper = require("./configuration/ConfigurationHelper");
|
|
17
13
|
const validateFeatureFiles = () => {
|
|
18
14
|
const userArgsObject = (0, _parseUserArgs.default)();
|
|
19
15
|
const uatConfig = (0, _readConfigFile.generateConfigFromFile)();
|
|
@@ -21,13 +17,6 @@ const validateFeatureFiles = () => {
|
|
|
21
17
|
editionOrder
|
|
22
18
|
} = uatConfig;
|
|
23
19
|
const configPath = (0, _readConfigFile.isUserConfigFileAvailable)() ? require.resolve('./setup/config-creator.js') : require.resolve('../../../playwright.config.js');
|
|
24
|
-
const stage = (0, _ConfigurationHelper.getRunStage)();
|
|
25
|
-
const modulesRoot = _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'modules');
|
|
26
|
-
const generatorResult = (0, _validateGenerators.validateGenerators)(modulesRoot);
|
|
27
|
-
if (!generatorResult.valid) {
|
|
28
|
-
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Generator validation failed. Fix duplicate generator names before running tests.');
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
20
|
const tagProcessor = new _tagProcessor.default(editionOrder);
|
|
32
21
|
const tagArgs = tagProcessor.processTags(userArgsObject);
|
|
33
22
|
(0, _testRunner.runPreprocessing)(tagArgs, configPath).then(() => {
|
package/build/lib/cli.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
var _testRunner = _interopRequireDefault(require("../core/playwright/test-runner"));
|
|
5
|
-
var
|
|
5
|
+
var _unitTestingFramework = require("@zohodesk/unit-testing-framework");
|
|
6
|
+
var _PlaywrightReporter = _interopRequireDefault(require("../core/playwright/reporter/PlaywrightReporter"));
|
|
7
|
+
var _UnitReporter = _interopRequireDefault(require("../core/playwright/reporter/UnitReporter"));
|
|
6
8
|
var _codegen = _interopRequireDefault(require("../core/playwright/codegen"));
|
|
7
9
|
var _logger = require("../utils/logger");
|
|
8
10
|
var _setupProject = _interopRequireDefault(require("../setup-folder-structure/setupProject"));
|
|
@@ -11,15 +13,25 @@ var _clearCaches = _interopRequireDefault(require("../core/playwright/clear-cach
|
|
|
11
13
|
var _helper = _interopRequireDefault(require("../setup-folder-structure/helper"));
|
|
12
14
|
var _parseUserArgs = _interopRequireDefault(require("../core/playwright/helpers/parseUserArgs"));
|
|
13
15
|
var _validateFeature = _interopRequireDefault(require("../core/playwright/validateFeature"));
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
var _commonUtils = require("../utils/commonUtils");
|
|
16
17
|
const [,, option, ...otherOptions] = process.argv;
|
|
17
18
|
switch (option) {
|
|
18
19
|
case 'test':
|
|
19
20
|
{
|
|
20
21
|
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Running Tests..');
|
|
21
22
|
(0, _testRunner.default)();
|
|
22
|
-
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
case 'unit-test':
|
|
26
|
+
{
|
|
27
|
+
const testFile = process.argv[3];
|
|
28
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Running Unit Tests..');
|
|
29
|
+
const options = {};
|
|
30
|
+
if (testFile) {
|
|
31
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Filtering tests with pattern: ${testFile}`);
|
|
32
|
+
options.testPathPattern = testFile;
|
|
33
|
+
}
|
|
34
|
+
(0, _unitTestingFramework.createJestRunner)(options);
|
|
23
35
|
break;
|
|
24
36
|
}
|
|
25
37
|
case 'validate':
|
|
@@ -40,9 +52,14 @@ switch (option) {
|
|
|
40
52
|
}
|
|
41
53
|
case 'report':
|
|
42
54
|
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Generating UAT Reports...');
|
|
56
|
+
_PlaywrightReporter.default.generate();
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case 'ut-report':
|
|
60
|
+
{
|
|
61
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Generating Unit Test Reports...');
|
|
62
|
+
_UnitReporter.default.generate();
|
|
46
63
|
break;
|
|
47
64
|
}
|
|
48
65
|
case 'codegen':
|
|
@@ -69,6 +86,12 @@ switch (option) {
|
|
|
69
86
|
(0, _clearCaches.default)();
|
|
70
87
|
break;
|
|
71
88
|
}
|
|
89
|
+
case 'stepsGenerator':
|
|
90
|
+
{
|
|
91
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Created agents and prompts md files under .github folder...');
|
|
92
|
+
(0, _commonUtils.copyGithubFolder)();
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
72
95
|
case 'help':
|
|
73
96
|
default:
|
|
74
97
|
{
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.copyCommonSpecs = copyCommonSpecs;
|
|
8
|
+
exports.copyGithubFolder = copyGithubFolder;
|
|
8
9
|
var _fileUtils = require("./fileUtils");
|
|
9
10
|
var _path = _interopRequireDefault(require("path"));
|
|
10
11
|
var _configConstants = _interopRequireDefault(require("../core/playwright/constants/configConstants"));
|
|
@@ -17,4 +18,12 @@ function copyCommonSpecs() {
|
|
|
17
18
|
const destDirectory = _path.default.resolve(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'modules', '.testingLib-common');
|
|
18
19
|
(0, _fileUtils.deleteFolder)(destDirectory);
|
|
19
20
|
(0, _fileUtils.copyDirectory)(commonSpecPath, destDirectory);
|
|
21
|
+
}
|
|
22
|
+
function copyGithubFolder() {
|
|
23
|
+
const libraryPath = require.resolve("@zohodesk/testinglibrary");
|
|
24
|
+
// libraryPath will be build/index.js, go two levels up to reach the package root where .github lives
|
|
25
|
+
const githubSrcPath = _path.default.resolve(libraryPath, '../../', '.github');
|
|
26
|
+
const destDirectory = _path.default.resolve(process.cwd(), '../../', '.github');
|
|
27
|
+
(0, _fileUtils.deleteFolder)(destDirectory);
|
|
28
|
+
(0, _fileUtils.copyDirectory)(githubSrcPath, destDirectory);
|
|
20
29
|
}
|