@zohodesk/testinglibrary 0.1.5 → 0.1.6

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.
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CUSTOM_COMMANDS = void 0;
7
- const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags'];
7
+ const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags', 'edition'];
@@ -55,6 +55,7 @@ const {
55
55
  bddMode
56
56
  } = (0, _readConfigFile.generateConfigFromFile)();
57
57
  let base = bddMode ? _bddFramework.test : _test.test;
58
+ const cacheMap = new Map();
58
59
  const test = exports.test = base.extend({
59
60
  page: async ({
60
61
  page
@@ -98,6 +99,11 @@ const test = exports.test = base.extend({
98
99
  await context.addInitScript(() => window.localStorage.setItem('isDnBannerHide', true));
99
100
  await use(context);
100
101
  },
102
+ cacheLayer: async ({
103
+ context
104
+ }, use) => {
105
+ await use(cacheMap);
106
+ },
101
107
  ...additionalPages
102
108
  });
103
109
  const {
@@ -34,7 +34,8 @@ function getDefaultConfig() {
34
34
  additionalPages: {},
35
35
  featureFilesFolder: 'feature-files',
36
36
  stepDefinitionsFolder: 'steps',
37
- testIdAttribute: 'data-testid'
37
+ testIdAttribute: 'data-testid',
38
+ editionOrder: ['Free', 'Express', 'Standard', 'Professional', 'Enterprise']
38
39
  };
39
40
  }
40
41
  function combineDefaultConfigWithUserConfig(userConfiguration) {
@@ -83,6 +84,7 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
83
84
  * @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
84
85
  * @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
85
86
  * @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
87
+ * @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
86
88
  */
87
89
 
88
90
  /**
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.tagProcessor = tagProcessor;
7
+ function getTagsString(tags, editionTags) {
8
+ return tags && tags !== '' ? `${tags} and not (${editionTags})` : `not (${editionTags})`;
9
+ }
10
+ function getEdition(edition) {
11
+ if (edition.startsWith('<=')) {
12
+ return ['<=', edition.slice(2)];
13
+ } else if (edition.startsWith('>=')) {
14
+ return ['>=', edition.slice(2)];
15
+ } else if (edition.startsWith('<')) {
16
+ return ['<', edition.slice(1)];
17
+ } else if (edition.startsWith('>')) {
18
+ return ['>', edition.slice(1)];
19
+ }
20
+ return [null, edition];
21
+ }
22
+ function editionPreprocessing(editionOrder, selectedEdition) {
23
+ const [operator, editionToBeSearched] = getEdition(selectedEdition.toLowerCase());
24
+ const index = editionOrder.findIndex(edition => edition.toLowerCase() === editionToBeSearched);
25
+ if (index !== -1) {
26
+ let resultArray;
27
+ if (operator === '<=') {
28
+ resultArray = editionOrder.slice(index + 1);
29
+ } else if (operator === '>=') {
30
+ resultArray = editionOrder.slice(0, index);
31
+ } else if (operator === '<') {
32
+ resultArray = editionOrder.slice(index);
33
+ } else if (operator === '>') {
34
+ resultArray = editionOrder.slice(0, index + 1);
35
+ } else {
36
+ resultArray = editionOrder.filter((_, order) => order !== index);
37
+ }
38
+ return resultArray;
39
+ }
40
+ Logger.log(Logger.INFO_TYPE, `No matching editions ${selectedEdition} found. Running with default edition`);
41
+ return [];
42
+ }
43
+ function buildEditionTags(editionArgs, operator) {
44
+ return editionArgs.map(edition => `@edition_${edition}`).join(` ${operator} `);
45
+ }
46
+ function tagProcessor(userArgsObject, editionOrder) {
47
+ let tagArgs = userArgsObject['tags'];
48
+ const edition = userArgsObject['edition'] || null;
49
+ if (edition !== null) {
50
+ let editionsArray = edition.split(',');
51
+ if (editionsArray.length === 1) {
52
+ const editionArgs = editionPreprocessing(editionOrder, edition);
53
+ if (editionArgs && editionArgs.length > 0) {
54
+ const editionTags = buildEditionTags(editionArgs, 'or');
55
+ tagArgs = `${getTagsString(tagArgs, editionTags)}`;
56
+ }
57
+ } else {
58
+ // More than one edition given
59
+ const editionTags = buildEditionTags(editionsArray, 'and');
60
+ tagArgs = `${getTagsString(tagArgs, editionTags)}`;
61
+ }
62
+ }
63
+ return tagArgs;
64
+ }
@@ -13,6 +13,7 @@ var _envInitializer = require("./env-initializer");
13
13
  var _logger = require("../../utils/logger");
14
14
  var _readConfigFile = require("./readConfigFile");
15
15
  var _rootPath = require("../../utils/rootPath");
16
+ var _tagProcessor = require("./tag-processor");
16
17
  function parseUserArgs() {
17
18
  return (0, _cliArgsToObject.cliArgsToObject)(process.argv.slice(2));
18
19
  }
@@ -85,13 +86,15 @@ function runPlaywright(command, args) {
85
86
  function main() {
86
87
  const userArgsObject = parseUserArgs();
87
88
  // eslint-disable-next-line
88
- const tagArgs = userArgsObject['tags'];
89
+
89
90
  const {
90
91
  debug,
91
92
  mode = 'dev',
92
93
  bddMode = false,
93
- headless = false
94
+ headless = false,
95
+ editionOrder
94
96
  } = (0, _readConfigFile.generateConfigFromFile)();
97
+ const tagArgs = (0, _tagProcessor.tagProcessor)(userArgsObject, editionOrder);
95
98
  const playwrightArgs = getPlaywrightArgs(userArgsObject, debug, bddMode, tagArgs, headless);
96
99
  (0, _envInitializer.initializeEnvConfig)(userArgsObject.mode ? userArgsObject.mode : mode);
97
100
  const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
package/changelog.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## Framework that abstracts the configuration for playwright and Jest
4
4
 
5
+ # 0.1.6
6
+
7
+ **Enhancements**
8
+ - New Command option Added `--edition`.
9
+ - New Configuration Added `editionOrder`.
10
+ `In uat.config.js, editionOrder: ['Free', 'Express']`
11
+ - Cache Layer added
12
+
13
+ **USAGE**
14
+ - npm run uat --edition="Free"
15
+
16
+
17
+
5
18
  # 0.1.5
6
19
 
7
20
  **Enhancements**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -23,7 +23,6 @@
23
23
  "@babel/preset-react": "7.22.5",
24
24
  "@cucumber/cucumber": "9.2.0",
25
25
  "@playwright/test": "1.40.1",
26
- "playwright": "1.40.1",
27
26
  "@testing-library/jest-dom": "5.11.9",
28
27
  "@testing-library/react": "11.2.7",
29
28
  "@testing-library/react-hooks": "7.0.2",
@@ -32,7 +31,8 @@
32
31
  "fast-glob": "3.3.1",
33
32
  "jest": "29.6.2",
34
33
  "jest-environment-jsdom": "29.6.2",
35
- "msw": "1.2.3"
34
+ "msw": "1.2.3",
35
+ "playwright": "1.40.1"
36
36
  },
37
37
  "bin": {
38
38
  "ZDTestingFramework": "./bin/cli.js"