testcafe-reporter-qase 2.0.0 → 2.0.1

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/changelog.md CHANGED
@@ -1,3 +1,19 @@
1
+ # qase-testcafe@2.0.1
2
+
3
+ ## What's new
4
+
5
+ Support group parameters for test cases. You can specify the group parameters in the test case using the following format:
6
+
7
+ ```ts
8
+ const q = qase.groupParameters({ 'param01': 'value01', 'param02': 'value02' }).create();
9
+ test.meta({ ...q })(
10
+ 'test',
11
+ async (t) => {
12
+ await t;
13
+ },
14
+ );
15
+ ```
16
+
1
17
  # qase-testcafe@2.0.0
2
18
 
3
19
  ## What's new
package/dist/qase.d.ts CHANGED
@@ -3,6 +3,7 @@ export declare class qase {
3
3
  private static _qaseTitle;
4
4
  private static _qaseFields;
5
5
  private static _qaseParameters;
6
+ private static _qaseGroupParameters;
6
7
  /**
7
8
  * Set a Qase ID for the test case
8
9
  * Don't forget to call `create` method after setting all the necessary parameters
@@ -47,6 +48,17 @@ export declare class qase {
47
48
  * test.meta({userField: 123, ...q})('Test case title', async t => { ... });
48
49
  */
49
50
  static parameters: (values: Record<string, string>) => typeof qase;
51
+ /**
52
+ * Set a group parameters for the test case
53
+ * Don't forget to call `create` method after setting all the necessary parameters
54
+ * @param {Record<string, string>} values
55
+ * @example
56
+ * const q = qase.group_parameters({ 'severity': 'high', 'priority': 'medium' }).create();
57
+ * test.meta(q)('Test case title', async t => { ... });
58
+ * or
59
+ * test.meta({userField: 123, ...q})('Test case title', async t => { ... });
60
+ */
61
+ static group_parameters: (values: Record<string, string>) => typeof qase;
50
62
  /**
51
63
  * Create a Qase metadata
52
64
  * Call this method after setting all the necessary parameters
@@ -61,6 +73,7 @@ export declare class qase {
61
73
  QaseTitle: string;
62
74
  QaseFields: string;
63
75
  QaseParameters: string;
76
+ QaseGroupParameters: string;
64
77
  };
65
78
  private static toNormalizeRecord;
66
79
  }
package/dist/qase.js CHANGED
@@ -11,6 +11,7 @@ qase._qaseID = '';
11
11
  qase._qaseTitle = '';
12
12
  qase._qaseFields = '';
13
13
  qase._qaseParameters = '';
14
+ qase._qaseGroupParameters = '';
14
15
  /**
15
16
  * Set a Qase ID for the test case
16
17
  * Don't forget to call `create` method after setting all the necessary parameters
@@ -67,6 +68,20 @@ qase.parameters = (values) => {
67
68
  _a._qaseParameters = _a.toNormalizeRecord(values);
68
69
  return _a;
69
70
  };
71
+ /**
72
+ * Set a group parameters for the test case
73
+ * Don't forget to call `create` method after setting all the necessary parameters
74
+ * @param {Record<string, string>} values
75
+ * @example
76
+ * const q = qase.group_parameters({ 'severity': 'high', 'priority': 'medium' }).create();
77
+ * test.meta(q)('Test case title', async t => { ... });
78
+ * or
79
+ * test.meta({userField: 123, ...q})('Test case title', async t => { ... });
80
+ */
81
+ qase.group_parameters = (values) => {
82
+ _a._qaseGroupParameters = _a.toNormalizeRecord(values);
83
+ return _a;
84
+ };
70
85
  /**
71
86
  * Create a Qase metadata
72
87
  * Call this method after setting all the necessary parameters
@@ -82,11 +97,13 @@ qase.create = () => {
82
97
  QaseTitle: _a._qaseTitle,
83
98
  QaseFields: _a._qaseFields,
84
99
  QaseParameters: _a._qaseParameters,
100
+ QaseGroupParameters: _a._qaseGroupParameters,
85
101
  };
86
102
  _a._qaseID = '';
87
103
  _a._qaseTitle = '';
88
104
  _a._qaseFields = '';
89
105
  _a._qaseParameters = '';
106
+ _a._qaseGroupParameters = '';
90
107
  return meta;
91
108
  };
92
109
  qase.toNormalizeRecord = (record) => {
@@ -90,5 +90,13 @@ export declare class TestcafeQaseReporter {
90
90
  */
91
91
  reportTaskDone: () => Promise<void>;
92
92
  private getMeta;
93
+ /**
94
+ * @param {FixtureType} fixture
95
+ * @param {string} title
96
+ * @param {number[]} ids
97
+ * @param {Record<string, string>} parameters
98
+ * @private
99
+ */
100
+ private getSignature;
93
101
  }
