@zohodesk/testinglibrary 0.4.100-n18-experimental → 0.4.102-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/.gitlab-ci.yml CHANGED
@@ -188,19 +188,19 @@ uat-data_generator:
188
188
  paths:
189
189
  - examples/uat/playwright-report
190
190
 
191
- uat-search_indexing:
192
- stage: uat
193
- script:
194
- - cd examples
195
- - npm install $(npm pack ../../testing-framework | tail -1)
196
- - output=$(npm run uat-search_indexing)
197
- - echo "$output"
198
- - node ../ValidateUATReport.js examples
199
-
200
- artifacts:
201
- when: always
202
- paths:
203
- - examples/uat/playwright-report
191
+ # uat-search_indexing:
192
+ # stage: uat
193
+ # script:
194
+ # - cd examples
195
+ # - npm install $(npm pack ../../testing-framework | tail -1)
196
+ # - output=$(npm run uat-search_indexing)
197
+ # - echo "$output"
198
+ # - node ../ValidateUATReport.js examples
199
+
200
+ # artifacts:
201
+ # when: always
202
+ # paths:
203
+ # - examples/uat/playwright-report
204
204
 
205
205
 
206
206
 
@@ -1,5 +1,6 @@
1
1
  import { test } from '@zohodesk/testinglibrary';
2
2
  import DataGenerator from '@zohodesk/testinglibrary/DataGenerator';
3
+ import {getUserForSelectedEditionAndProfile} from '@zohodesk/testinglibrary/helpers'
3
4
 
4
5
  const dataGenerator = new DataGenerator();
5
6
 
@@ -9,7 +10,8 @@ export async function generateAndCacheTestData(executionContext, type, identifie
9
10
  const scenarioName = testInfo.title.split('/').pop() || 'Unknown Scenario';
10
11
 
11
12
  if (profile) {
12
- actorInfo = await dataGenerator.getDataGenUserExecutionContext(executionContext.actorInfo.edition, profile);
13
+ const { edition, orgName: portal, beta } = executionContext.actorInfo;
14
+ actorInfo = await getUserForSelectedEditionAndProfile(edition, profile, beta, portal);
13
15
  } else {
14
16
  actorInfo = executionContext.actorInfo;
15
17
  }
@@ -1,6 +1,6 @@
1
- import {createBdd } from '@zohodesk/testinglibrary';
1
+ import {createBdd} from '@zohodesk/testinglibrary';
2
+ import { jsonpath } from '@zohodesk/testinglibrary/thirdPartyHelper';
2
3
  import { executeRpcRequest , entityIdReConstructor } from '../helpers/rpcRequestHelper';
3
- // import jp from 'jsonpath';
4
4
 
5
5
  const { Given } = createBdd();
6
6
 
@@ -54,7 +54,7 @@ Given('a search entity using {string}', async ({page,cacheLayer}, reference,data
54
54
  entityIdValue = searchObj;
55
55
  } else {
56
56
  const jsonPath = searchEntity?.startsWith?.('$') ? searchEntity : `$.${searchEntity}`;
57
- const result = null;//jp.query(searchObj, jsonPath);
57
+ const result = jsonpath.query(searchObj, jsonPath);
58
58
 
59
59
  if (!result || result.length === 0) {
60
60
  throw new Error(`JSONPath query '${jsonPath}' returned no results from cache object for reference: ${reference}`);
@@ -47,15 +47,6 @@ class DataGenerator {
47
47
  throw error;
48
48
  }
49
49
  }
50
- async getDataGenUserExecutionContext(edition, profile) {
51
- try {
52
- const dataGenUserDetails = await (0, _helpers.getUserForSelectedEditionAndProfile)(edition, profile);
53
- return dataGenUserDetails;
54
- } catch (error) {
55
- console.error('Error occurred while fetching data generation user details: ', error);
56
- throw error;
57
- }
58
- }
59
50
  }
60
51
  async function _getGenerator(testInfo, generatorName) {
61
52
  let generator = null;
@@ -113,6 +113,7 @@ function getUserForSelectedEditionAndProfile(preferedEdition, preferredProfile,
113
113
  }
114
114
  return {
115
115
  ...editionData,
116
- ...selectedProfile
116
+ ...selectedProfile,
117
+ 'beta': betaFeature
117
118
  };
118
119
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "jsonpath", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _jsonpath.default;
11
+ }
12
+ });
13
+ var _jsonpath = _interopRequireDefault(require("jsonpath"));
@@ -11,7 +11,6 @@ var _fileUtils = require("../../../utils/fileUtils");
11
11
  var _readConfigFile = require("../readConfigFile");
