datagrok-tools 4.13.75 → 4.13.76
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/bin/commands/add.js +96 -106
- package/bin/commands/api.js +65 -107
- package/bin/commands/check.js +264 -396
- package/bin/commands/config.js +82 -158
- package/bin/commands/create.js +65 -80
- package/bin/commands/help.js +194 -12
- package/bin/commands/init.js +73 -95
- package/bin/commands/link.js +70 -176
- package/bin/commands/publish.js +283 -484
- package/bin/commands/test-all.js +77 -291
- package/bin/commands/test.js +169 -388
- package/bin/utils/color-utils.js +8 -11
- package/bin/utils/ent-helpers.js +52 -42
- package/bin/utils/func-generation.js +25 -57
- package/bin/utils/interfaces.js +5 -1
- package/bin/utils/order-functions.js +47 -118
- package/bin/utils/test-utils.js +322 -750
- package/bin/utils/utils.js +123 -235
- package/bin/validators/config-validator.js +12 -14
- package/package.json +13 -3
package/bin/utils/test-utils.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -23,13 +22,6 @@ exports.runBrowser = runBrowser;
|
|
|
23
22
|
exports.runWithTimeout = runWithTimeout;
|
|
24
23
|
exports.saveCsvResults = saveCsvResults;
|
|
25
24
|
exports.timeout = timeout;
|
|
26
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
27
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
28
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
29
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
30
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
31
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
32
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
33
25
|
var _fs = _interopRequireDefault(require("fs"));
|
|
34
26
|
var _os = _interopRequireDefault(require("os"));
|
|
35
27
|
var _path = _interopRequireDefault(require("path"));
|
|
@@ -40,302 +32,139 @@ var _puppeteerScreenRecorder = require("puppeteer-screen-recorder");
|
|
|
40
32
|
var _puppeteer = _interopRequireDefault(require("puppeteer"));
|
|
41
33
|
var color = _interopRequireWildcard(require("../utils/color-utils"));
|
|
42
34
|
var _papaparse = _interopRequireDefault(require("papaparse"));
|
|
43
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
44
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var confPath = _path["default"].join(grokDir, 'config.yaml');
|
|
51
|
-
var testCollectionTimeout = 100000;
|
|
52
|
-
var defaultLaunchParameters = exports.defaultLaunchParameters = {
|
|
35
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
36
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
37
|
+
const fetch = require('node-fetch');
|
|
38
|
+
const grokDir = _path.default.join(_os.default.homedir(), '.grok');
|
|
39
|
+
const confPath = _path.default.join(grokDir, 'config.yaml');
|
|
40
|
+
const testCollectionTimeout = 100000;
|
|
41
|
+
const defaultLaunchParameters = exports.defaultLaunchParameters = {
|
|
53
42
|
args: ['--disable-dev-shm-usage', '--disable-features=site-per-process', '--window-size=1920,1080', '--js-flags=--expose-gc'],
|
|
54
43
|
ignoreHTTPSErrors: true,
|
|
55
44
|
headless: 'new',
|
|
56
45
|
protocolTimeout: 0
|
|
57
46
|
};
|
|
58
|
-
function getToken(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
65
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
66
|
-
case 0:
|
|
67
|
-
_context2.next = 2;
|
|
68
|
-
return fetch("".concat(url, "/users/login/dev/").concat(key), {
|
|
69
|
-
method: 'POST'
|
|
70
|
-
});
|
|
71
|
-
case 2:
|
|
72
|
-
response = _context2.sent;
|
|
73
|
-
_context2.next = 5;
|
|
74
|
-
return response.json();
|
|
75
|
-
case 5:
|
|
76
|
-
json = _context2.sent;
|
|
77
|
-
if (!(json.isSuccess == true)) {
|
|
78
|
-
_context2.next = 10;
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
return _context2.abrupt("return", json.token);
|
|
82
|
-
case 10:
|
|
83
|
-
throw new Error('Unable to login to server. Check your dev key');
|
|
84
|
-
case 11:
|
|
85
|
-
case "end":
|
|
86
|
-
return _context2.stop();
|
|
87
|
-
}
|
|
88
|
-
}, _callee2);
|
|
89
|
-
}));
|
|
90
|
-
return _getToken.apply(this, arguments);
|
|
91
|
-
}
|
|
92
|
-
function getWebUrl(_x3, _x4) {
|
|
93
|
-
return _getWebUrl.apply(this, arguments);
|
|
47
|
+
async function getToken(url, key) {
|
|
48
|
+
const response = await fetch(`${url}/users/login/dev/${key}`, {
|
|
49
|
+
method: 'POST'
|
|
50
|
+
});
|
|
51
|
+
const json = await response.json();
|
|
52
|
+
if (json.isSuccess == true) return json.token;else throw new Error('Unable to login to server. Check your dev key');
|
|
94
53
|
}
|
|
95
|
-
function
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
headers: {
|
|
104
|
-
Authorization: token
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
case 2:
|
|
108
|
-
response = _context3.sent;
|
|
109
|
-
_context3.next = 5;
|
|
110
|
-
return response.json();
|
|
111
|
-
case 5:
|
|
112
|
-
json = _context3.sent;
|
|
113
|
-
return _context3.abrupt("return", json.settings.webRoot);
|
|
114
|
-
case 7:
|
|
115
|
-
case "end":
|
|
116
|
-
return _context3.stop();
|
|
117
|
-
}
|
|
118
|
-
}, _callee3);
|
|
119
|
-
}));
|
|
120
|
-
return _getWebUrl.apply(this, arguments);
|
|
54
|
+
async function getWebUrl(url, token) {
|
|
55
|
+
const response = await fetch(`${url}/admin/plugins/admin/settings`, {
|
|
56
|
+
headers: {
|
|
57
|
+
Authorization: token
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
const json = await response.json();
|
|
61
|
+
return json.settings.webRoot;
|
|
121
62
|
}
|
|
122
63
|
function getDevKey(hostKey) {
|
|
123
|
-
|
|
124
|
-
|
|
64
|
+
const config = _jsYaml.default.load(_fs.default.readFileSync(confPath, 'utf8'));
|
|
65
|
+
let host = hostKey == '' ? config.default : hostKey;
|
|
125
66
|
host = host.trim();
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
67
|
+
const urls = utils.mapURL(config);
|
|
68
|
+
let key = '';
|
|
69
|
+
let url = '';
|
|
129
70
|
try {
|
|
130
|
-
|
|
131
|
-
if (
|
|
132
|
-
if (
|
|
71
|
+
let url = new URL(host).href;
|
|
72
|
+
if (url.endsWith('/')) url = url.slice(0, -1);
|
|
73
|
+
if (url in urls) key = config['servers'][urls[url]]['key'];
|
|
133
74
|
} catch (error) {
|
|
134
|
-
if (config['servers'][host] == null) throw new Error(
|
|
75
|
+
if (config['servers'][host] == null) throw new Error(`Unknown server alias. Please add it to ${confPath}`);
|
|
135
76
|
url = config['servers'][host]['url'];
|
|
136
77
|
key = config['servers'][host]['key'];
|
|
137
78
|
}
|
|
138
79
|
return {
|
|
139
|
-
url
|
|
140
|
-
key
|
|
80
|
+
url,
|
|
81
|
+
key
|
|
141
82
|
};
|
|
142
83
|
}
|
|
143
|
-
function getBrowserPage(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
_context4.next = 23;
|
|
197
|
-
return devtoolsTarget.createCDPSession();
|
|
198
|
-
case 23:
|
|
199
|
-
client = _context4.sent;
|
|
200
|
-
_context4.next = 26;
|
|
201
|
-
return client.send('Runtime.enable');
|
|
202
|
-
case 26:
|
|
203
|
-
_context4.next = 28;
|
|
204
|
-
return client.send('Runtime.evaluate', {
|
|
205
|
-
expression: "\n window.UI.viewManager.showView('network');\n window.UI.dockController.setDockSide('bottom')\n "
|
|
206
|
-
});
|
|
207
|
-
case 28:
|
|
208
|
-
_context4.next = 30;
|
|
209
|
-
return browser.newPage();
|
|
210
|
-
case 30:
|
|
211
|
-
page = _context4.sent;
|
|
212
|
-
_context4.next = 33;
|
|
213
|
-
return page.setViewport({
|
|
214
|
-
width: 1920,
|
|
215
|
-
height: 1080
|
|
216
|
-
});
|
|
217
|
-
case 33:
|
|
218
|
-
page.setDefaultNavigationTimeout(0);
|
|
219
|
-
_context4.next = 36;
|
|
220
|
-
return page["goto"]("".concat(url, "/oauth/"));
|
|
221
|
-
case 36:
|
|
222
|
-
_context4.next = 38;
|
|
223
|
-
return page.setCookie({
|
|
224
|
-
name: 'auth',
|
|
225
|
-
value: token
|
|
226
|
-
});
|
|
227
|
-
case 38:
|
|
228
|
-
_context4.next = 40;
|
|
229
|
-
return page.evaluate(function (token) {
|
|
230
|
-
window.localStorage.setItem('auth', token);
|
|
231
|
-
}, token);
|
|
232
|
-
case 40:
|
|
233
|
-
_context4.next = 42;
|
|
234
|
-
return page["goto"](url);
|
|
235
|
-
case 42:
|
|
236
|
-
_context4.prev = 42;
|
|
237
|
-
_context4.next = 45;
|
|
238
|
-
return page.waitForFunction(function () {
|
|
239
|
-
return document.querySelector('.grok-preloader') == null;
|
|
240
|
-
}, {
|
|
241
|
-
timeout: 3600000
|
|
242
|
-
});
|
|
243
|
-
case 45:
|
|
244
|
-
_context4.next = 50;
|
|
245
|
-
break;
|
|
246
|
-
case 47:
|
|
247
|
-
_context4.prev = 47;
|
|
248
|
-
_context4.t0 = _context4["catch"](42);
|
|
249
|
-
throw _context4.t0;
|
|
250
|
-
case 50:
|
|
251
|
-
return _context4.abrupt("return", {
|
|
252
|
-
browser: browser,
|
|
253
|
-
page: page
|
|
254
|
-
});
|
|
255
|
-
case 51:
|
|
256
|
-
case "end":
|
|
257
|
-
return _context4.stop();
|
|
258
|
-
}
|
|
259
|
-
}, _callee4, null, [[42, 47]]);
|
|
260
|
-
}));
|
|
261
|
-
return _getBrowserPage.apply(this, arguments);
|
|
84
|
+
async function getBrowserPage(puppeteer, params = defaultLaunchParameters) {
|
|
85
|
+
let url = process.env.HOST ?? '';
|
|
86
|
+
const cfg = getDevKey(url);
|
|
87
|
+
url = cfg.url;
|
|
88
|
+
const key = cfg.key;
|
|
89
|
+
const token = await getToken(url, key);
|
|
90
|
+
url = await getWebUrl(url, token);
|
|
91
|
+
console.log(`Using web root: ${url}`);
|
|
92
|
+
const browser = await puppeteer.launch(params);
|
|
93
|
+
if (params.debug) {
|
|
94
|
+
const targets = await browser.targets();
|
|
95
|
+
const devtoolsTarget = targets.find(t => {
|
|
96
|
+
return t.type() === 'other' && t.url().startsWith('devtools://');
|
|
97
|
+
});
|
|
98
|
+
if (devtoolsTarget) {
|
|
99
|
+
const client = await devtoolsTarget.createCDPSession();
|
|
100
|
+
await client.send('Runtime.enable');
|
|
101
|
+
await client.send('Runtime.evaluate', {
|
|
102
|
+
expression: `
|
|
103
|
+
window.UI.viewManager.showView('network');
|
|
104
|
+
window.UI.dockController.setDockSide('bottom')
|
|
105
|
+
`
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const page = await browser.newPage();
|
|
110
|
+
await page.setViewport({
|
|
111
|
+
width: 1920,
|
|
112
|
+
height: 1080
|
|
113
|
+
});
|
|
114
|
+
page.setDefaultNavigationTimeout(0);
|
|
115
|
+
await page.goto(`${url}/oauth/`);
|
|
116
|
+
await page.setCookie({
|
|
117
|
+
name: 'auth',
|
|
118
|
+
value: token
|
|
119
|
+
});
|
|
120
|
+
await page.evaluate(token => {
|
|
121
|
+
window.localStorage.setItem('auth', token);
|
|
122
|
+
}, token);
|
|
123
|
+
await page.goto(url);
|
|
124
|
+
try {
|
|
125
|
+
// await page.waitForSelector('.grok-preloader', { timeout: 1800000 });
|
|
126
|
+
await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, {
|
|
127
|
+
timeout: 3600000
|
|
128
|
+
});
|
|
129
|
+
} catch (error) {
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
browser,
|
|
134
|
+
page
|
|
135
|
+
};
|
|
262
136
|
}
|
|
263
137
|
function runWithTimeout(timeout, f) {
|
|
264
|
-
return new Promise(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
_context.next = 4;
|
|
275
|
-
return f();
|
|
276
|
-
case 4:
|
|
277
|
-
resolveValue = _context.sent;
|
|
278
|
-
clearTimeout(timeoutId);
|
|
279
|
-
resolve(resolveValue);
|
|
280
|
-
_context.next = 12;
|
|
281
|
-
break;
|
|
282
|
-
case 9:
|
|
283
|
-
_context.prev = 9;
|
|
284
|
-
_context.t0 = _context["catch"](1);
|
|
285
|
-
reject(_context.t0);
|
|
286
|
-
case 12:
|
|
287
|
-
case "end":
|
|
288
|
-
return _context.stop();
|
|
289
|
-
}
|
|
290
|
-
}, _callee, null, [[1, 9]]);
|
|
291
|
-
}));
|
|
292
|
-
return function (_x6, _x7) {
|
|
293
|
-
return _ref.apply(this, arguments);
|
|
294
|
-
};
|
|
295
|
-
}());
|
|
296
|
-
}
|
|
297
|
-
function timeout(_x8, _x9) {
|
|
298
|
-
return _timeout.apply(this, arguments);
|
|
138
|
+
return new Promise(async (resolve, reject) => {
|
|
139
|
+
const timeoutId = setTimeout(() => reject(new Error(`Timeout exceeded: ${timeout} ms`)), timeout);
|
|
140
|
+
try {
|
|
141
|
+
const resolveValue = await f();
|
|
142
|
+
clearTimeout(timeoutId);
|
|
143
|
+
resolve(resolveValue);
|
|
144
|
+
} catch (e) {
|
|
145
|
+
reject(e);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
299
148
|
}
|
|
300
|
-
function
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
// eslint-disable-next-line prefer-promise-reject-errors
|
|
314
|
-
reject(timeoutReason);
|
|
315
|
-
}, testTimeout);
|
|
316
|
-
});
|
|
317
|
-
_context5.prev = 3;
|
|
318
|
-
_context5.next = 6;
|
|
319
|
-
return Promise.race([func(), timeoutPromise]);
|
|
320
|
-
case 6:
|
|
321
|
-
return _context5.abrupt("return", _context5.sent);
|
|
322
|
-
case 7:
|
|
323
|
-
_context5.prev = 7;
|
|
324
|
-
if (timeout) clearTimeout(timeout);
|
|
325
|
-
return _context5.finish(7);
|
|
326
|
-
case 10:
|
|
327
|
-
case "end":
|
|
328
|
-
return _context5.stop();
|
|
329
|
-
}
|
|
330
|
-
}, _callee5, null, [[3,, 7, 10]]);
|
|
331
|
-
}));
|
|
332
|
-
return _timeout.apply(this, arguments);
|
|
149
|
+
async function timeout(func, testTimeout, timeoutReason = 'EXECUTION TIMEOUT') {
|
|
150
|
+
let timeout = null;
|
|
151
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
152
|
+
timeout = setTimeout(() => {
|
|
153
|
+
// eslint-disable-next-line prefer-promise-reject-errors
|
|
154
|
+
reject(timeoutReason);
|
|
155
|
+
}, testTimeout);
|
|
156
|
+
});
|
|
157
|
+
try {
|
|
158
|
+
return await Promise.race([func(), timeoutPromise]);
|
|
159
|
+
} finally {
|
|
160
|
+
if (timeout) clearTimeout(timeout);
|
|
161
|
+
}
|
|
333
162
|
}
|
|
334
163
|
function exitWithCode(code) {
|
|
335
|
-
console.log(
|
|
164
|
+
console.log(`Exiting with code ${code}`);
|
|
336
165
|
process.exit(code);
|
|
337
166
|
}
|
|
338
|
-
|
|
167
|
+
const recorderConfig = exports.recorderConfig = {
|
|
339
168
|
followNewTab: true,
|
|
340
169
|
fps: 25,
|
|
341
170
|
ffmpeg_Path: null,
|
|
@@ -352,282 +181,131 @@ var recorderConfig = exports.recorderConfig = {
|
|
|
352
181
|
}
|
|
353
182
|
// aspectRatio: '16:9',
|
|
354
183
|
};
|
|
355
|
-
function loadPackages(
|
|
356
|
-
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
184
|
+
async function loadPackages(packagesDir, packagesToLoad, host, skipPublish, skipBuild, linkPackage, release) {
|
|
185
|
+
let packagesToRun = new Map();
|
|
186
|
+
let hostString = host === undefined ? `` : `${host}`;
|
|
187
|
+
if (packagesToLoad !== "all") {
|
|
188
|
+
for (let pacakgeName of (packagesToLoad ?? "").split(' ')) {
|
|
189
|
+
if ((pacakgeName ?? '').length !== 0) packagesToRun.set((0, _utils.spaceToCamelCase)(pacakgeName).toLocaleLowerCase(), false);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
for (let dirName of _fs.default.readdirSync(packagesDir)) {
|
|
193
|
+
let packageDir = _path.default.join(packagesDir, dirName);
|
|
194
|
+
if (!_fs.default.lstatSync(packageDir).isFile()) {
|
|
195
|
+
try {
|
|
196
|
+
const packageJsonData = JSON.parse(_fs.default.readFileSync(_path.default.join(packageDir, 'package.json'), {
|
|
197
|
+
encoding: 'utf-8'
|
|
198
|
+
}));
|
|
199
|
+
const packageFriendlyName = packagesToRun.get((0, _utils.spaceToCamelCase)(packageJsonData["friendlyName"] ?? packageJsonData["name"].split("/")[1] ?? packageJsonData["name"] ?? '').toLocaleLowerCase() ?? "") ?? packagesToRun.get(dirName);
|
|
200
|
+
if (utils.isPackageDir(packageDir) && (packageFriendlyName !== undefined || packagesToLoad === "all")) {
|
|
201
|
+
try {
|
|
202
|
+
process.stdout.write(`Building and publishing ${dirName}...`);
|
|
203
|
+
if (skipPublish != true) {
|
|
204
|
+
await utils.runScript(`npm install`, packageDir);
|
|
205
|
+
if (linkPackage) await utils.runScript(`grok link`, packageDir);
|
|
206
|
+
if (skipBuild != true) await utils.runScript(`npm run build`, packageDir);
|
|
207
|
+
await utils.runScript(`grok publish ${hostString}${release ? ' --release' : ''}`, packageDir);
|
|
377
208
|
}
|
|
209
|
+
packagesToRun.set(dirName, true);
|
|
210
|
+
process.stdout.write(` success!\n`);
|
|
211
|
+
} catch (e) {
|
|
212
|
+
process.stdout.write(` fail!\n`);
|
|
378
213
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
case 6:
|
|
383
|
-
if ((_step2 = _iterator2.n()).done) {
|
|
384
|
-
_context6.next = 41;
|
|
385
|
-
break;
|
|
386
|
-
}
|
|
387
|
-
dirName = _step2.value;
|
|
388
|
-
packageDir = _path["default"].join(packagesDir, dirName);
|
|
389
|
-
if (_fs["default"].lstatSync(packageDir).isFile()) {
|
|
390
|
-
_context6.next = 39;
|
|
391
|
-
break;
|
|
392
|
-
}
|
|
393
|
-
_context6.prev = 10;
|
|
394
|
-
packageJsonData = JSON.parse(_fs["default"].readFileSync(_path["default"].join(packageDir, 'package.json'), {
|
|
395
|
-
encoding: 'utf-8'
|
|
396
|
-
}));
|
|
397
|
-
packageFriendlyName = (_packagesToRun$get = packagesToRun.get((_spaceToCamelCase$toL = (0, _utils.spaceToCamelCase)((_ref6 = (_ref7 = (_packageJsonData$frie = packageJsonData["friendlyName"]) !== null && _packageJsonData$frie !== void 0 ? _packageJsonData$frie : packageJsonData["name"].split("/")[1]) !== null && _ref7 !== void 0 ? _ref7 : packageJsonData["name"]) !== null && _ref6 !== void 0 ? _ref6 : '').toLocaleLowerCase()) !== null && _spaceToCamelCase$toL !== void 0 ? _spaceToCamelCase$toL : "")) !== null && _packagesToRun$get !== void 0 ? _packagesToRun$get : packagesToRun.get(dirName);
|
|
398
|
-
if (!(utils.isPackageDir(packageDir) && (packageFriendlyName !== undefined || packagesToLoad === "all"))) {
|
|
399
|
-
_context6.next = 34;
|
|
400
|
-
break;
|
|
401
|
-
}
|
|
402
|
-
_context6.prev = 14;
|
|
403
|
-
process.stdout.write("Building and publishing ".concat(dirName, "..."));
|
|
404
|
-
if (!(skipPublish != true)) {
|
|
405
|
-
_context6.next = 27;
|
|
406
|
-
break;
|
|
407
|
-
}
|
|
408
|
-
_context6.next = 19;
|
|
409
|
-
return utils.runScript("npm install", packageDir);
|
|
410
|
-
case 19:
|
|
411
|
-
if (!linkPackage) {
|
|
412
|
-
_context6.next = 22;
|
|
413
|
-
break;
|
|
414
|
-
}
|
|
415
|
-
_context6.next = 22;
|
|
416
|
-
return utils.runScript("grok link", packageDir);
|
|
417
|
-
case 22:
|
|
418
|
-
if (!(skipBuild != true)) {
|
|
419
|
-
_context6.next = 25;
|
|
420
|
-
break;
|
|
421
|
-
}
|
|
422
|
-
_context6.next = 25;
|
|
423
|
-
return utils.runScript("npm run build", packageDir);
|
|
424
|
-
case 25:
|
|
425
|
-
_context6.next = 27;
|
|
426
|
-
return utils.runScript("grok publish ".concat(hostString).concat(release ? ' --release' : ''), packageDir);
|
|
427
|
-
case 27:
|
|
428
|
-
packagesToRun.set(dirName, true);
|
|
429
|
-
process.stdout.write(" success!\n");
|
|
430
|
-
_context6.next = 34;
|
|
431
|
-
break;
|
|
432
|
-
case 31:
|
|
433
|
-
_context6.prev = 31;
|
|
434
|
-
_context6.t0 = _context6["catch"](14);
|
|
435
|
-
process.stdout.write(" fail!\n");
|
|
436
|
-
case 34:
|
|
437
|
-
_context6.next = 39;
|
|
438
|
-
break;
|
|
439
|
-
case 36:
|
|
440
|
-
_context6.prev = 36;
|
|
441
|
-
_context6.t1 = _context6["catch"](10);
|
|
442
|
-
if (utils.isPackageDir(packageDir) && (packagesToRun.get((0, _utils.spaceToCamelCase)(dirName).toLocaleLowerCase()) !== undefined || packagesToLoad === "all")) console.log("Couldn't read package.json ".concat(dirName));
|
|
443
|
-
case 39:
|
|
444
|
-
_context6.next = 6;
|
|
445
|
-
break;
|
|
446
|
-
case 41:
|
|
447
|
-
_context6.next = 46;
|
|
448
|
-
break;
|
|
449
|
-
case 43:
|
|
450
|
-
_context6.prev = 43;
|
|
451
|
-
_context6.t2 = _context6["catch"](4);
|
|
452
|
-
_iterator2.e(_context6.t2);
|
|
453
|
-
case 46:
|
|
454
|
-
_context6.prev = 46;
|
|
455
|
-
_iterator2.f();
|
|
456
|
-
return _context6.finish(46);
|
|
457
|
-
case 49:
|
|
458
|
-
console.log();
|
|
459
|
-
return _context6.abrupt("return", Array.from(packagesToRun).filter(function (_ref2) {
|
|
460
|
-
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
|
|
461
|
-
key = _ref3[0],
|
|
462
|
-
value = _ref3[1];
|
|
463
|
-
return value === true;
|
|
464
|
-
}).map(function (_ref4) {
|
|
465
|
-
var _ref5 = (0, _slicedToArray2["default"])(_ref4, 1),
|
|
466
|
-
key = _ref5[0];
|
|
467
|
-
return key;
|
|
468
|
-
}));
|
|
469
|
-
case 52:
|
|
470
|
-
case "end":
|
|
471
|
-
return _context6.stop();
|
|
214
|
+
}
|
|
215
|
+
} catch (e) {
|
|
216
|
+
if (utils.isPackageDir(packageDir) && (packagesToRun.get((0, _utils.spaceToCamelCase)(dirName).toLocaleLowerCase()) !== undefined || packagesToLoad === "all")) console.log(`Couldn't read package.json ${dirName}`);
|
|
472
217
|
}
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
return _loadTestsList.apply(this, arguments);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
console.log();
|
|
221
|
+
return Array.from(packagesToRun).filter(([key, value]) => value === true).map(([key]) => key);
|
|
222
|
+
;
|
|
479
223
|
}
|
|
480
|
-
function
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
browser = out.browser;
|
|
509
|
-
page = out.page;
|
|
510
|
-
_context7.next = 8;
|
|
511
|
-
return page.evaluate(function (packages, coreTests) {
|
|
512
|
-
return new Promise(function (resolve, reject) {
|
|
513
|
-
var promises = [];
|
|
514
|
-
try {
|
|
515
|
-
packages.map(function (packageName) {
|
|
516
|
-
var _DG$Func$find$;
|
|
517
|
-
var p = (_DG$Func$find$ = window.DG.Func.find({
|
|
518
|
-
"package": packageName,
|
|
519
|
-
name: 'test'
|
|
520
|
-
})[0]) === null || _DG$Func$find$ === void 0 ? void 0 : _DG$Func$find$["package"];
|
|
521
|
-
if (p) {
|
|
522
|
-
try {
|
|
523
|
-
promises.push(p.getTests(coreTests)["catch"](function (e) {
|
|
524
|
-
console.error('something else went wrong with collecting package tests');
|
|
525
|
-
console.error(e === null || e === void 0 ? void 0 : e.message);
|
|
526
|
-
}).then(function (ts) {
|
|
527
|
-
return {
|
|
528
|
-
packageName: packageName,
|
|
529
|
-
tests: ts
|
|
530
|
-
};
|
|
531
|
-
}));
|
|
532
|
-
} catch (e) {
|
|
533
|
-
console.error('something went wrong while adding test collection promise');
|
|
534
|
-
console.error(e.message);
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
});
|
|
538
|
-
} catch (err) {
|
|
539
|
-
console.error("Error during evaluation in browser context:", err);
|
|
540
|
-
reject();
|
|
541
|
-
}
|
|
542
|
-
Promise.all(promises).then(function (results) {
|
|
543
|
-
resolve(results);
|
|
544
|
-
})["catch"](function (e) {
|
|
545
|
-
var stack = window.DG.Logger.translateStackTrace(e.stack).then(function () {
|
|
546
|
-
resolve({
|
|
547
|
-
failReport: "".concat(e.message, "\n").concat(stack)
|
|
548
|
-
});
|
|
549
|
-
});
|
|
550
|
-
});
|
|
551
|
-
});
|
|
552
|
-
}, packages, core);
|
|
553
|
-
case 8:
|
|
554
|
-
r = _context7.sent;
|
|
555
|
-
if (!(browser != null)) {
|
|
556
|
-
_context7.next = 12;
|
|
557
|
-
break;
|
|
558
|
-
}
|
|
559
|
-
_context7.next = 12;
|
|
560
|
-
return browser.close();
|
|
561
|
-
case 12:
|
|
562
|
-
return _context7.abrupt("return", r);
|
|
563
|
-
case 13:
|
|
564
|
-
case "end":
|
|
565
|
-
return _context7.stop();
|
|
566
|
-
}
|
|
567
|
-
}, _callee7);
|
|
568
|
-
})), testCollectionTimeout);
|
|
569
|
-
case 3:
|
|
570
|
-
packageTestsData = _context8.sent;
|
|
571
|
-
testsList = [];
|
|
572
|
-
_iterator3 = _createForOfIteratorHelper(packageTestsData);
|
|
573
|
-
try {
|
|
574
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
575
|
-
testPackage = _step3.value;
|
|
576
|
-
for (_key in testPackage.tests) {
|
|
577
|
-
if (testPackage.tests.hasOwnProperty(_key)) {
|
|
578
|
-
_iterator4 = _createForOfIteratorHelper(testPackage.tests[_key].tests);
|
|
579
|
-
try {
|
|
580
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
581
|
-
testValue = _step4.value;
|
|
582
|
-
testValue.packageName = testPackage.packageName;
|
|
583
|
-
testsList.push(testValue);
|
|
584
|
-
}
|
|
585
|
-
} catch (err) {
|
|
586
|
-
_iterator4.e(err);
|
|
587
|
-
} finally {
|
|
588
|
-
_iterator4.f();
|
|
589
|
-
}
|
|
590
|
-
}
|
|
224
|
+
async function loadTestsList(packages, core = false) {
|
|
225
|
+
var packageTestsData = await timeout(async () => {
|
|
226
|
+
const params = Object.assign({}, defaultLaunchParameters);
|
|
227
|
+
// params['headless'] = false;
|
|
228
|
+
const out = await getBrowserPage(_puppeteer.default, params);
|
|
229
|
+
const browser = out.browser;
|
|
230
|
+
const page = out.page;
|
|
231
|
+
const r = await page.evaluate((packages, coreTests) => {
|
|
232
|
+
return new Promise((resolve, reject) => {
|
|
233
|
+
const promises = [];
|
|
234
|
+
try {
|
|
235
|
+
packages.map(packageName => {
|
|
236
|
+
const p = window.DG.Func.find({
|
|
237
|
+
package: packageName,
|
|
238
|
+
name: 'test'
|
|
239
|
+
})[0]?.package;
|
|
240
|
+
if (p) {
|
|
241
|
+
try {
|
|
242
|
+
promises.push(p.getTests(coreTests).catch(e => {
|
|
243
|
+
console.error('something else went wrong with collecting package tests');
|
|
244
|
+
console.error(e?.message);
|
|
245
|
+
}).then(ts => ({
|
|
246
|
+
packageName: packageName,
|
|
247
|
+
tests: ts
|
|
248
|
+
})));
|
|
249
|
+
} catch (e) {
|
|
250
|
+
console.error('something went wrong while adding test collection promise');
|
|
251
|
+
console.error(e.message);
|
|
591
252
|
}
|
|
592
253
|
}
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
254
|
+
});
|
|
255
|
+
} catch (err) {
|
|
256
|
+
console.error("Error during evaluation in browser context:", err);
|
|
257
|
+
reject();
|
|
258
|
+
}
|
|
259
|
+
Promise.all(promises).then(results => {
|
|
260
|
+
resolve(results);
|
|
261
|
+
}).catch(e => {
|
|
262
|
+
const stack = window.DG.Logger.translateStackTrace(e.stack).then(() => {
|
|
263
|
+
resolve({
|
|
264
|
+
failReport: `${e.message}\n${stack}`
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
}, packages, core);
|
|
270
|
+
if (browser != null) {
|
|
271
|
+
await browser.close();
|
|
272
|
+
}
|
|
273
|
+
return r;
|
|
274
|
+
}, testCollectionTimeout);
|
|
275
|
+
let testsList = [];
|
|
276
|
+
for (let testPackage of packageTestsData) {
|
|
277
|
+
for (const key in testPackage.tests) {
|
|
278
|
+
if (testPackage.tests.hasOwnProperty(key)) {
|
|
279
|
+
for (let testValue of testPackage.tests[key].tests) {
|
|
280
|
+
testValue.packageName = testPackage.packageName;
|
|
281
|
+
testsList.push(testValue);
|
|
282
|
+
}
|
|
602
283
|
}
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
return
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return testsList;
|
|
606
287
|
}
|
|
607
288
|
function addLogsToFile(filePath, stringToSave) {
|
|
608
|
-
_fs
|
|
289
|
+
_fs.default.appendFileSync(filePath, `${stringToSave}`);
|
|
609
290
|
}
|
|
610
|
-
function printBrowsersResult(browserResult) {
|
|
611
|
-
var _browserResult$failed, _browserResult$verbos3;
|
|
612
|
-
var verbose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
291
|
+
function printBrowsersResult(browserResult, verbose = false) {
|
|
613
292
|
if (verbose) {
|
|
614
|
-
|
|
615
|
-
if (((_browserResult$passed = browserResult.passedAmount) !== null && _browserResult$passed !== void 0 ? _browserResult$passed : 0) > 0 && ((_browserResult$verbos = browserResult.verbosePassed) !== null && _browserResult$verbos !== void 0 ? _browserResult$verbos : []).length > 0) {
|
|
293
|
+
if ((browserResult.passedAmount ?? 0) > 0 && (browserResult.verbosePassed ?? []).length > 0) {
|
|
616
294
|
console.log("Passed: ");
|
|
617
295
|
console.log(browserResult.verbosePassed);
|
|
618
296
|
}
|
|
619
|
-
if ((
|
|
297
|
+
if ((browserResult.skippedAmount ?? 0) > 0 && (browserResult.verboseSkipped ?? []).length > 0) {
|
|
620
298
|
console.log("Skipped: ");
|
|
621
299
|
console.log(browserResult.verboseSkipped);
|
|
622
300
|
}
|
|
623
301
|
}
|
|
624
|
-
if ((
|
|
302
|
+
if ((browserResult.failedAmount ?? 0) > 0 && (browserResult.verboseFailed ?? []).length > 0) {
|
|
625
303
|
console.log("Failed: ");
|
|
626
304
|
console.log(browserResult.verboseFailed);
|
|
627
305
|
}
|
|
628
|
-
console.log("Passed amount: " +
|
|
629
|
-
console.log("Skipped amount: " +
|
|
630
|
-
console.log("Failed amount: " +
|
|
306
|
+
console.log("Passed amount: " + browserResult?.passedAmount);
|
|
307
|
+
console.log("Skipped amount: " + browserResult?.skippedAmount);
|
|
308
|
+
console.log("Failed amount: " + browserResult?.failedAmount);
|
|
631
309
|
if (browserResult.failed) {
|
|
632
310
|
if (browserResult.verboseFailed === 'Package not found') color.fail('Tests not found');else color.fail('Tests failed.');
|
|
633
311
|
} else {
|
|
@@ -635,228 +313,122 @@ function printBrowsersResult(browserResult) {
|
|
|
635
313
|
}
|
|
636
314
|
}
|
|
637
315
|
function saveCsvResults(stringToSave, csvReportDir) {
|
|
638
|
-
|
|
316
|
+
const modifiedStrings = stringToSave.map((str, index) => {
|
|
639
317
|
if (index === 0) return str;
|
|
640
318
|
return str.split('\n').slice(1).join('\n');
|
|
641
319
|
});
|
|
642
|
-
_fs
|
|
320
|
+
_fs.default.writeFileSync(csvReportDir, modifiedStrings.join('\n'), 'utf8');
|
|
643
321
|
color.info('Saved `test-report.csv`\n');
|
|
644
322
|
}
|
|
645
|
-
function runBrowser(
|
|
646
|
-
return
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
page.on('response', function (response) {
|
|
694
|
-
addLogsToFile(logsDir, "CONSOLE LOG REQUEST: ".concat(response.status(), ", ").concat(response.url(), "\n"));
|
|
695
|
-
});
|
|
696
|
-
case 20:
|
|
697
|
-
_context9.next = 22;
|
|
698
|
-
return page.evaluate(function (testData, options) {
|
|
699
|
-
if (options.benchmark) window.DG.Test.isInBenchmark = true;
|
|
700
|
-
if (options.reproduce) window.DG.Test.isReproducing = true;
|
|
701
|
-
if (options.ciCd) window.DG.Test.isCiCd = true;
|
|
702
|
-
if (options.debug) window.DG.Test.isInDebug = true;
|
|
703
|
-
return new Promise(function (resolve, reject) {
|
|
704
|
-
window.DG.Utils.executeTests(testData, options.stopOnTimeout).then(function (results) {
|
|
705
|
-
resolve(results);
|
|
706
|
-
})["catch"](function (e) {
|
|
707
|
-
resolve({
|
|
708
|
-
failed: true,
|
|
709
|
-
verbosePassed: "",
|
|
710
|
-
verboseSkipped: "",
|
|
711
|
-
verboseFailed: "Tests execution failed",
|
|
712
|
-
error: JSON.stringify(e),
|
|
713
|
-
passedAmount: 0,
|
|
714
|
-
skippedAmount: 0,
|
|
715
|
-
failedAmount: 1,
|
|
716
|
-
csv: "",
|
|
717
|
-
df: undefined
|
|
718
|
-
});
|
|
719
|
-
});
|
|
720
|
-
});
|
|
721
|
-
}, testExecutionData, browserOptions);
|
|
722
|
-
case 22:
|
|
723
|
-
testingResults = _context9.sent;
|
|
724
|
-
if (!browserOptions.record) {
|
|
725
|
-
_context9.next = 26;
|
|
726
|
-
break;
|
|
727
|
-
}
|
|
728
|
-
_context9.next = 26;
|
|
729
|
-
return recorder.stop();
|
|
730
|
-
case 26:
|
|
731
|
-
if (!(browser != null)) {
|
|
732
|
-
_context9.next = 29;
|
|
733
|
-
break;
|
|
734
|
-
}
|
|
735
|
-
_context9.next = 29;
|
|
736
|
-
return browser.close();
|
|
737
|
-
case 29:
|
|
738
|
-
return _context9.abrupt("return", testingResults);
|
|
739
|
-
case 30:
|
|
740
|
-
case "end":
|
|
741
|
-
return _context9.stop();
|
|
742
|
-
}
|
|
743
|
-
}, _callee9);
|
|
744
|
-
})), testInvocationTimeout);
|
|
745
|
-
case 3:
|
|
746
|
-
return _context10.abrupt("return", _context10.sent);
|
|
747
|
-
case 4:
|
|
748
|
-
case "end":
|
|
749
|
-
return _context10.stop();
|
|
323
|
+
async function runBrowser(testExecutionData, browserOptions, browsersId, testInvocationTimeout = 3600000) {
|
|
324
|
+
return await timeout(async () => {
|
|
325
|
+
const params = Object.assign({
|
|
326
|
+
devtools: browserOptions.debug
|
|
327
|
+
}, defaultLaunchParameters);
|
|
328
|
+
if (browserOptions.gui) params['headless'] = false;
|
|
329
|
+
const out = await getBrowserPage(_puppeteer.default, params);
|
|
330
|
+
const browser = out.browser;
|
|
331
|
+
const page = out.page;
|
|
332
|
+
const recorder = new _puppeteerScreenRecorder.PuppeteerScreenRecorder(page, recorderConfig);
|
|
333
|
+
const currentBrowserNum = browsersId;
|
|
334
|
+
const logsDir = `./test-console-output-${currentBrowserNum}.log`;
|
|
335
|
+
const recordDir = `./test-record-${currentBrowserNum}.mp4`;
|
|
336
|
+
if (browserOptions.record) {
|
|
337
|
+
await recorder.start(recordDir);
|
|
338
|
+
await page.exposeFunction("addLogsToFile", addLogsToFile);
|
|
339
|
+
_fs.default.writeFileSync(logsDir, ``);
|
|
340
|
+
page.on('console', msg => {
|
|
341
|
+
addLogsToFile(logsDir, `CONSOLE LOG ENTRY: ${msg.text()}\n`);
|
|
342
|
+
});
|
|
343
|
+
page.on('pageerror', error => {
|
|
344
|
+
addLogsToFile(logsDir, `CONSOLE LOG ERROR: ${error.message}\n`);
|
|
345
|
+
});
|
|
346
|
+
page.on('response', response => {
|
|
347
|
+
addLogsToFile(logsDir, `CONSOLE LOG REQUEST: ${response.status()}, ${response.url()}\n`);
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
const testingResults = await page.evaluate(async (testData, options) => {
|
|
351
|
+
try {
|
|
352
|
+
if (options.benchmark) window.DG.Test.isInBenchmark = true;
|
|
353
|
+
if (options.reproduce) window.DG.Test.isReproducing = true;
|
|
354
|
+
if (options.ciCd) window.DG.Test.isCiCd = true;
|
|
355
|
+
if (options.debug) window.DG.Test.isInDebug = true;
|
|
356
|
+
const results = await window.DG.Utils.executeTests(testData, options.stopOnTimeout);
|
|
357
|
+
return results;
|
|
358
|
+
} catch (e) {
|
|
359
|
+
return {
|
|
360
|
+
failed: true,
|
|
361
|
+
verbosePassed: "",
|
|
362
|
+
verboseSkipped: "",
|
|
363
|
+
verboseFailed: "Tests execution failed",
|
|
364
|
+
error: JSON.stringify(e),
|
|
365
|
+
passedAmount: 0,
|
|
366
|
+
skippedAmount: 0,
|
|
367
|
+
failedAmount: 1,
|
|
368
|
+
csv: "",
|
|
369
|
+
df: undefined
|
|
370
|
+
};
|
|
750
371
|
}
|
|
751
|
-
},
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
|
|
372
|
+
}, testExecutionData, browserOptions);
|
|
373
|
+
if (browserOptions.record) {
|
|
374
|
+
await recorder.stop();
|
|
375
|
+
}
|
|
376
|
+
if (browser != null) {
|
|
377
|
+
await browser.close();
|
|
378
|
+
}
|
|
379
|
+
return testingResults;
|
|
380
|
+
}, testInvocationTimeout);
|
|
757
381
|
}
|
|
758
|
-
function
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
_context11.next = 8;
|
|
785
|
-
break;
|
|
786
|
-
}
|
|
787
|
-
return _context11.abrupt("continue", 19);
|
|
788
|
-
case 8:
|
|
789
|
-
mergedResult.failed = mergedResult.failed || browsersResult.failed;
|
|
790
|
-
mergedResult.verbosePassed = "".concat(mergedResult.verbosePassed.trim(), "\n").concat(browsersResult.verbosePassed.trim());
|
|
791
|
-
mergedResult.verboseFailed = "".concat(mergedResult.verboseFailed.trim(), "\n").concat(browsersResult.verboseFailed.trim());
|
|
792
|
-
mergedResult.verboseSkipped = "".concat(mergedResult.verboseSkipped.trim(), "\n").concat(browsersResult.verboseSkipped.trim());
|
|
793
|
-
mergedResult.passedAmount += browsersResult.passedAmount;
|
|
794
|
-
mergedResult.failedAmount += browsersResult.failedAmount;
|
|
795
|
-
mergedResult.skippedAmount += browsersResult.skippedAmount;
|
|
796
|
-
resultToMerdge1 = mergedResult.csv.trim().split('\n');
|
|
797
|
-
resultToMerdge2 = browsersResult.csv.trim().split('\n');
|
|
798
|
-
header = resultToMerdge1[0];
|
|
799
|
-
mergedResult.csv = [header].concat((0, _toConsumableArray2["default"])(resultToMerdge1.slice(1)), (0, _toConsumableArray2["default"])(resultToMerdge2.slice(1))).join('\n');
|
|
800
|
-
case 19:
|
|
801
|
-
_context11.next = 4;
|
|
802
|
-
break;
|
|
803
|
-
case 21:
|
|
804
|
-
_context11.next = 26;
|
|
805
|
-
break;
|
|
806
|
-
case 23:
|
|
807
|
-
_context11.prev = 23;
|
|
808
|
-
_context11.t0 = _context11["catch"](2);
|
|
809
|
-
_iterator5.e(_context11.t0);
|
|
810
|
-
case 26:
|
|
811
|
-
_context11.prev = 26;
|
|
812
|
-
_iterator5.f();
|
|
813
|
-
return _context11.finish(26);
|
|
814
|
-
case 29:
|
|
815
|
-
return _context11.abrupt("return", mergedResult);
|
|
816
|
-
case 30:
|
|
817
|
-
case "end":
|
|
818
|
-
return _context11.stop();
|
|
819
|
-
}
|
|
820
|
-
}, _callee11, null, [[2, 23, 26, 29]]);
|
|
821
|
-
}));
|
|
822
|
-
return _mergeBrowsersResults.apply(this, arguments);
|
|
382
|
+
async function mergeBrowsersResults(browsersResults) {
|
|
383
|
+
let mergedResult = {
|
|
384
|
+
failed: browsersResults[0].failed,
|
|
385
|
+
verbosePassed: browsersResults[0].verbosePassed,
|
|
386
|
+
verboseSkipped: browsersResults[0].verboseSkipped,
|
|
387
|
+
verboseFailed: browsersResults[0].verboseFailed,
|
|
388
|
+
passedAmount: browsersResults[0].passedAmount,
|
|
389
|
+
skippedAmount: browsersResults[0].skippedAmount,
|
|
390
|
+
failedAmount: browsersResults[0].failedAmount,
|
|
391
|
+
csv: browsersResults[0].csv
|
|
392
|
+
};
|
|
393
|
+
for (let browsersResult of browsersResults) {
|
|
394
|
+
if (mergedResult.csv === browsersResult.csv) continue;
|
|
395
|
+
mergedResult.failed = mergedResult.failed || browsersResult.failed;
|
|
396
|
+
mergedResult.verbosePassed = `${mergedResult.verbosePassed.trim()}\n${browsersResult.verbosePassed.trim()}`;
|
|
397
|
+
mergedResult.verboseFailed = `${mergedResult.verboseFailed.trim()}\n${browsersResult.verboseFailed.trim()}`;
|
|
398
|
+
mergedResult.verboseSkipped = `${mergedResult.verboseSkipped.trim()}\n${browsersResult.verboseSkipped.trim()}`;
|
|
399
|
+
mergedResult.passedAmount += browsersResult.passedAmount;
|
|
400
|
+
mergedResult.failedAmount += browsersResult.failedAmount;
|
|
401
|
+
mergedResult.skippedAmount += browsersResult.skippedAmount;
|
|
402
|
+
const resultToMerdge1 = mergedResult.csv.trim().split('\n');
|
|
403
|
+
const resultToMerdge2 = browsersResult.csv.trim().split('\n');
|
|
404
|
+
const header = resultToMerdge1[0];
|
|
405
|
+
mergedResult.csv = [header, ...resultToMerdge1.slice(1), ...resultToMerdge2.slice(1)].join('\n');
|
|
406
|
+
}
|
|
407
|
+
return mergedResult;
|
|
823
408
|
}
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
(
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
}
|
|
831
|
-
function addColumnToCsv(_x22, _x23, _x24) {
|
|
832
|
-
return _addColumnToCsv.apply(this, arguments);
|
|
409
|
+
class TestContext {
|
|
410
|
+
catchUnhandled = true;
|
|
411
|
+
report = false;
|
|
412
|
+
constructor(catchUnhandled, report) {
|
|
413
|
+
if (catchUnhandled !== undefined) this.catchUnhandled = catchUnhandled;
|
|
414
|
+
if (report !== undefined) this.report = report;
|
|
415
|
+
}
|
|
833
416
|
}
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
});
|
|
852
|
-
}
|
|
853
|
-
});
|
|
854
|
-
return _context12.abrupt("return", result);
|
|
855
|
-
case 3:
|
|
856
|
-
case "end":
|
|
857
|
-
return _context12.stop();
|
|
858
|
-
}
|
|
859
|
-
}, _callee12);
|
|
860
|
-
}));
|
|
861
|
-
return _addColumnToCsv.apply(this, arguments);
|
|
417
|
+
exports.TestContext = TestContext;
|
|
418
|
+
async function addColumnToCsv(csv, columnName, defaultValue) {
|
|
419
|
+
let result = csv;
|
|
420
|
+
_papaparse.default.parse(csv, {
|
|
421
|
+
header: true,
|
|
422
|
+
skipEmptyLines: true,
|
|
423
|
+
complete: function (results) {
|
|
424
|
+
const dataWithDefaultColumn = results.data.map(row => {
|
|
425
|
+
row[columnName] = defaultValue;
|
|
426
|
+
return row;
|
|
427
|
+
});
|
|
428
|
+
result = _papaparse.default.unparse(dataWithDefaultColumn, {
|
|
429
|
+
header: true
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
return result;
|
|
862
434
|
}
|