@zohodesk/testinglibrary 4.1.5 → 4.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.
@@ -23,13 +23,18 @@ class DataGenerator {
23
23
  async generate(testInfo, actorInfo, generatorType, generatorName, scenarioName, dataTable, page = null) {
24
24
  try {
25
25
  let generators;
26
+ let domainUrl;
26
27
  if (generatorType === 'API') {
27
28
  generators = await _assertClassBrand(_DataGenerator_brand, this, _generateAPIGenerator).call(this, generatorName);
28
29
  } else {
29
30
  generators = await _assertClassBrand(_DataGenerator_brand, this, _getGenerator).call(this, testInfo, generatorName);
30
31
  }
32
+ const generatorOperationIds = generators.map(({
33
+ generatorOperationId
34
+ }) => generatorOperationId).filter(Boolean);
35
+ domainUrl = generatorOperationIds.some(operationId => operationId.startsWith('portal.')) ? process.env.portalDomain : process.env.domain;
31
36
  const processedGenerators = await (0, _DataGeneratorHelper.processGenerator)(generators, dataTable);
32
- const apiPayload = await _assertClassBrand(_DataGenerator_brand, this, _constructApiPayload).call(this, scenarioName, processedGenerators, actorInfo, page);
37
+ const apiPayload = await _assertClassBrand(_DataGenerator_brand, this, _constructApiPayload).call(this, scenarioName, processedGenerators, actorInfo, domainUrl, page);
33
38
  const response = await (0, _DataGeneratorHelper.makeRequest)(process.env.DG_SERVICE_DOMAIN + process.env.DG_SERVICE_API_PATH, apiPayload);
34
39
  _logger.Logger.log(_logger.Logger.INFO_TYPE, `Generated response for the generator: ${generatorName} for scenario: ${scenarioName}, Response: ${JSON.stringify(response)}`);
35
40
  return response;
@@ -73,7 +78,7 @@ async function _generateAPIGenerator(operationId) {
73
78
  name: operationId
74
79
  }];
75
80
  }
76
- async function _constructApiPayload(scenarioName, processedGenerators, actorInfo, page = null) {
81
+ async function _constructApiPayload(scenarioName, processedGenerators, actorInfo, domainUrl, page = null) {
77
82
  const dataGeneratorObj = actorInfo['data-generator'];
78
83
  if (!dataGeneratorObj) {
79
84
  throw new _DataGeneratorError.DataGeneratorConfigurationError(`Data Generator configuration is missing for the profile: ${actorInfo['profile']}`);
@@ -91,8 +96,8 @@ async function _constructApiPayload(scenarioName, processedGenerators, actorInfo
91
96
  const environmentDetails = apiPayload.environmentDetails || {};
92
97
  if (environmentDetails) {
93
98
  environmentDetails.iam_url = process.env.DG_IAM_DOMAIN;
94
- const domainUrl = new URL(process.env.domain);
95
- environmentDetails.host = domainUrl.origin;
99
+ const selectedDomain = new URL(domainUrl || process.env.domain);
100
+ environmentDetails.host = selectedDomain.origin;
96
101
  }
97
102
  apiPayload.environmentDetails = environmentDetails;
98
103
 
@@ -37,6 +37,7 @@ function getDefaultConfig() {
37
37
  forbidOnly: false,
38
38
  retries: 0,
39
39
  trace: false,
40
+ smokeTestTrace: 'on',
40
41
  video: false,
41
42
  isAuthMode: false,
42
43
  openReportOn: 'never',
@@ -96,6 +97,7 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
96
97
  * @property {string} uatDirectory - Directory in which uat configuration is places.
97
98
  * @property {string} headless - Headless Browsers mode.
98
99
  * @property {number} trace - trace for test cases.
100
+ * @property {string} smokeTestTrace - trace mode for the smokeTest project (e.g. 'on', 'off', 'retain-on-failure'). Default is 'on'.
99
101
  * @property {boolean} video - video for test cases,
100
102
  * @property {boolean} debug - debug mode
101
103
  * @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
@@ -21,6 +21,7 @@ const {
21
21
  bddMode,
22
22
  authFilePath,
23
23
  trace,
24
+ smokeTestTrace,
24
25
  video,
25
26
  testIdAttribute,
26
27
  viewport,
@@ -44,7 +45,8 @@ function smokeTestConfig() {
44
45
  uatPath: _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'smokeTest')
45
46
  });
46
47
  const commonConfig = {
47
- storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
48
+ storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {},
49
+ trace: smokeTestTrace
48
50
  };
49
51
  smokeTestProject.setTestDir(smokeTestDir);
50
52
  smokeTestProject.setRetries(0);
@@ -21,6 +21,7 @@
21
21
  * @property {string} uatDirectory - Directory in which uat configuration is places.
22
22
  * @property {string} headless - Headless Browsers mode.
23
23
  * @property {number} trace - trace for test cases.
24
+ * @property {string} smokeTestTrace - trace mode for the smokeTest project (e.g. 'on', 'off', 'retain-on-failure'). Default is 'on'.
24
25
  * @property {boolean} video - video for test cases,
25
26
  * @property {boolean} debug - debug mode
26
27
  * @property {string} mode: mode in which the test cases needs to run
@@ -9,6 +9,7 @@ const testSetup = require('../../fixtures/testSetup');
9
9
  * @typedef {Object} UserConfig
10
10
  * @property {string} headless - Headless Browsers mode.
11
11
  * @property {number} trace - trace for test cases.
12
+ * @property {string} smokeTestTrace - trace mode for the smokeTest project (e.g. 'on', 'off', 'retain-on-failure'). Default is 'on'.
12
13
  * @property {boolean} video - video for test cases,
13
14
  * @property {boolean} debug - debug mode
14
15
  * @property {string} mode: mode in which the test cases needs to run
@@ -37,6 +38,7 @@ module.exports = {
37
38
  isAuthMode: true,
38
39
  authFilePath: 'uat/playwright/.auth/user.json',
39
40
  trace: true,
41
+ smokeTestTrace: 'on',
40
42
  video: true,
41
43
  bddMode: true,
42
44
  featureFilesFolder: 'feature-files',
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "4.1.5",
3
+ "version": "4.1.9",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@zohodesk/testinglibrary",
9
- "version": "4.1.5",
9
+ "version": "4.1.9",
10
10
  "hasInstallScript": true,
11
11
  "license": "ISC",
12
12
  "dependencies": {
@@ -3773,13 +3773,13 @@
3773
3773
  }
3774
3774
  },
3775
3775
  "node_modules/@napi-rs/wasm-runtime": {
3776
- "version": "1.1.5",
3777
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz",
3778
- "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==",
3776
+ "version": "1.1.6",
3777
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
3778
+ "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
3779
3779
  "license": "MIT",
3780
3780
  "optional": true,
3781
3781
  "dependencies": {
3782
- "@tybys/wasm-util": "^0.10.2"
3782
+ "@tybys/wasm-util": "^0.10.3"
3783
3783
  },
3784
3784
  "funding": {
3785
3785
  "type": "github",
@@ -4083,9 +4083,9 @@
4083
4083
  }
4084
4084
  },
4085
4085
  "node_modules/@tybys/wasm-util": {
4086
- "version": "0.10.2",
4087
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
4088
- "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
4086
+ "version": "0.10.3",
4087
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
4088
+ "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
4089
4089
  "license": "MIT",
4090
4090
  "optional": true,
4091
4091
  "dependencies": {
@@ -4265,9 +4265,9 @@
4265
4265
  "peer": true
4266
4266
  },
4267
4267
  "node_modules/@types/node": {
4268
- "version": "26.0.0",
4269
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.0.tgz",
4270
- "integrity": "sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==",
4268
+ "version": "26.1.0",
4269
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz",
4270
+ "integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==",
4271
4271
  "license": "MIT",
4272
4272
  "dependencies": {
4273
4273
  "undici-types": "~8.3.0"
@@ -4345,9 +4345,9 @@
4345
4345
  "license": "MIT"
4346
4346
  },
4347
4347
  "node_modules/@ungap/structured-clone": {
4348
- "version": "1.3.1",
4349
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz",
4350
- "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==",
4348
+ "version": "1.3.2",
4349
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz",
4350
+ "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==",
4351
4351
  "license": "ISC"
4352
4352
  },
4353
4353
  "node_modules/@unrs/resolver-binding-android-arm-eabi": {
@@ -5297,9 +5297,9 @@
5297
5297
  }
5298
5298
  },
5299
5299
  "node_modules/axios": {
5300
- "version": "1.18.0",
5301
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.0.tgz",
5302
- "integrity": "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==",
5300
+ "version": "1.18.1",
5301
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz",
5302
+ "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==",
5303
5303
  "license": "MIT",
5304
5304
  "dependencies": {
5305
5305
  "follow-redirects": "^1.16.0",
@@ -5518,9 +5518,9 @@
5518
5518
  }
5519
5519
  },
5520
5520
  "node_modules/baseline-browser-mapping": {
5521
- "version": "2.10.38",
5522
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz",
5523
- "integrity": "sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==",
5521
+ "version": "2.10.40",
5522
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz",
5523
+ "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==",
5524
5524
  "license": "Apache-2.0",
5525
5525
  "bin": {
5526
5526
  "baseline-browser-mapping": "dist/cli.cjs"
@@ -5544,9 +5544,9 @@
5544
5544
  }
5545
5545
  },
5546
5546
  "node_modules/brace-expansion": {
5547
- "version": "5.0.6",
5548
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
5549
- "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
5547
+ "version": "5.0.7",
5548
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
5549
+ "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
5550
5550
  "license": "MIT",
5551
5551
  "peer": true,
5552
5552
  "dependencies": {
@@ -5569,9 +5569,9 @@
5569
5569
  }
5570
5570
  },
5571
5571
  "node_modules/browserslist": {
5572
- "version": "4.28.2",
5573
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
5574
- "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
5572
+ "version": "4.28.4",
5573
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz",
5574
+ "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==",
5575
5575
  "funding": [
5576
5576
  {
5577
5577
  "type": "opencollective",
@@ -5588,10 +5588,10 @@
5588
5588
  ],
5589
5589
  "license": "MIT",
5590
5590
  "dependencies": {
5591
- "baseline-browser-mapping": "^2.10.12",
5592
- "caniuse-lite": "^1.0.30001782",
5593
- "electron-to-chromium": "^1.5.328",
5594
- "node-releases": "^2.0.36",
5591
+ "baseline-browser-mapping": "^2.10.38",
5592
+ "caniuse-lite": "^1.0.30001799",
5593
+ "electron-to-chromium": "^1.5.376",
5594
+ "node-releases": "^2.0.48",
5595
5595
  "update-browserslist-db": "^1.2.3"
5596
5596
  },
5597
5597
  "bin": {
@@ -5695,9 +5695,9 @@
5695
5695
  }
5696
5696
  },
5697
5697
  "node_modules/caniuse-lite": {
5698
- "version": "1.0.30001799",
5699
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz",
5700
- "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==",
5698
+ "version": "1.0.30001800",
5699
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz",
5700
+ "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==",
5701
5701
  "funding": [
5702
5702
  {
5703
5703
  "type": "opencollective",
@@ -6623,9 +6623,9 @@
6623
6623
  "license": "MIT"
6624
6624
  },
6625
6625
  "node_modules/create-jest/node_modules/semver": {
6626
- "version": "7.8.4",
6627
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
6628
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
6626
+ "version": "7.8.5",
6627
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
6628
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
6629
6629
  "license": "ISC",
6630
6630
  "bin": {
6631
6631
  "semver": "bin/semver.js"
@@ -6996,9 +6996,9 @@
6996
6996
  }
6997
6997
  },
6998
6998
  "node_modules/electron-to-chromium": {
6999
- "version": "1.5.376",
7000
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz",
7001
- "integrity": "sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==",
6999
+ "version": "1.5.384",
7000
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.384.tgz",
7001
+ "integrity": "sha512-g6KAKY1vkYsADvSPWvdJsuYT0ixdcu6lUtD9P/wJKGBEDlZVXh2AX42j1mPqqaQPDluWjara9ziQ7xqAeXCt5A==",
7002
7002
  "license": "ISC"
7003
7003
  },
7004
7004
  "node_modules/emittery": {
@@ -7201,13 +7201,14 @@
7201
7201
  }
7202
7202
  },
7203
7203
  "node_modules/es-to-primitive": {
7204
- "version": "1.3.1",
7205
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.1.tgz",
7206
- "integrity": "sha512-CxN9N56HYfd2m/acc/NOFrZQsN9kU4eh+2kk6A707Kz1krH8tKmfrs5RnftB8WNX80T0NS7vSQsDOlg23diR2g==",
7204
+ "version": "1.3.4",
7205
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz",
7206
+ "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==",
7207
7207
  "dev": true,
7208
7208
  "license": "MIT",
7209
7209
  "dependencies": {
7210
7210
  "es-abstract-get": "^1.0.0",
7211
+ "es-define-property": "^1.0.1",
7211
7212
  "es-errors": "^1.3.0",
7212
7213
  "is-callable": "^1.2.7",
7213
7214
  "is-date-object": "^1.1.0",
@@ -7264,9 +7265,9 @@
7264
7265
  }
7265
7266
  },
7266
7267
  "node_modules/eslint": {
7267
- "version": "10.5.0",
7268
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz",
7269
- "integrity": "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==",
7268
+ "version": "10.6.0",
7269
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz",
7270
+ "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==",
7270
7271
  "license": "MIT",
7271
7272
  "peer": true,
7272
7273
  "workspaces": [
@@ -9013,9 +9014,9 @@
9013
9014
  }
9014
9015
  },
9015
9016
  "node_modules/istanbul-lib-instrument/node_modules/semver": {
9016
- "version": "7.8.4",
9017
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
9018
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
9017
+ "version": "7.8.5",
9018
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
9019
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
9019
9020
  "license": "ISC",
9020
9021
  "bin": {
9021
9022
  "semver": "bin/semver.js"
@@ -9054,9 +9055,9 @@
9054
9055
  }
9055
9056
  },
9056
9057
  "node_modules/istanbul-lib-report/node_modules/semver": {
9057
- "version": "7.8.4",
9058
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
9059
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
9058
+ "version": "7.8.5",
9059
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
9060
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
9060
9061
  "license": "ISC",
9061
9062
  "bin": {
9062
9063
  "semver": "bin/semver.js"
@@ -10844,9 +10845,9 @@
10844
10845
  "license": "MIT"
10845
10846
  },
10846
10847
  "node_modules/jest-snapshot/node_modules/semver": {
10847
- "version": "7.8.4",
10848
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
10849
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
10848
+ "version": "7.8.5",
10849
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
10850
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
10850
10851
  "license": "ISC",
10851
10852
  "bin": {
10852
10853
  "semver": "bin/semver.js"
@@ -11869,9 +11870,9 @@
11869
11870
  "license": "MIT"
11870
11871
  },
11871
11872
  "node_modules/jest/node_modules/semver": {
11872
- "version": "7.8.4",
11873
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
11874
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
11873
+ "version": "7.8.5",
11874
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
11875
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
11875
11876
  "license": "ISC",
11876
11877
  "bin": {
11877
11878
  "semver": "bin/semver.js"
@@ -11921,9 +11922,9 @@
11921
11922
  "license": "MIT"
11922
11923
  },
11923
11924
  "node_modules/js-yaml": {
11924
- "version": "3.14.2",
11925
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
11926
- "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
11925
+ "version": "3.15.0",
11926
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz",
11927
+ "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==",
11927
11928
  "license": "MIT",
11928
11929
  "dependencies": {
11929
11930
  "argparse": "^1.0.7",
@@ -12384,21 +12385,21 @@
12384
12385
  }
12385
12386
  },
12386
12387
  "node_modules/msw/node_modules/tldts": {
12387
- "version": "7.4.3",
12388
- "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.3.tgz",
12389
- "integrity": "sha512-A3BDQBeeukYPzB4QdQ1DtdlUmp4x2OCH8n5UVhEWbyANxNep8GavottKzd1xYKFJKjUgMyPT7EzOfnBO55s8Sg==",
12388
+ "version": "7.4.5",
12389
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.5.tgz",
12390
+ "integrity": "sha512-RfEzKWcq5fHUOFq7J3rl3Oz6ylKGtcHqUznzj4EcXsxLSIjJcvpbXAQtWGeJQ0xKnimR5e0Cn+cn9TssfMzm+g==",
12390
12391
  "license": "MIT",
12391
12392
  "dependencies": {
12392
- "tldts-core": "^7.4.3"
12393
+ "tldts-core": "^7.4.5"
12393
12394
  },
12394
12395
  "bin": {
12395
12396
  "tldts": "bin/cli.js"
12396
12397
  }
12397
12398
  },
12398
12399
  "node_modules/msw/node_modules/tldts-core": {
12399
- "version": "7.4.3",
12400
- "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.3.tgz",
12401
- "integrity": "sha512-27ep5H9PzdBrNd5OFM/j3WCU8F3kPwM9D0BOaOf7uYfxMJfyr0K5Tjj69Gri+sZlh2WXd5buIm47NuPF29CDiw==",
12400
+ "version": "7.4.5",
12401
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.5.tgz",
12402
+ "integrity": "sha512-pGrwzZDvPwKe+7NNUqAunb6rqTfynr0VOUhCMdqbu5xlvNiszsAJygRzwvpVycdzejlbpY+SWJOn+s75Og7FEA==",
12402
12403
  "license": "MIT"
12403
12404
  },
12404
12405
  "node_modules/msw/node_modules/tough-cookie": {
@@ -12483,9 +12484,9 @@
12483
12484
  "license": "MIT"
12484
12485
  },
12485
12486
  "node_modules/node-releases": {
12486
- "version": "2.0.48",
12487
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.48.tgz",
12488
- "integrity": "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==",
12487
+ "version": "2.0.50",
12488
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz",
12489
+ "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==",
12489
12490
  "license": "MIT",
12490
12491
  "engines": {
12491
12492
  "node": ">=18"
@@ -14353,9 +14354,9 @@
14353
14354
  }
14354
14355
  },
14355
14356
  "node_modules/ts-jest/node_modules/semver": {
14356
- "version": "7.8.4",
14357
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
14358
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
14357
+ "version": "7.8.5",
14358
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
14359
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
14359
14360
  "dev": true,
14360
14361
  "license": "ISC",
14361
14362
  "bin": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "4.1.5",
3
+ "version": "4.1.9",
4
4
  "main": "./build/index.js",
5
5
  "scripts": {
6
6
  "postinstall": "node bin/postinstall.js",
@@ -28,9 +28,9 @@
28
28
  "@reportportal/agent-js-playwright": "5.2.2",
29
29
  "@testing-library/jest-dom": "6.9.1",
30
30
  "@testing-library/react": "12.1.5",
31
+ "@types/jest": "29.5.12",
31
32
  "@types/react": "16.14.70",
32
33
  "@types/react-dom": "16.9.25",
33
- "@types/jest": "29.5.12",
34
34
  "@zohodesk/unit-testing-framework": "0.0.35-experimental",
35
35
  "babel-jest": "29.7.0",
36
36
  "babel-plugin-transform-dynamic-import": "2.1.0",
@@ -63,6 +63,6 @@
63
63
  "@babel/preset-env": "7.29.0",
64
64
  "@babel/preset-typescript": "7.26.0",
65
65
  "jest-html-reporter": "4.3.0",
66
- "ts-jest": "29.3.2"
66
+ "ts-jest": "29.3.2"
67
67
  }
68
- }
68
+ }
@@ -274,4 +274,4 @@ header {
274
274
  font-size: 1rem;
275
275
  padding: 0 0.5rem;
276
276
  }
277
- </style></head><body><main class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><section id="metadata-container"><div id="timestamp">Started: 2026-06-03 18:32:48</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed ">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (12)</div><div class="summary-passed ">12 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></section><details id="suite-1" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/buildInFixtures/__tests__/caseTimeout.test.js</div><div class="suite-time">0.367s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">returns null when no timeout tag is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">returns null when tags is not an array</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">parses @timeout_&lt;n&gt; as seconds for Chrome (factor 1)</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">applies Firefox 2x multiplier</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">returns 0 (no timeout) when tag is @timeout_0, regardless of browser</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">uses the first matching tag and logs a warning when multiple are present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">ignores malformed timeout-like tags</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveCaseTimeoutMs</div><div class="test-title">ignores non-string entries in tags</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">caseTimeout fixture</div><div class="test-title">is registered as an auto fixture</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">caseTimeout fixture</div><div class="test-title">calls testInfo.setTimeout with scaled value when tag matches</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">caseTimeout fixture</div><div class="test-title">does not call testInfo.setTimeout when no tag is present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">caseTimeout fixture</div><div class="test-title">passes 0 through to testInfo.setTimeout for @timeout_0</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></details></main></body></html>
277
+ </style></head><body><main class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><section id="metadata-container"><div id="timestamp">Started: 2026-07-01 12:44:59</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (2)</div><div class="summary-passed ">2 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (31)</div><div class="summary-passed ">31 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></section><details id="suite-1" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js</div><div class="suite-time">0.493s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">returns flaky and skips log analysis for flaky outcome</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags environment when a document abort is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags environment for a network/cert failure</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags code when an app undefined-property error is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not tag a non-document (xhr) abort as environment</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags tool when stderr reports a DATA_GENERATION_ERROR</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags tool for an "Error Type:" line in base64 stdout</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not tag tool for benign stdout/stderr</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not throw for malformed stdio chunk entries</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">leaves untagged when no environment or code pattern is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">places prefixed failure tags first, then existing tags</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">does not duplicate an already-present failure tag</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">regex safety</div><div class="test-title">resets stateful regex for tool pattern checks</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></details><details id="suite-2" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/runtimeLogNaming.test.js</div><div class="suite-time">0.089s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">sanitizeForFilename</div><div class="test-title">replaces unsafe characters with dashes</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">sanitizeForFilename</div><div class="test-title">returns test for empty input</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">extractScenarioName</div><div class="test-title">extracts name from Scenario Outline segment</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">extractScenarioName</div><div class="test-title">extracts name from Scenario segment</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">extractScenarioName</div><div class="test-title">returns null when no scenario segment exists</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">isGenericExampleTitle</div><div class="test-title">matches generic example title</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">isGenericExampleTitle</div><div class="test-title">does not match numbered or regular titles</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRowKey</div><div class="test-title">uses Example #N from title when present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRowKey</div><div class="test-title">uses parallelIndex when title is generic</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRowKey</div><div class="test-title">falls back to testId suffix</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRowKey</div><div class="test-title">falls back to 0 when no row key is available</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">uses test title for regular scenarios</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">uses scenario prefix and parallelIndex for example row 1</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">uses scenario prefix and parallelIndex for example row 2</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">differentiates two outlines with the same example title</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">truncates long scenario names while keeping worker and retry suffix</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">falls back to scenario-0 when outline title has no scenario segment</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">resolveRuntimeLogBaseName</div><div class="test-title">produces unique names for all example rows in SetupHomePageSearch</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div></div></details></main></body></html>