artes 1.0.60 → 1.0.61
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/package.json
CHANGED
|
@@ -2,17 +2,19 @@ const { addElements } = require("./elementController");
|
|
|
2
2
|
const cucumberConfig = require("../../../cucumber.config");
|
|
3
3
|
const fs = require("fs");
|
|
4
4
|
function pomCollector() {
|
|
5
|
-
fs.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
if (fs.existsSync(cucumberConfig.default.pomPath)) {
|
|
6
|
+
fs.readdir(`${cucumberConfig.default.pomPath}`, (err, files) => {
|
|
7
|
+
files.forEach((file) => {
|
|
8
|
+
fs.readFile(
|
|
9
|
+
`${cucumberConfig.default.pomPath}/${file}`,
|
|
10
|
+
"utf-8",
|
|
11
|
+
(err, content) => {
|
|
12
|
+
addElements(JSON.parse(content));
|
|
13
|
+
},
|
|
14
|
+
);
|
|
15
|
+
});
|
|
14
16
|
});
|
|
15
|
-
}
|
|
17
|
+
}
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
module.exports = { pomCollector };
|
|
@@ -51,7 +51,6 @@ function processForm(key, value) {
|
|
|
51
51
|
value.endsWith(".docx") ||
|
|
52
52
|
value.includes("/"))
|
|
53
53
|
) {
|
|
54
|
-
// If it looks like a file path, treat it as a file
|
|
55
54
|
try {
|
|
56
55
|
if (fs.existsSync(value)) {
|
|
57
56
|
formData[key] = {
|
|
@@ -61,43 +60,72 @@ function processForm(key, value) {
|
|
|
61
60
|
};
|
|
62
61
|
return;
|
|
63
62
|
}
|
|
64
|
-
} catch (error) {
|
|
65
|
-
// If file doesn't exist, treat as regular string
|
|
66
|
-
}
|
|
63
|
+
} catch (error) {}
|
|
67
64
|
}
|
|
68
65
|
|
|
69
66
|
return formData;
|
|
70
67
|
}
|
|
71
68
|
|
|
69
|
+
async function requestMaker(headers, data, requestDataType) {
|
|
70
|
+
let request = {};
|
|
71
|
+
|
|
72
|
+
Object.assign(request, { headers: headers });
|
|
73
|
+
|
|
74
|
+
switch (requestDataType) {
|
|
75
|
+
case "multipart":
|
|
76
|
+
Object.assign(request, { multipart: data });
|
|
77
|
+
break;
|
|
78
|
+
default:
|
|
79
|
+
Object.assign(request, { data: data });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return request;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async function responseMaker(request, response) {
|
|
86
|
+
const responseObject = {};
|
|
87
|
+
|
|
88
|
+
response && Object.assign(responseObject, { URL: response.url() });
|
|
89
|
+
|
|
90
|
+
request.headers &&
|
|
91
|
+
Object.assign(responseObject, { "Request Headers": await request.headers });
|
|
92
|
+
|
|
93
|
+
request.body &&
|
|
94
|
+
Object.assign(responseObject, { "Request Body": await request.body });
|
|
95
|
+
|
|
96
|
+
response && Object.assign(responseObject, { Response: await response });
|
|
97
|
+
|
|
98
|
+
response &&
|
|
99
|
+
Object.assign(responseObject, {
|
|
100
|
+
"Response Headers": await response.headers(),
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
if (response) {
|
|
104
|
+
try {
|
|
105
|
+
Object.assign(responseObject, { "Response Body": await response.json() });
|
|
106
|
+
} catch (e) {
|
|
107
|
+
Object.assign(responseObject, { "Response Body": await response.text() });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return responseObject;
|
|
112
|
+
}
|
|
113
|
+
|
|
72
114
|
const api = {
|
|
73
115
|
get: async (url, payload) => {
|
|
74
116
|
const URL = await selector(url);
|
|
75
117
|
const resolvedURL = await resolveVariable(URL);
|
|
76
118
|
|
|
77
|
-
const resolvedPayload = resolveVariable(payload);
|
|
119
|
+
const resolvedPayload = (await payload) && resolveVariable(payload);
|
|
78
120
|
const payloadJSON = (await resolvedPayload) && JSON.parse(resolvedPayload);
|
|
79
121
|
|
|
80
|
-
const
|
|
81
|
-
headers: payloadJSON ? payloadJSON.headers : {},
|
|
82
|
-
});
|
|
122
|
+
const req = await requestMaker(payloadJSON?.headers || {});
|
|
83
123
|
|
|
84
|
-
const
|
|
85
|
-
let body;
|
|
86
|
-
try {
|
|
87
|
-
body = await res.json();
|
|
88
|
-
} catch (e) {
|
|
89
|
-
body = await res.text();
|
|
90
|
-
}
|
|
124
|
+
const res = await context.request.get(resolvedURL, req);
|
|
91
125
|
|
|
92
|
-
const response =
|
|
93
|
-
url: res.url(),
|
|
94
|
-
requestHeaders: payloadJSON.headers,
|
|
95
|
-
response: res,
|
|
96
|
-
responseHeaders: header,
|
|
97
|
-
responseBody: body,
|
|
98
|
-
};
|
|
126
|
+
const response = responseMaker(payloadJSON, res);
|
|
99
127
|
|
|
100
|
-
context.response = response;
|
|
128
|
+
context.response = await response;
|
|
101
129
|
},
|
|
102
130
|
head: async (url) => {
|
|
103
131
|
const URL = await selector(url);
|
|
@@ -105,195 +133,135 @@ const api = {
|
|
|
105
133
|
|
|
106
134
|
const res = await context.request.head(resolvedURL);
|
|
107
135
|
|
|
108
|
-
const
|
|
109
|
-
let body;
|
|
110
|
-
try {
|
|
111
|
-
body = await res.json();
|
|
112
|
-
} catch (e) {
|
|
113
|
-
body = await res.text();
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const response = {
|
|
117
|
-
url: res.url(),
|
|
118
|
-
response: res,
|
|
119
|
-
responseHeaders: header,
|
|
120
|
-
responseBody: body,
|
|
121
|
-
};
|
|
136
|
+
const response = responseMaker(payloadJSON, res);
|
|
122
137
|
|
|
123
|
-
context.response = response;
|
|
138
|
+
context.response = await response;
|
|
124
139
|
},
|
|
125
|
-
post: async (url, payload,
|
|
140
|
+
post: async (url, payload, requestDataType) => {
|
|
126
141
|
const URL = await selector(url);
|
|
127
142
|
const resolvedURL = await resolveVariable(URL);
|
|
128
143
|
|
|
129
|
-
const resolvedPayload = await resolveVariable(payload);
|
|
144
|
+
const resolvedPayload = (await payload) && resolveVariable(payload);
|
|
130
145
|
const payloadJSON = (await resolvedPayload) && JSON.parse(resolvedPayload);
|
|
131
146
|
|
|
132
|
-
let
|
|
147
|
+
let req;
|
|
133
148
|
|
|
134
|
-
switch (
|
|
149
|
+
switch (requestDataType) {
|
|
135
150
|
case "multipart":
|
|
136
151
|
let combinedFormData = {};
|
|
152
|
+
|
|
137
153
|
for (const [key, value] of Object.entries(payloadJSON.body)) {
|
|
138
154
|
const formData = processForm(key, value);
|
|
139
155
|
Object.assign(combinedFormData, formData);
|
|
140
156
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
157
|
+
|
|
158
|
+
req = await requestMaker(
|
|
159
|
+
payloadJSON.headers || {},
|
|
160
|
+
combinedFormData || {},
|
|
161
|
+
requestDataType,
|
|
162
|
+
);
|
|
145
163
|
break;
|
|
146
164
|
default:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
165
|
+
req = await requestMaker(
|
|
166
|
+
payloadJSON.headers || {},
|
|
167
|
+
payloadJSON.body || {},
|
|
168
|
+
);
|
|
151
169
|
}
|
|
152
170
|
|
|
153
|
-
const res = await context.request.post(resolvedURL,
|
|
171
|
+
const res = await context.request.post(resolvedURL, req);
|
|
154
172
|
|
|
155
|
-
const
|
|
156
|
-
let body;
|
|
157
|
-
try {
|
|
158
|
-
body = await res.json();
|
|
159
|
-
} catch (e) {
|
|
160
|
-
body = await res.text();
|
|
161
|
-
}
|
|
173
|
+
const response = await responseMaker(payloadJSON, res);
|
|
162
174
|
|
|
163
|
-
|
|
164
|
-
url: res.url(),
|
|
165
|
-
requestHeaders: payloadJSON.headers,
|
|
166
|
-
requestBody: payloadJSON.body,
|
|
167
|
-
response: res,
|
|
168
|
-
responseHeaders: header,
|
|
169
|
-
responseBody: body,
|
|
170
|
-
};
|
|
171
|
-
context.response = response;
|
|
175
|
+
context.response = await response;
|
|
172
176
|
},
|
|
173
|
-
put: async (url, payload,
|
|
177
|
+
put: async (url, payload, requestDataType) => {
|
|
174
178
|
const URL = await selector(url);
|
|
175
179
|
const resolvedURL = await resolveVariable(URL);
|
|
176
180
|
|
|
177
|
-
const resolvedPayload = await resolveVariable(payload);
|
|
181
|
+
const resolvedPayload = (await payload) && resolveVariable(payload);
|
|
178
182
|
const payloadJSON = (await resolvedPayload) && JSON.parse(resolvedPayload);
|
|
179
183
|
|
|
180
|
-
let
|
|
184
|
+
let req;
|
|
181
185
|
|
|
182
|
-
switch (
|
|
186
|
+
switch (requestDataType) {
|
|
183
187
|
case "multipart":
|
|
184
188
|
let combinedFormData = {};
|
|
185
189
|
for (const [key, value] of Object.entries(payloadJSON.body)) {
|
|
186
190
|
const formData = processForm(key, value);
|
|
187
191
|
Object.assign(combinedFormData, formData);
|
|
188
192
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
+
|
|
194
|
+
req = await requestMaker(
|
|
195
|
+
payloadJSON.headers || {},
|
|
196
|
+
combinedFormData || {},
|
|
197
|
+
requestDataType,
|
|
198
|
+
);
|
|
199
|
+
|
|
193
200
|
break;
|
|
194
201
|
default:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
202
|
+
req = await requestMaker(
|
|
203
|
+
payloadJSON.headers || {},
|
|
204
|
+
payloadJSON.body || {},
|
|
205
|
+
);
|
|
199
206
|
}
|
|
200
207
|
|
|
201
|
-
const res = await context.request.put(resolvedURL,
|
|
208
|
+
const res = await context.request.put(resolvedURL, req);
|
|
202
209
|
|
|
203
|
-
const
|
|
204
|
-
let body;
|
|
205
|
-
try {
|
|
206
|
-
body = await res.json();
|
|
207
|
-
} catch (e) {
|
|
208
|
-
body = await res.text();
|
|
209
|
-
}
|
|
210
|
+
const response = await responseMaker(payloadJSON, res);
|
|
210
211
|
|
|
211
|
-
|
|
212
|
-
url: res.url(),
|
|
213
|
-
requestHeaders: payloadJSON.headers,
|
|
214
|
-
requestBody: payloadJSON.body,
|
|
215
|
-
response: res,
|
|
216
|
-
responseHeaders: header,
|
|
217
|
-
responseBody: body,
|
|
218
|
-
};
|
|
219
|
-
context.response = response;
|
|
212
|
+
context.response = await response;
|
|
220
213
|
},
|
|
221
|
-
patch: async (url, payload,
|
|
214
|
+
patch: async (url, payload, requestDataType) => {
|
|
222
215
|
const URL = await selector(url);
|
|
223
216
|
const resolvedURL = await resolveVariable(URL);
|
|
224
217
|
|
|
225
|
-
const resolvedPayload = await resolveVariable(payload);
|
|
218
|
+
const resolvedPayload = (await payload) && resolveVariable(payload);
|
|
226
219
|
const payloadJSON = (await resolvedPayload) && JSON.parse(resolvedPayload);
|
|
227
220
|
|
|
228
|
-
let
|
|
221
|
+
let req;
|
|
229
222
|
|
|
230
|
-
switch (
|
|
223
|
+
switch (requestDataType) {
|
|
231
224
|
case "multipart":
|
|
232
225
|
let combinedFormData = {};
|
|
233
226
|
for (const [key, value] of Object.entries(payloadJSON.body)) {
|
|
234
227
|
const formData = processForm(key, value);
|
|
235
228
|
Object.assign(combinedFormData, formData);
|
|
236
229
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
230
|
+
|
|
231
|
+
req = await requestMaker(
|
|
232
|
+
payloadJSON.headers || {},
|
|
233
|
+
combinedFormData || {},
|
|
234
|
+
requestDataType,
|
|
235
|
+
);
|
|
236
|
+
|
|
241
237
|
break;
|
|
242
238
|
default:
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
239
|
+
req = await requestMaker(
|
|
240
|
+
payloadJSON.headers || {},
|
|
241
|
+
payloadJSON.body || {},
|
|
242
|
+
);
|
|
247
243
|
}
|
|
248
244
|
|
|
249
|
-
const res = await context.request.patch(resolvedURL,
|
|
245
|
+
const res = await context.request.patch(resolvedURL, req);
|
|
250
246
|
|
|
251
|
-
const
|
|
252
|
-
let body;
|
|
253
|
-
try {
|
|
254
|
-
body = await res.json();
|
|
255
|
-
} catch (e) {
|
|
256
|
-
body = await res.text();
|
|
257
|
-
}
|
|
247
|
+
const response = responseMaker(payloadJSON, res);
|
|
258
248
|
|
|
259
|
-
|
|
260
|
-
url: res.url(),
|
|
261
|
-
requestHeaders: payloadJSON.headers,
|
|
262
|
-
requestBody: payloadJSON.body,
|
|
263
|
-
response: res,
|
|
264
|
-
responseHeaders: header,
|
|
265
|
-
responseBody: body,
|
|
266
|
-
};
|
|
267
|
-
context.response = response;
|
|
249
|
+
context.response = await response;
|
|
268
250
|
},
|
|
269
251
|
delete: async (url, payload) => {
|
|
270
252
|
const URL = await selector(url);
|
|
271
253
|
const resolvedURL = await resolveVariable(URL);
|
|
272
254
|
|
|
273
|
-
const resolvedPayload = await resolveVariable(payload);
|
|
255
|
+
const resolvedPayload = (await payload) && resolveVariable(payload);
|
|
274
256
|
const payloadJSON = (await resolvedPayload) && JSON.parse(resolvedPayload);
|
|
275
257
|
|
|
276
|
-
const
|
|
277
|
-
headers: payloadJSON.headers,
|
|
278
|
-
});
|
|
258
|
+
const req = await requestMaker(payloadJSON.headers || {});
|
|
279
259
|
|
|
280
|
-
const
|
|
281
|
-
let body;
|
|
282
|
-
try {
|
|
283
|
-
body = await res.json();
|
|
284
|
-
} catch (e) {
|
|
285
|
-
body = await res.text();
|
|
286
|
-
}
|
|
260
|
+
const res = await context.request.delete(resolvedURL, req);
|
|
287
261
|
|
|
288
|
-
const response =
|
|
289
|
-
url: res.url(),
|
|
290
|
-
requestHeaders: payloadJSON.headers,
|
|
291
|
-
response: res,
|
|
292
|
-
responseHeaders: header,
|
|
293
|
-
responseBody: body,
|
|
294
|
-
};
|
|
262
|
+
const response = responseMaker(payloadJSON, res);
|
|
295
263
|
|
|
296
|
-
context.response = response;
|
|
264
|
+
context.response = await response;
|
|
297
265
|
},
|
|
298
266
|
vars: () => {
|
|
299
267
|
return context.vars;
|
package/src/hooks/hooks.js
CHANGED
|
@@ -56,10 +56,12 @@ After(async function ({ pickle, result }) {
|
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
if (context.response) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
Object.entries(context.response).forEach(async ([key, value]) => {
|
|
60
|
+
await this.attach(
|
|
61
|
+
`${key}:\n${JSON.stringify(value, null, 2)}`,
|
|
62
|
+
"text/plain",
|
|
63
|
+
);
|
|
64
|
+
});
|
|
63
65
|
}
|
|
64
66
|
|
|
65
67
|
await context.page.close();
|