94
102
  export {};
package/dist/reporter.js CHANGED
@@ -9,6 +9,7 @@ var metadataEnum;
9
9
  metadataEnum["title"] = "QaseTitle";
10
10
  metadataEnum["fields"] = "QaseFields";
11
11
  metadataEnum["parameters"] = "QaseParameters";
12
+ metadataEnum["groupParameters"] = "QaseGroupParameters";
12
13
  metadataEnum["oldID"] = "CID";
13
14
  })(metadataEnum || (metadataEnum = {}));
14
15
  /**
@@ -97,6 +98,7 @@ class TestcafeQaseReporter {
97
98
  message: error.message,
98
99
  muted: false,
99
100
  params: metadata[metadataEnum.parameters],
101
+ group_params: metadata[metadataEnum.groupParameters],
100
102
  relations: {
101
103
  suite: {
102
104
  data: [
@@ -108,7 +110,7 @@ class TestcafeQaseReporter {
108
110
  },
109
111
  },
110
112
  run_id: null,
111
- signature: `${testRunInfo.fixture.name}::${title}`,
113
+ signature: this.getSignature(testRunInfo.fixture, title, metadata[metadataEnum.id], metadata[metadataEnum.parameters]),
112
114
  steps: [],
113
115
  id: (0, uuid_1.v4)(),
114
116
  testops_id: metadata[metadataEnum.id].length > 0 ? metadata[metadataEnum.id] : null,
@@ -136,6 +138,7 @@ class TestcafeQaseReporter {
136
138
  QaseTitle: undefined,
137
139
  QaseFields: {},
138
140
  QaseParameters: {},
141
+ QaseGroupParameters: {},
139
142
  };
140
143
  if (meta[metadataEnum.oldID] !== undefined && meta[metadataEnum.oldID] !== '') {
141
144
  const v = meta[metadataEnum.oldID].split(',');
@@ -156,5 +159,35 @@ class TestcafeQaseReporter {
156
159
  }
157
160
  return metadata;
158
161
  }
162
+ /**
163
+ * @param {FixtureType} fixture
164
+ * @param {string} title
165
+ * @param {number[]} ids
166
+ * @param {Record<string, string>} parameters
167
+ * @private
168
+ */
169
+ getSignature(fixture, title, ids, parameters) {
170
+ const executionPath = process.cwd() + '/';
171
+ const path = fixture.path?.replace(executionPath, '') ?? '';
172
+ let signature = '';
173
+ if (path != '') {
174
+ signature += path.split('/').join('::') + '::';
175
+ }
176
+ signature += fixture.name.toLowerCase()
177
+ .replace(/\s/g, '_')
178
+ + '::'
179
+ + title.toLowerCase()
180
+ .replace(/\s/g, '_');
181
+ if (ids.length > 0) {
182
+ signature += `::${ids.join('::')}`;
183
+ }
184
+ if (Object.keys(parameters).length > 0) {
185
+ signature += '::';
186
+ }
187
+ signature += Object.entries(parameters)
188
+ .map(([key, value]) => `{${key}:${value}}`)
189
+ .join('::');
190
+ return signature;
191
+ }
159
192
  }
160
193
  exports.TestcafeQaseReporter = TestcafeQaseReporter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testcafe-reporter-qase",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Qase TMS TestCafe Reporter",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -40,7 +40,7 @@
40
40
  "author": "Qase Team <support@qase.io>",
41
41
  "license": "Apache-2.0",
42
42
  "dependencies": {
43
- "qase-javascript-commons": "^2.0.9",
43
+ "qase-javascript-commons": "~2.2.0",
44
44
  "uuid": "^9.0.0"
45
45
  },
46
46
  "peerDependencies": {