12
12
  var _logger = require("../../../utils/logger");
13
13
  var _configFileNameProvider = require("../helpers/configFileNameProvider");
14
- var _lastRunUpdater = _interopRequireDefault(require("./lastRunUpdater"));
15
14
  class JSONSummaryReporter {
16
15
  constructor() {
17
16
  this.durationInMS = -1;
@@ -124,8 +123,6 @@ class JSONSummaryReporter {
124
123
  (0, _fileUtils.writeFileContents)(_path.default.join(reportPath, './', (0, _configFileNameProvider.getReportFileName)()), JSON.stringify(this, null, ' '));
125
124
  }
126
125
  onExit() {
127
- // Update .last-run.json with aborted tests due to timing out or interruption
128
- (0, _lastRunUpdater.default)();
129
126
  const shouldClearLastLine = this._open !== 'always' || this._open !== 'on-failure';
130
127
  if (shouldClearLastLine) {
131
128
  /**Below code is to replace the playwright default report commond with abstraction tool command */
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ delete require.cache[require.resolve('../core/playwright/runner/Runner')];
4
+ function test() {
5
+ const inputString = "@hc";
6
+ const selectedTag = ["@hc_1234"].reverse().find(tag => tag.startsWith(inputString));
7
+ let tagInput = null;
8
+ if (selectedTag) {
9
+ tagInput = selectedTag.split(`${inputString}_`).pop().toLowerCase();
10
+ }
11
+ console.log(tagInput);
12
+ }
13
+ test();
@@ -22,7 +22,7 @@ class LoggerImpl {
22
22
  info() {}
23
23
  log(type, message) {
24
24
  const color = this.colors[type];
25
- this.consoleLogger.log(`${color[0]}${message}${color[1]}\n`);
25
+ this.consoleLogger.log(`${color[0]}${message}${color[1]}`);
26
26
  }
27
27
  }
28
28
  const Logger = exports.Logger = new LoggerImpl();
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "0.4.100-n18-experimental",
3
+ "version": "0.4.102-n18-experimental",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@zohodesk/testinglibrary",
9
- "version": "0.4.100-n18-experimental",
9
+ "version": "0.4.102-n18-experimental",
10
10
  "hasInstallScript": true,
11
11
  "license": "ISC",
12
12
  "dependencies": {
@@ -2401,9 +2401,9 @@
2401
2401
  "peer": true
2402
2402
  },
2403
2403
  "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
2404
- "version": "4.1.0",
2405
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2406
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
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==",
2407
2407
  "license": "MIT",
2408
2408
  "peer": true,
2409
2409
  "dependencies": {
@@ -4052,9 +4052,9 @@
4052
4052
  "license": "MIT"
4053
4053
  },
4054
4054
  "node_modules/@types/node": {
4055
- "version": "24.10.0",
4056
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz",
4057
- "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==",
4055
+ "version": "24.10.1",
4056
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
4057
+ "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
4058
4058
  "license": "MIT",
4059
4059
  "dependencies": {
4060
4060
  "undici-types": "~7.16.0"
@@ -4067,18 +4067,18 @@
4067
4067
  "license": "MIT"
4068
4068
  },
4069
4069
  "node_modules/@types/react": {
4070
- "version": "19.2.2",
4071
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz",
4072
- "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
4070
+ "version": "19.2.5",
4071
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.5.tgz",
4072
+ "integrity": "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw==",
4073
4073
  "license": "MIT",
4074
4074
  "dependencies": {
4075
4075
  "csstype": "^3.0.2"
4076
4076
  }
4077
4077
  },
4078
4078
  "node_modules/@types/react-dom": {
4079
- "version": "19.2.2",
4080
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz",
4081
- "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==",
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==",
4082
4082
  "license": "MIT",
4083
4083
  "peerDependencies": {
4084
4084
  "@types/react": "^19.2.0"
@@ -4130,9 +4130,9 @@
4130
4130
  "license": "MIT"
4131
4131
  },
4132
4132
  "node_modules/@types/yargs": {
4133
- "version": "17.0.34",
4134
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz",
4135
- "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==",
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==",
4136
4136
  "license": "MIT",
4137
4137
  "dependencies": {
4138
4138
  "@types/yargs-parser": "*"
@@ -4686,9 +4686,9 @@
4686
4686
  "license": "MIT"
4687
4687
  },
4688
4688
  "node_modules/baseline-browser-mapping": {
4689
- "version": "2.8.25",
4690
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz",
4691
- "integrity": "sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==",
4689
+ "version": "2.8.28",
4690
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.28.tgz",
4691
+ "integrity": "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==",
4692
4692
  "license": "Apache-2.0",
4693
4693
  "bin": {
4694
4694
  "baseline-browser-mapping": "dist/cli.js"
@@ -4740,9 +4740,9 @@
4740
4740
  }
4741
4741
  },
4742
4742
  "node_modules/browserslist": {
4743
- "version": "4.27.0",
4744
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz",
4745
- "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==",
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==",
4746
4746
  "funding": [
4747
4747
  {
4748
4748
  "type": "opencollective",
@@ -4759,10 +4759,10 @@
4759
4759
  ],
4760
4760
  "license": "MIT",
4761
4761
  "dependencies": {
4762
- "baseline-browser-mapping": "^2.8.19",
4763
- "caniuse-lite": "^1.0.30001751",
4764
- "electron-to-chromium": "^1.5.238",
4765
- "node-releases": "^2.0.26",
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",
4766
4766
  "update-browserslist-db": "^1.1.4"
4767
4767
  },
4768
4768
  "bin": {
@@ -4877,9 +4877,9 @@
4877
4877
  }
4878
4878
  },
4879
4879
  "node_modules/caniuse-lite": {
4880
- "version": "1.0.30001754",
4881
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz",
4882
- "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==",
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==",
4883
4883
  "funding": [
4884
4884
  {
4885
4885
  "type": "opencollective",
@@ -5302,9 +5302,9 @@
5302
5302
  "license": "MIT"
5303
5303
  },
5304
5304
  "node_modules/csstype": {
5305
- "version": "3.1.3",
5306
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
5307
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
5305
+ "version": "3.2.2",
5306
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.2.tgz",
5307
+ "integrity": "sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g==",
5308
5308
  "license": "MIT"
5309
5309
  },
5310
5310
  "node_modules/data-urls": {
@@ -5569,9 +5569,9 @@
5569
5569
  "license": "MIT"
5570
5570
  },
5571
5571
  "node_modules/electron-to-chromium": {
5572
- "version": "1.5.249",
5573
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.249.tgz",
5574
- "integrity": "sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==",
5572
+ "version": "1.5.254",
5573
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.254.tgz",
5574
+ "integrity": "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg==",
5575
5575
  "license": "ISC"
5576
5576
  },
5577
5577
  "node_modules/emittery": {
@@ -5771,16 +5771,12 @@
5771
5771
  }
5772
5772
  },
5773
5773
  "node_modules/escape-string-regexp": {
5774
- "version": "4.0.0",
5775
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
5776
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
5774
+ "version": "1.0.5",
5775
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
5776
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
5777
5777
  "license": "MIT",
5778
- "peer": true,
5779
5778
  "engines": {
5780
- "node": ">=10"
5781
- },
5782
- "funding": {
5783
- "url": "https://github.com/sponsors/sindresorhus"
5779
+ "node": ">=0.8.0"
5784
5780
  }
5785
5781
  },
5786
5782
  "node_modules/escodegen": {
@@ -5894,6 +5890,19 @@
5894
5890
  "url": "https://opencollective.com/eslint"
5895
5891
  }
5896
5892
  },
5893
+ "node_modules/eslint/node_modules/escape-string-regexp": {
5894
+ "version": "4.0.0",
5895
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
5896
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
5897
+ "license": "MIT",
5898
+ "peer": true,
5899
+ "engines": {
5900
+ "node": ">=10"
5901
+ },
5902
+ "funding": {
5903
+ "url": "https://github.com/sponsors/sindresorhus"
5904
+ }
5905
+ },
5897
5906
  "node_modules/eslint/node_modules/find-up": {
5898
5907
  "version": "5.0.0",
5899
5908
  "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -6236,15 +6245,6 @@
6236
6245
  "url": "https://github.com/sponsors/sindresorhus"
6237
6246
  }
6238
6247
  },
6239
- "node_modules/figures/node_modules/escape-string-regexp": {
6240
- "version": "1.0.5",
6241
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
6242
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
6243
- "license": "MIT",
6244
- "engines": {
6245
- "node": ">=0.8.0"
6246
- }
6247
- },
6248
6248
  "node_modules/file-entry-cache": {
6249
6249
  "version": "8.0.0",
6250
6250
  "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
@@ -6395,9 +6395,9 @@
6395
6395
  }
6396
6396
  },
6397
6397
  "node_modules/form-data": {
6398
- "version": "4.0.4",
6399
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
6400
- "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
6398
+ "version": "4.0.5",
6399
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
6400
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
6401
6401
  "license": "MIT",
6402
6402
  "dependencies": {
6403
6403
  "asynckit": "^0.4.0",
@@ -9186,9 +9186,9 @@
9186
9186
  "license": "MIT"
9187
9187
  },
9188
9188
  "node_modules/js-yaml": {
9189
- "version": "3.14.1",
9190
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
9191
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
9189
+ "version": "3.14.2",
9190
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
9191
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
9192
9192
  "license": "MIT",
9193
9193
  "dependencies": {
9194
9194
  "argparse": "^1.0.7",
@@ -10566,9 +10566,9 @@
10566
10566
  }
10567
10567
  },
10568
10568
  "node_modules/pretty-format/node_modules/@types/yargs": {
10569
- "version": "15.0.19",
10570
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz",
10571
- "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==",
10569
+ "version": "15.0.20",
10570
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.20.tgz",
10571
+ "integrity": "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==",
10572
10572
  "license": "MIT",
10573
10573
  "dependencies": {
10574
10574
  "@types/yargs-parser": "*"
@@ -10605,34 +10605,6 @@
10605
10605
  "node": ">= 6"
10606
10606
  }
10607
10607
  },
10608
- "node_modules/properties-reader": {
10609
- "version": "2.3.0",
10610
- "resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz",
10611
- "integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==",
10612
- "license": "MIT",
10613
- "dependencies": {
10614
- "mkdirp": "^1.0.4"
10615
- },
10616
- "engines": {
10617
- "node": ">=14"
10618
- },
10619
- "funding": {
10620
- "type": "github",
10621
- "url": "https://github.com/steveukx/properties?sponsor=1"
10622
- }
10623
- },
10624
- "node_modules/properties-reader/node_modules/mkdirp": {
10625
- "version": "1.0.4",
10626
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
10627
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
10628
- "license": "MIT",
10629
- "bin": {
10630
- "mkdirp": "bin/cmd.js"
10631
- },
10632
- "engines": {
10633
- "node": ">=10"
10634
- }
10635
- },
10636
10608
  "node_modules/property-expr": {
10637
10609
  "version": "2.0.6",
10638
10610
  "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.4.100-n18-experimental",
3
+ "version": "0.4.102-n18-experimental",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -14,9 +14,9 @@
14
14
  },
15
15
  "exports": {
16
16
  ".": "./build/index.js",
17
- "./decorators": "./build/decorators.js",
18
17
  "./helpers": "./build/core/playwright/helpers/auth/index.js",
19
- "./DataGenerator": "./build/core/dataGenerator/DataGenerator.js"
18
+ "./DataGenerator": "./build/core/dataGenerator/DataGenerator.js",
19
+ "./thirdPartyHelper": "./build/core/playwright/helpers/thirdPartyLib.js"
20
20
  },
21
21
  "keywords": [],
22
22
  "author": "",
@@ -35,11 +35,11 @@
35
35
  "fast-glob": "3.3.1",
36
36
  "jest": "29.6.2",
37
37
  "jest-environment-jsdom": "29.6.2",
38
- "jsonpath": "1.1.1",
39
38
  "msw": "1.2.3",
40
39
  "playwright": "1.53.2",
41
40
  "playwright-bdd": "8.3.1",
42
- "supports-color": "8.1.1"
41
+ "supports-color": "8.1.1",
42
+ "jsonpath": "1.1.1"
43
43
  },
44
44
  "bin": {
45
45
  "ZDTestingFramework": "./bin/cli.js"
@@ -1,80 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = mergeAbortedTestsIntoLastRun;
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _path = _interopRequireDefault(require("path"));
10
- var _logger = require("../../../utils/logger");
11
- var _fileUtils = require("../../../utils/fileUtils");
12
- function mergeAbortedTestsIntoLastRun() {
13
- let projectName = 'chromium',
14
- resultsFile = _path.default.join(process.cwd(), 'uat', 'test-results', 'playwright-test-results.json'),
15
- lastRunFile = _path.default.join(process.cwd(), 'uat', 'test-results', '.last-run.json');
16
- try {
17
- if (!_fs.default.existsSync(resultsFile)) {
18
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `No test results found at ${resultsFile}, skipping .last-run update.`);
19
- return;
20
- }
21
- let report;
22
- try {
23
- report = JSON.parse(_fs.default.readFileSync(resultsFile, 'utf-8'));
24
- } catch (e) {
25
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse results file: ${resultsFile}`);
26
- return;
27
- }
28
- const abortedTests = new Set();
29
- const isAbortedSpec = spec => {
30
- const tags = Array.isArray(spec.tags) ? spec.tags : [];
31
- // If no test satisfies all three, it returns false
32
- return spec.tests.some(test => !tags.includes('skip') && test.projectName === projectName && test.status === 'skipped');
33
- };
34
- const traverseSuites = suite => {
35
- if (suite.suites) {
36
- for (const child of suite.suites) {
37
- traverseSuites(child);
38
- }
39
- }
40
- if (suite.specs) {
41
- for (const spec of suite.specs) {
42
- if (isAbortedSpec(spec)) {
43
- abortedTests.add(spec.id);
44
- }
45
- }
46
- }
47
- };
48
- if (Array.isArray(report.suites)) {
49
- for (const suite of report.suites) {
50
- traverseSuites(suite);
51
- }
52
- }
53
- let lastRunData = {
54
- status: 'passed',
55
- failedTests: []
56
- };
57
- if (_fs.default.existsSync(lastRunFile)) {
58
- try {
59
- const parsed = JSON.parse(_fs.default.readFileSync(lastRunFile, 'utf-8'));
60
- lastRunData.status = parsed.status || lastRunData.status;
61
- lastRunData.failedTests = Array.isArray(parsed.failedTests) ? parsed.failedTests : [];
62
- } catch (e) {
63
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse existing last-run file: ${lastRunFile}. Rebuilding.`);
64
- }
65
- }
66
-
67
- // Merge existing failed tests + aborted tests
68
- const failedSet = new Set(lastRunData.failedTests);
69
- for (const id of abortedTests) {
70
- failedSet.add(id);
71
- }
72
- lastRunData.failedTests = [...failedSet];
73
- lastRunData.status = failedSet.size > 0 ? 'failed' : lastRunData.status;
74
- (0, _fileUtils.writeFileContents)(lastRunFile, JSON.stringify(lastRunData, null, 2));
75
- _logger.Logger.log(_logger.Logger.INFO_TYPE, `Updated → → → ${abortedTests.size} aborted tests in .last-run.json file`);
76
- return lastRunData;
77
- } catch (err) {
78
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Error updating .last-run.json: ${err.message}`);
79
- }
80
- }
@@ -1,4 +0,0 @@
1
- {
2
- "status": "passed",
3
- "failedTests": []
4
- }
@@ -1,260 +0,0 @@
1
- <html><head><meta charset="utf-8"/><title>Unit Report</title><style type="text/css">html,
2
- body {
3
- font-family: Arial, Helvetica, sans-serif;
4
- font-size: 1rem;
5
- margin: 0;
6
- padding: 0;
7
- color: #333;
8
- }
9
- body {
10
- padding: 2rem 1rem;
11
- font-size: 0.85rem;
12
- }
13
- .jesthtml-content {
14
- margin: 0 auto;
15
- max-width: 70rem;
16
- }
17
- header {
18
- display: flex;
19
- align-items: center;
20
- }
21
- #title {
22
- margin: 0;
23
- flex-grow: 1;
24
- }
25
- #logo {
26
- height: 4rem;
27
- }
28
- #timestamp {
29
- color: #777;
30
- margin-top: 0.5rem;
31
- }
32
-
33
- /** SUMMARY */
34
- #summary {
35
- color: #333;
36
- margin: 2rem 0;
37
- display: flex;
38
- font-family: monospace;
39
- font-size: 1rem;
40
- }
41
- #summary > div {
42
- margin-right: 2rem;
43
- background: #eee;
44
- padding: 1rem;
45
- min-width: 15rem;
46
- }
47
- #summary > div:last-child {
48
- margin-right: 0;
49
- }
50
- @media only screen and (max-width: 720px) {
51
- #summary {
52
- flex-direction: column;
53
- }
54
- #summary > div {
55
- margin-right: 0;
56
- margin-top: 2rem;
57
- }
58
- #summary > div:first-child {
59
- margin-top: 0;
60
- }
61
- }
62
-
63
- .summary-total {
64
- font-weight: bold;
65
- margin-bottom: 0.5rem;
66
- }
67
- .summary-passed {
68
- color: #4f8a10;
69
- border-left: 0.4rem solid #4f8a10;
70
- padding-left: 0.5rem;
71
- }
72
- .summary-failed,
73
- .summary-obsolete-snapshots {
74
- color: #d8000c;
75
- border-left: 0.4rem solid #d8000c;
76
- padding-left: 0.5rem;
77
- }
78
- .summary-pending {
79
- color: #9f6000;
80
- border-left: 0.4rem solid #9f6000;
81
- padding-left: 0.5rem;
82
- }
83
- .summary-empty {
84
- color: #999;
85
- border-left: 0.4rem solid #999;
86
- }
87
-
88
- .test-result {
89
- padding: 1rem;
90
- margin-bottom: 0.25rem;
91
- }
92
- .test-result:last-child {
93
- border: 0;
94
- }
95
- .test-result.passed {
96
- background-color: #dff2bf;
97
- color: #4f8a10;
98
- }
99
- .test-result.failed {
100
- background-color: #ffbaba;
101
- color: #d8000c;
102
- }
103
- .test-result.pending {
104
- background-color: #ffdf61;
105
- color: #9f6000;
106
- }
107
-
108
- .test-info {
109
- display: flex;
110
- justify-content: space-between;
111
- }
112
- .test-suitename {
113
- width: 20%;
114
- text-align: left;
115
- font-weight: bold;
116
- word-break: break-word;
117
- }
118
- .test-title {
119
- width: 40%;
120
- text-align: left;
121
- font-style: italic;
122
- }
123
- .test-status {
124
- width: 20%;
125
- text-align: right;
126
- }
127
- .test-duration {
128
- width: 10%;
129
- text-align: right;
130
- font-size: 0.75rem;
131
- }
132
-
133
- .failureMessages {
134
- padding: 0 1rem;
135
- margin-top: 1rem;
136
- border-top: 1px dashed #d8000c;
137
- }
138
- .failureMessages.suiteFailure {
139
- border-top: none;
140
- }
141
- .failureMsg {
142
- white-space: pre-wrap;
143
- white-space: -moz-pre-wrap;
144
- white-space: -pre-wrap;
145
- white-space: -o-pre-wrap;
146
- word-wrap: break-word;
147
- }
148
-
149
- .suite-container {
150
- margin-bottom: 2rem;
151
- }
152
- .suite-container > input[type="checkbox"] {
153
- position: absolute;
154
- left: -100vw;
155
- }
156
- .suite-container label {
157
- display: block;
158
- }
159
- .suite-container .suite-tests {
160
- overflow-y: hidden;
161
- height: 0;
162
- }
163
- .suite-container > input[type="checkbox"]:checked ~ .suite-tests {
164
- height: auto;
165
- overflow: visible;
166
- }
167
- .suite-info {
168
- padding: 1rem;
169
- background-color: #eee;
170
- color: #777;
171
- display: flex;
172
- align-items: center;
173
- margin-bottom: 0.25rem;
174
- }
175
- .suite-info:hover {
176
- background-color: #ddd;
177
- cursor: pointer;
178
- }
179
- .suite-info .suite-path {
180
- word-break: break-all;
181
- flex-grow: 1;
182
- font-family: monospace;
183
- font-size: 1rem;
184
- }
185
- .suite-info .suite-time {
186
- margin-left: 0.5rem;
187
- padding: 0.2rem 0.3rem;
188
- font-size: 0.75rem;
189
- }
190
- .suite-info .suite-time.warn {
191
- background-color: #d8000c;
192
- color: #fff;
193
- }
194
- .suite-info:before {
195
- content: "\2303";
196
- display: inline-block;
197
- margin-right: 0.5rem;
198
- transform: rotate(0deg);
199
- }
200
- .suite-container > input[type="checkbox"]:checked ~ label .suite-info:before {
201
- transform: rotate(180deg);
202
- }
203
-
204
- /* CONSOLE LOGS */
205
- .suite-consolelog {
206
- margin-bottom: 0.25rem;
207
- padding: 1rem;
208
- background-color: #efefef;
209
- }
210
- .suite-consolelog-header {
211
- font-weight: bold;
212
- }
213
- .suite-consolelog-item {
214
- padding: 0.5rem;
215
- }
216
- .suite-consolelog-item pre {
217
- margin: 0.5rem 0;
218
- white-space: pre-wrap;
219
- white-space: -moz-pre-wrap;
220
- white-space: -pre-wrap;
221
- white-space: -o-pre-wrap;
222
- word-wrap: break-word;
223
- }
224
- .suite-consolelog-item-origin {
225
- color: #777;
226
- font-weight: bold;
227
- }
228
- .suite-consolelog-item-message {
229
- color: #000;
230
- font-size: 1rem;
231
- padding: 0 0.5rem;
232
- }
233
-
234
- /* OBSOLETE SNAPSHOTS */
235
- .suite-obsolete-snapshots {
236
- margin-bottom: 0.25rem;
237
- padding: 1rem;
238
- background-color: #ffbaba;
239
- color: #d8000c;
240
- }
241
- .suite-obsolete-snapshots-header {
242
- font-weight: bold;
243
- }
244
- .suite-obsolete-snapshots-item {
245
- padding: 0.5rem;
246
- }
247
- .suite-obsolete-snapshots-item pre {
248
- margin: 0.5rem 0;
249
- white-space: pre-wrap;
250
- white-space: -moz-pre-wrap;
251
- white-space: -pre-wrap;
252
- white-space: -o-pre-wrap;
253
- word-wrap: break-word;
254
- }
255
- .suite-obsolete-snapshots-item-message {
256
- color: #000;
257
- font-size: 1rem;
258
- padding: 0 0.5rem;
259
- }
260
- </style></head><body><div class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><div id="metadata-container"><div id="timestamp">Started: 2025-11-12 18:33:34</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (13)</div><div class="summary-passed ">13 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 (46)</div><div class="summary-passed ">46 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><input id="collapsible-0" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-0"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/__tests__/tagProcessor.test.js</div><div class="suite-time">1.171s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should return tagArgs if no edition is provided</div><div class="test-status">passed</div><div class="test-duration">0.009s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &lt;= operator</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">TagProcessor</div><div class="test-title">should handle a single edition with &gt;= operator</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">TagProcessor</div><div class="test-title">should handle a single edition with &lt; operator</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">TagProcessor</div><div class="test-title">should handle a single edition with &gt; operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with no operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should log a message if edition is not found</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle multiple editions</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">TagProcessor</div><div class="test-title">should build tags correctly when tags are empty</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-2" class="suite-container"><input id="collapsible-1" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-1"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/additionalProfiles.test.js</div><div class="suite-time">1.606s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">additionalProfiles</div><div class="test-title">should return empty object when no additional profile tags are present</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">additionalProfiles</div><div class="test-title">should return additional profile actors when additional profile tags and editionInfo 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">additionalProfiles</div><div class="test-title">should return additional profile actors when all actor details are present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-3" class="suite-container"><input id="collapsible-2" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-2"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js</div><div class="suite-time">1.623s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">throws an error when config file cannot be loaded</div><div class="test-status">passed</div><div class="test-duration">0.045s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">throws an error when beta feature config does not exist</div><div class="test-status">passed</div><div class="test-duration">0.006s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">loads main configuration when betaFeature is not provided and main config exists</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">getListOfActors</div><div class="test-title">falls back to default configuration if main config file does not exist</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">loads beta feature configuration when betaFeature is provided</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-4" class="suite-container"><input id="collapsible-3" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-3"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js</div><div class="suite-time">1.593s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">getUATFileName</div><div class="test-title">should return pipeline-matched config path when file exists</div><div class="test-status">passed</div><div class="test-duration">0.003s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getUATFileName</div><div class="test-title">should use default stage and mode when not provided</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getUATFileName</div><div class="test-title">should return the default config files for pipeline matched files not exists</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">getEnvConfigFilePath</div><div class="test-title">should return conf file path when file exists</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getEnvConfigFilePath</div><div class="test-title">should return default path when file does not exist</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-5" class="suite-container"><input id="collapsible-4" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-4"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/customFixturesHelper.test.js</div><div class="suite-time">1.59s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">getCustomAccountDetails</div><div class="test-title">returns selected user when any tag info is present</div><div class="test-status">passed</div><div class="test-duration">0.008s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getCustomAccountDetails</div><div class="test-title">logs and returns undefined if getCustomAccountDetails function throws</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getCustomAccountDetails</div><div class="test-title">returns default actor when no tag info is not provided</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-6" class="suite-container"><input id="collapsible-5" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-5"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/configuration/__tests__/Configuration.test.js</div><div class="suite-time">0.133s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">Configuration Class</div><div class="test-title">should add new key-value pair to the configuration</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">Configuration Class</div><div class="test-title">should combine configurations correctly using addAll</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">Configuration Class</div><div class="test-title">should return correct value for a given key</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-7" class="suite-container"><input id="collapsible-6" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-6"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/configPathResolver.test.js</div><div class="suite-time">0.247s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">getConfigPath</div><div class="test-title">should return correct stageConfig when mapping exists</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getConfigPath</div><div class="test-title">should log failure when stage mapping does not exist</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-8" class="suite-container"><input id="collapsible-7" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-7"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js</div><div class="suite-time">0.271s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">executionContext</div><div class="test-title">should pass actorInfo with details from getCustomAccountDetails to use</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-9" class="suite-container"><input id="collapsible-8" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-8"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/examples/src/__tests__/App.test.js</div><div class="suite-time">0.18s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">example functions</div><div class="test-title">add function adds two numbers correctly</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">example functions</div><div class="test-title">greet function greets a person with their name</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-10" class="suite-container"><input id="collapsible-9" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-9"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/fileMutex.test.js</div><div class="suite-time">2.278s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; acquire</div><div class="test-title">should create the lock file if it does not exist</div><div class="test-status">passed</div><div class="test-duration">0.039s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; acquire</div><div class="test-title">should wait for lock file deletion if it exists</div><div class="test-status">passed</div><div class="test-duration">0.007s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; acquire</div><div class="test-title">should reject if watch timeout exceeds</div><div class="test-status">passed</div><div class="test-duration">1.018s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should delete the lock file if it exists</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should release lock by deleting lock file</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should not attempt to delete the lock file if it does not exist</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">FileMutex &gt; release</div><div class="test-title">should log an error if deleting the lock file fails</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div></div></div><div id="suite-11" class="suite-container"><input id="collapsible-10" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-10"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/runner/__tests__/RunnerHelper.test.js</div><div class="suite-time">0.689s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">RunnerHelper &gt; createRunner</div><div class="test-title">should throw error on invalid runner type</div><div class="test-status">passed</div><div class="test-duration">0.003s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">RunnerHelper &gt; createRunner</div><div class="test-title">should create a valid runner class</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-12" class="suite-container"><input id="collapsible-11" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-11"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/__tests__/validateFeature.test.js</div><div class="suite-time">2.306s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">validateFeatureFiles</div><div class="test-title">runPreprocessing with correct arguments and log success</div><div class="test-status">passed</div><div class="test-duration">0.007s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">validateFeatureFiles</div><div class="test-title">runPreprocessing with playwright conf</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">validateFeatureFiles</div><div class="test-title">error when runPreprocessing fails</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-13" class="suite-container"><input id="collapsible-12" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-12"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/runner/__tests__/SpawnRunner.test.js</div><div class="suite-time">1.111s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">SpawnRunner &gt; run</div><div class="test-title">should call runPreprocessing when bddMode is true</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div></div></body></html>