datagrok-tools 4.13.75 → 4.13.77

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.
@@ -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,123 @@ 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 _getRequireWildcardCache(e) { return e ? t : r; })(e); }
44
- 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; }
45
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
46
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
47
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
48
- var fetch = require('node-fetch');
49
- var grokDir = _path["default"].join(_os["default"].homedir(), '.grok');
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(_x, _x2) {
59
- return _getToken.apply(this, arguments);
60
- }
61
- function _getToken() {
62
- _getToken = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(url, key) {
63
- var response, json;
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 _getWebUrl() {
96
- _getWebUrl = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(url, token) {
97
- var response, json;
98
- return _regenerator["default"].wrap(function _callee3$(_context3) {
99
- while (1) switch (_context3.prev = _context3.next) {
100
- case 0:
101
- _context3.next = 2;
102
- return fetch("".concat(url, "/admin/plugins/admin/settings"), {
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
- var config = _jsYaml["default"].load(_fs["default"].readFileSync(confPath, 'utf8'));
124
- var host = hostKey == '' ? config["default"] : hostKey;
64
+ const config = _jsYaml.default.load(_fs.default.readFileSync(confPath, 'utf8'));
65
+ let host = hostKey == '' ? config.default : hostKey;
125
66
  host = host.trim();
126
- var urls = utils.mapURL(config);
127
- var key = '';
128
- var url = '';
67
+ const urls = utils.mapURL(config);
68
+ let key = '';
69
+ let url = '';
129
70
  try {
130
- var _url = new URL(host).href;
131
- if (_url.endsWith('/')) _url = _url.slice(0, -1);
132
- if (_url in urls) key = config['servers'][urls[_url]]['key'];
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("Unknown server alias. Please add it to ".concat(confPath));
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: url,
140
- key: key
80
+ url,
81
+ key
141
82
  };
142
83
  }
143
- function getBrowserPage(_x5) {
144
- return _getBrowserPage.apply(this, arguments);
145
- }
146
- function _getBrowserPage() {
147
- _getBrowserPage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(puppeteer) {
148
- var _process$env$HOST;
149
- var params,
150
- url,
151
- cfg,
152
- key,
153
- token,
154
- browser,
155
- targets,
156
- devtoolsTarget,
157
- client,
158
- page,
159
- _args4 = arguments;
160
- return _regenerator["default"].wrap(function _callee4$(_context4) {
161
- while (1) switch (_context4.prev = _context4.next) {
162
- case 0:
163
- params = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : defaultLaunchParameters;
164
- url = (_process$env$HOST = process.env.HOST) !== null && _process$env$HOST !== void 0 ? _process$env$HOST : '';
165
- cfg = getDevKey(url);
166
- url = cfg.url;
167
- key = cfg.key;
168
- _context4.next = 7;
169
- return getToken(url, key);
170
- case 7:
171
- token = _context4.sent;
172
- _context4.next = 10;
173
- return getWebUrl(url, token);
174
- case 10:
175
- url = _context4.sent;
176
- console.log("Using web root: ".concat(url));
177
- _context4.next = 14;
178
- return puppeteer.launch(params);
179
- case 14:
180
- browser = _context4.sent;
181
- if (!params.debug) {
182
- _context4.next = 28;
183
- break;
184
- }
185
- _context4.next = 18;
186
- return browser.targets();
187
- case 18:
188
- targets = _context4.sent;
189
- devtoolsTarget = targets.find(function (t) {
190
- return t.type() === 'other' && t.url().startsWith('devtools://');
191
- });
192
- if (!devtoolsTarget) {
193
- _context4.next = 28;
194
- break;
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
+ const page = await browser.newPage();
94
+ await page.setViewport({
95
+ width: 1920,
96
+ height: 1080
97
+ });
98
+ page.setDefaultNavigationTimeout(0);
99
+ await page.goto(`${url}/oauth/`);
100
+ await page.setCookie({
101
+ name: 'auth',
102
+ value: token
103
+ });
104
+ await page.evaluate(token => {
105
+ window.localStorage.setItem('auth', token);
106
+ }, token);
107
+ await page.goto(url);
108
+ try {
109
+ // await page.waitForSelector('.grok-preloader', { timeout: 1800000 });
110
+ await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, {
111
+ timeout: 3600000
112
+ });
113
+ } catch (error) {
114
+ throw error;
115
+ }
116
+ return {
117
+ browser,
118
+ page
119
+ };
262
120
  }
263
121
  function runWithTimeout(timeout, f) {
264
- return new Promise( /*#__PURE__*/function () {
265
- var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve, reject) {
266
- var timeoutId, resolveValue;
267
- return _regenerator["default"].wrap(function _callee$(_context) {
268
- while (1) switch (_context.prev = _context.next) {
269
- case 0:
270
- timeoutId = setTimeout(function () {
271
- return reject(new Error("Timeout exceeded: ".concat(timeout, " ms")));
272
- }, timeout);
273
- _context.prev = 1;
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);
122
+ return new Promise(async (resolve, reject) => {
123
+ const timeoutId = setTimeout(() => reject(new Error(`Timeout exceeded: ${timeout} ms`)), timeout);
124
+ try {
125
+ const resolveValue = await f();
126
+ clearTimeout(timeoutId);
127
+ resolve(resolveValue);
128
+ } catch (e) {
129
+ reject(e);
130
+ }
131
+ });
299
132
  }
300
- function _timeout() {
301
- _timeout = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(func, testTimeout) {
302
- var timeoutReason,
303
- timeout,
304
- timeoutPromise,
305
- _args5 = arguments;
306
- return _regenerator["default"].wrap(function _callee5$(_context5) {
307
- while (1) switch (_context5.prev = _context5.next) {
308
- case 0:
309
- timeoutReason = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : 'EXECUTION TIMEOUT';
310
- timeout = null;
311
- timeoutPromise = new Promise(function (_, reject) {
312
- timeout = setTimeout(function () {
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);
133
+ async function timeout(func, testTimeout, timeoutReason = 'EXECUTION TIMEOUT') {
134
+ let timeout = null;
135
+ const timeoutPromise = new Promise((_, reject) => {
136
+ timeout = setTimeout(() => {
137
+ // eslint-disable-next-line prefer-promise-reject-errors
138
+ reject(timeoutReason);
139
+ }, testTimeout);
140
+ });
141
+ try {
142
+ return await Promise.race([func(), timeoutPromise]);
143
+ } finally {
144
+ if (timeout) clearTimeout(timeout);
145
+ }
333
146
  }
334
147
  function exitWithCode(code) {
335
- console.log("Exiting with code ".concat(code));
148
+ console.log(`Exiting with code ${code}`);
336
149
  process.exit(code);
337
150
  }
338
- var recorderConfig = exports.recorderConfig = {
151
+ const recorderConfig = exports.recorderConfig = {
339
152
  followNewTab: true,
340
153
  fps: 25,
341
154
  ffmpeg_Path: null,
@@ -352,282 +165,131 @@ var recorderConfig = exports.recorderConfig = {
352
165
  }
353
166
  // aspectRatio: '16:9',
354
167
  };
355
- function loadPackages(_x10, _x11, _x12, _x13, _x14, _x15, _x16) {
356
- return _loadPackages.apply(this, arguments);
357
- }
358
- function _loadPackages() {
359
- _loadPackages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(packagesDir, packagesToLoad, host, skipPublish, skipBuild, linkPackage, release) {
360
- var packagesToRun, hostString, _iterator, _step, pacakgeName, _iterator2, _step2, dirName, packageDir, _packagesToRun$get, _spaceToCamelCase$toL, _ref6, _ref7, _packageJsonData$frie, packageJsonData, packageFriendlyName;
361
- return _regenerator["default"].wrap(function _callee6$(_context6) {
362
- while (1) switch (_context6.prev = _context6.next) {
363
- case 0:
364
- packagesToRun = new Map();
365
- hostString = host === undefined ? "" : "".concat(host);
366
- if (packagesToLoad !== "all") {
367
- _iterator = _createForOfIteratorHelper((packagesToLoad !== null && packagesToLoad !== void 0 ? packagesToLoad : "").split(' '));
368
- try {
369
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
370
- pacakgeName = _step.value;
371
- if ((pacakgeName !== null && pacakgeName !== void 0 ? pacakgeName : '').length !== 0) packagesToRun.set((0, _utils.spaceToCamelCase)(pacakgeName).toLocaleLowerCase(), false);
372
- }
373
- } catch (err) {
374
- _iterator.e(err);
375
- } finally {
376
- _iterator.f();
168
+ async function loadPackages(packagesDir, packagesToLoad, host, skipPublish, skipBuild, linkPackage, release) {
169
+ let packagesToRun = new Map();
170
+ let hostString = host === undefined ? `` : `${host}`;
171
+ if (packagesToLoad !== "all") {
172
+ for (let pacakgeName of (packagesToLoad ?? "").split(' ')) {
173
+ if ((pacakgeName ?? '').length !== 0) packagesToRun.set((0, _utils.spaceToCamelCase)(pacakgeName).toLocaleLowerCase(), false);
174
+ }
175
+ }
176
+ for (let dirName of _fs.default.readdirSync(packagesDir)) {
177
+ let packageDir = _path.default.join(packagesDir, dirName);
178
+ if (!_fs.default.lstatSync(packageDir).isFile()) {
179
+ try {
180
+ const packageJsonData = JSON.parse(_fs.default.readFileSync(_path.default.join(packageDir, 'package.json'), {
181
+ encoding: 'utf-8'
182
+ }));
183
+ const packageFriendlyName = packagesToRun.get((0, _utils.spaceToCamelCase)(packageJsonData["friendlyName"] ?? packageJsonData["name"].split("/")[1] ?? packageJsonData["name"] ?? '').toLocaleLowerCase() ?? "") ?? packagesToRun.get(dirName);
184
+ if (utils.isPackageDir(packageDir) && (packageFriendlyName !== undefined || packagesToLoad === "all")) {
185
+ try {
186
+ process.stdout.write(`Building and publishing ${dirName}...`);
187
+ if (skipPublish != true) {
188
+ await utils.runScript(`npm install`, packageDir);
189
+ if (linkPackage) await utils.runScript(`grok link`, packageDir);
190
+ if (skipBuild != true) await utils.runScript(`npm run build`, packageDir);
191
+ await utils.runScript(`grok publish ${hostString}${release ? ' --release' : ''}`, packageDir);
377
192
  }
193
+ packagesToRun.set(dirName, true);
194
+ process.stdout.write(` success!\n`);
195
+ } catch (e) {
196
+ process.stdout.write(` fail!\n`);
378
197
  }
379
- _iterator2 = _createForOfIteratorHelper(_fs["default"].readdirSync(packagesDir));
380
- _context6.prev = 4;
381
- _iterator2.s();
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();
198
+ }
199
+ } catch (e) {
200
+ if (utils.isPackageDir(packageDir) && (packagesToRun.get((0, _utils.spaceToCamelCase)(dirName).toLocaleLowerCase()) !== undefined || packagesToLoad === "all")) console.log(`Couldn't read package.json ${dirName}`);
472
201
  }
473
- }, _callee6, null, [[4, 43, 46, 49], [10, 36], [14, 31]]);
474
- }));
475
- return _loadPackages.apply(this, arguments);
476
- }
477
- function loadTestsList(_x17) {
478
- return _loadTestsList.apply(this, arguments);
202
+ }
203
+ }
204
+ console.log();
205
+ return Array.from(packagesToRun).filter(([key, value]) => value === true).map(([key]) => key);
206
+ ;
479
207
  }
480
- function _loadTestsList() {
481
- _loadTestsList = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(packages) {
482
- var core,
483
- packageTestsData,
484
- testsList,
485
- _iterator3,
486
- _step3,
487
- testPackage,
488
- _key,
489
- _iterator4,
490
- _step4,
491
- testValue,
492
- _args8 = arguments;
493
- return _regenerator["default"].wrap(function _callee8$(_context8) {
494
- while (1) switch (_context8.prev = _context8.next) {
495
- case 0:
496
- core = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : false;
497
- _context8.next = 3;
498
- return timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
499
- var params, out, browser, page, r;
500
- return _regenerator["default"].wrap(function _callee7$(_context7) {
501
- while (1) switch (_context7.prev = _context7.next) {
502
- case 0:
503
- params = Object.assign({}, defaultLaunchParameters); // params['headless'] = false;
504
- _context7.next = 3;
505
- return getBrowserPage(_puppeteer["default"], params);
506
- case 3:
507
- out = _context7.sent;
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
- }
208
+ async function loadTestsList(packages, core = false) {
209
+ var packageTestsData = await timeout(async () => {
210
+ const params = Object.assign({}, defaultLaunchParameters);
211
+ // params['headless'] = false;
212
+ const out = await getBrowserPage(_puppeteer.default, params);
213
+ const browser = out.browser;
214
+ const page = out.page;
215
+ const r = await page.evaluate((packages, coreTests) => {
216
+ return new Promise((resolve, reject) => {
217
+ const promises = [];
218
+ try {
219
+ packages.map(packageName => {
220
+ const p = window.DG.Func.find({
221
+ package: packageName,
222
+ name: 'test'
223
+ })[0]?.package;
224
+ if (p) {
225
+ try {
226
+ promises.push(p.getTests(coreTests).catch(e => {
227
+ console.error('something else went wrong with collecting package tests');
228
+ console.error(e?.message);
229
+ }).then(ts => ({
230
+ packageName: packageName,
231
+ tests: ts
232
+ })));
233
+ } catch (e) {
234
+ console.error('something went wrong while adding test collection promise');
235
+ console.error(e.message);
591
236
  }
592
237
  }
593
- } catch (err) {
594
- _iterator3.e(err);
595
- } finally {
596
- _iterator3.f();
597
- }
598
- return _context8.abrupt("return", testsList);
599
- case 8:
600
- case "end":
601
- return _context8.stop();
238
+ });
239
+ } catch (err) {
240
+ console.error("Error during evaluation in browser context:", err);
241
+ reject();
242
+ }
243
+ Promise.all(promises).then(results => {
244
+ resolve(results);
245
+ }).catch(e => {
246
+ const stack = window.DG.Logger.translateStackTrace(e.stack).then(() => {
247
+ resolve({
248
+ failReport: `${e.message}\n${stack}`
249
+ });
250
+ });
251
+ });
252
+ });
253
+ }, packages, core);
254
+ if (browser != null) {
255
+ await browser.close();
256
+ }
257
+ return r;
258
+ }, testCollectionTimeout);
259
+ let testsList = [];
260
+ for (let testPackage of packageTestsData) {
261
+ for (const key in testPackage.tests) {
262
+ if (testPackage.tests.hasOwnProperty(key)) {
263
+ for (let testValue of testPackage.tests[key].tests) {
264
+ testValue.packageName = testPackage.packageName;
265
+ testsList.push(testValue);
266
+ }
602
267
  }
603
- }, _callee8);
604
- }));
605
- return _loadTestsList.apply(this, arguments);
268
+ }
269
+ }
270
+ return testsList;
606
271
  }
607
272
  function addLogsToFile(filePath, stringToSave) {
608
- _fs["default"].appendFileSync(filePath, "".concat(stringToSave));
273
+ _fs.default.appendFileSync(filePath, `${stringToSave}`);
609
274
  }
610
- function printBrowsersResult(browserResult) {
611
- var _browserResult$failed, _browserResult$verbos3;
612
- var verbose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
275
+ function printBrowsersResult(browserResult, verbose = false) {
613
276
  if (verbose) {
614
- var _browserResult$passed, _browserResult$verbos, _browserResult$skippe, _browserResult$verbos2;
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) {
277
+ if ((browserResult.passedAmount ?? 0) > 0 && (browserResult.verbosePassed ?? []).length > 0) {
616
278
  console.log("Passed: ");
617
279
  console.log(browserResult.verbosePassed);
618
280
  }
619
- if (((_browserResult$skippe = browserResult.skippedAmount) !== null && _browserResult$skippe !== void 0 ? _browserResult$skippe : 0) > 0 && ((_browserResult$verbos2 = browserResult.verboseSkipped) !== null && _browserResult$verbos2 !== void 0 ? _browserResult$verbos2 : []).length > 0) {
281
+ if ((browserResult.skippedAmount ?? 0) > 0 && (browserResult.verboseSkipped ?? []).length > 0) {
620
282
  console.log("Skipped: ");
621
283
  console.log(browserResult.verboseSkipped);
622
284
  }
623
285
  }
624
- if (((_browserResult$failed = browserResult.failedAmount) !== null && _browserResult$failed !== void 0 ? _browserResult$failed : 0) > 0 && ((_browserResult$verbos3 = browserResult.verboseFailed) !== null && _browserResult$verbos3 !== void 0 ? _browserResult$verbos3 : []).length > 0) {
286
+ if ((browserResult.failedAmount ?? 0) > 0 && (browserResult.verboseFailed ?? []).length > 0) {
625
287
  console.log("Failed: ");
626
288
  console.log(browserResult.verboseFailed);
627
289
  }
628
- console.log("Passed amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.passedAmount));
629
- console.log("Skipped amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.skippedAmount));
630
- console.log("Failed amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.failedAmount));
290
+ console.log("Passed amount: " + browserResult?.passedAmount);
291
+ console.log("Skipped amount: " + browserResult?.skippedAmount);
292
+ console.log("Failed amount: " + browserResult?.failedAmount);
631
293
  if (browserResult.failed) {
632
294
  if (browserResult.verboseFailed === 'Package not found') color.fail('Tests not found');else color.fail('Tests failed.');
633
295
  } else {
@@ -635,228 +297,239 @@ function printBrowsersResult(browserResult) {
635
297
  }
636
298
  }
637
299
  function saveCsvResults(stringToSave, csvReportDir) {
638
- var modifiedStrings = stringToSave.map(function (str, index) {
300
+ const modifiedStrings = stringToSave.map((str, index) => {
639
301
  if (index === 0) return str;
640
302
  return str.split('\n').slice(1).join('\n');
641
303
  });
642
- _fs["default"].writeFileSync(csvReportDir, modifiedStrings.join('\n'), 'utf8');
304
+ _fs.default.writeFileSync(csvReportDir, modifiedStrings.join('\n'), 'utf8');
643
305
  color.info('Saved `test-report.csv`\n');
644
306
  }
645
- function runBrowser(_x18, _x19, _x20) {
646
- return _runBrowser.apply(this, arguments);
647
- }
648
- function _runBrowser() {
649
- _runBrowser = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(testExecutionData, browserOptions, browsersId) {
650
- var testInvocationTimeout,
651
- _args10 = arguments;
652
- return _regenerator["default"].wrap(function _callee10$(_context10) {
653
- while (1) switch (_context10.prev = _context10.next) {
654
- case 0:
655
- testInvocationTimeout = _args10.length > 3 && _args10[3] !== undefined ? _args10[3] : 3600000;
656
- _context10.next = 3;
657
- return timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
658
- var params, out, browser, page, recorder, currentBrowserNum, logsDir, recordDir, testingResults;
659
- return _regenerator["default"].wrap(function _callee9$(_context9) {
660
- while (1) switch (_context9.prev = _context9.next) {
661
- case 0:
662
- params = Object.assign({
663
- devtools: browserOptions.debug
664
- }, defaultLaunchParameters);
665
- if (browserOptions.gui) params['headless'] = false;
666
- _context9.next = 4;
667
- return getBrowserPage(_puppeteer["default"], params);
668
- case 4:
669
- out = _context9.sent;
670
- browser = out.browser;
671
- page = out.page;
672
- recorder = new _puppeteerScreenRecorder.PuppeteerScreenRecorder(page, recorderConfig);
673
- currentBrowserNum = browsersId;
674
- logsDir = "./test-console-output-".concat(currentBrowserNum, ".log");
675
- recordDir = "./test-record-".concat(currentBrowserNum, ".mp4");
676
- if (!browserOptions.record) {
677
- _context9.next = 20;
678
- break;
679
- }
680
- _context9.next = 14;
681
- return recorder.start(recordDir);
682
- case 14:
683
- _context9.next = 16;
684
- return page.exposeFunction("addLogsToFile", addLogsToFile);
685
- case 16:
686
- _fs["default"].writeFileSync(logsDir, "");
687
- page.on('console', function (msg) {
688
- addLogsToFile(logsDir, "CONSOLE LOG ENTRY: ".concat(msg.text(), "\n"));
689
- });
690
- page.on('pageerror', function (error) {
691
- addLogsToFile(logsDir, "CONSOLE LOG ERROR: ".concat(error.message, "\n"));
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();
307
+ async function helloTests(testsParams, stopOnFail) {
308
+ let failed = false;
309
+ let verbosePassed = "";
310
+ let verboseSkipped = "";
311
+ let verboseFailed = "";
312
+ let error = "";
313
+ let countPassed = 0;
314
+ let countSkipped = 0;
315
+ let countFailed = 0;
316
+ let resultDF = undefined;
317
+ let lastTest = null;
318
+ let res = '';
319
+ try {
320
+ for (let testParam of testsParams) {
321
+ lastTest = testParam;
322
+ let df = await window.grok.functions.call(testParam.package + ':test', testParam.params);
323
+ let flakingCol = window.DG.Column.fromType(window.DG.COLUMN_TYPE.BOOL, 'flaking', df.rowCount);
324
+ df.columns.add(flakingCol);
325
+ let packageNameCol = window.DG.Column.fromList(window.DG.COLUMN_TYPE.STRING, 'package', Array(df.rowCount).fill(testParam.package));
326
+ df.columns.add(packageNameCol);
327
+ if (df.rowCount === 0) {
328
+ verboseFailed += `Test result : Invocation Fail : ${testParam.params.category}: ${testParam.params.test}\n`;
329
+ countFailed += 1;
330
+ failed = true;
331
+ continue;
750
332
  }
751
- }, _callee10);
752
- }));
753
- return _runBrowser.apply(this, arguments);
333
+ let row = df.rows.get(0);
334
+ if (df.rowCount > 1) {
335
+ let unhandledErrorRow = df.rows.get(1);
336
+ if (!unhandledErrorRow.get("success")) {
337
+ unhandledErrorRow["category"] = row.get("category");
338
+ unhandledErrorRow["name"] = row.get("name");
339
+ row = unhandledErrorRow;
340
+ }
341
+ }
342
+ const category = row.get("category");
343
+ const testName = row.get("name");
344
+ const time = row.get("ms");
345
+ const result = row.get("result");
346
+ const success = row.get("success");
347
+ const skipped = row.get("skipped");
348
+ row["flaking"] = success && window.DG.Test.isReproducing;
349
+ df.changeColumnType('result', window.DG.COLUMN_TYPE.STRING);
350
+ df.changeColumnType('logs', window.DG.COLUMN_TYPE.STRING);
351
+ df.changeColumnType('memoryDelta', window.DG.COLUMN_TYPE.BIG_INT);
352
+ if (resultDF === undefined) resultDF = df;else resultDF = resultDF.append(df);
353
+ if (row["skipped"]) {
354
+ verboseSkipped += `Test result : Skipped : ${time} : ${category}: ${testName} : ${result}\n`;
355
+ countSkipped += 1;
356
+ } else if (row["success"]) {
357
+ verbosePassed += `Test result : Success : ${time} : ${category}: ${testName} : ${result}\n`;
358
+ countPassed += 1;
359
+ } else {
360
+ verboseFailed += `Test result : Failed : ${time} : ${category}: ${testName} : ${result}\n`;
361
+ countFailed += 1;
362
+ failed = true;
363
+ }
364
+ if (success !== true && skipped !== true && stopOnFail) break;
365
+ }
366
+ if (window.DG.Test.isInDebug) {
367
+ console.log('on browser closing debug point');
368
+ debugger;
369
+ }
370
+ res = '';
371
+ if (resultDF) {
372
+ const bs = window.DG.BitSet.create(resultDF.rowCount);
373
+ bs.setAll(true);
374
+ for (let i = 0; i < resultDF.rowCount; i++) {
375
+ if (resultDF.rows.get(i).get('category') === 'Unhandled exceptions') {
376
+ bs.set(i, false);
377
+ }
378
+ }
379
+ resultDF = resultDF.clone(bs);
380
+ res = resultDF.toCsv();
381
+ }
382
+ } catch (e) {
383
+ failed = true;
384
+ error = lastTest ? `category: ${lastTest.params.category}, name: ${lastTest.params.test}, error: ${e}, ${await window.DG.Logger.translateStackTrace(e.stack)}` : `test: null, error: ${e}, ${await window.DG.Logger.translateStackTrace(e.stack)}`;
385
+ }
386
+ return {
387
+ failed: failed,
388
+ verbosePassed: verbosePassed,
389
+ verboseSkipped: verboseSkipped,
390
+ verboseFailed: verboseFailed,
391
+ passedAmount: countPassed,
392
+ skippedAmount: countSkipped,
393
+ failedAmount: countFailed,
394
+ error: error,
395
+ csv: res
396
+ // df: resultDF?.toJson()
397
+ };
754
398
  }
755
- function mergeBrowsersResults(_x21) {
756
- return _mergeBrowsersResults.apply(this, arguments);
399
+ async function runBrowser(testExecutionData, browserOptions, browsersId, testInvocationTimeout = 3600000) {
400
+ let testsToRun = {
401
+ func: helloTests.toString(),
402
+ tests: testExecutionData
403
+ };
404
+ return await timeout(async () => {
405
+ const params = Object.assign({
406
+ devtools: browserOptions.debug
407
+ }, defaultLaunchParameters);
408
+ if (browserOptions.gui) params['headless'] = false;
409
+ const out = await getBrowserPage(_puppeteer.default, params);
410
+ const browser = out.browser;
411
+ const page = out.page;
412
+ const recorder = new _puppeteerScreenRecorder.PuppeteerScreenRecorder(page, recorderConfig);
413
+ const currentBrowserNum = browsersId;
414
+ const logsDir = `./test-console-output-${currentBrowserNum}.log`;
415
+ const recordDir = `./test-record-${currentBrowserNum}.mp4`;
416
+ if (browserOptions.record) {
417
+ await recorder.start(recordDir);
418
+ await page.exposeFunction("addLogsToFile", addLogsToFile);
419
+ _fs.default.writeFileSync(logsDir, ``);
420
+ page.on('console', msg => {
421
+ addLogsToFile(logsDir, `CONSOLE LOG ENTRY: ${msg.text()}\n`);
422
+ });
423
+ page.on('pageerror', error => {
424
+ addLogsToFile(logsDir, `CONSOLE LOG ERROR: ${error.message}\n`);
425
+ });
426
+ page.on('response', response => {
427
+ addLogsToFile(logsDir, `CONSOLE LOG REQUEST: ${response.status()}, ${response.url()}\n`);
428
+ });
429
+ }
430
+ let testingResults = await page.evaluate((testData, options) => {
431
+ if (options.benchmark) window.DG.Test.isInBenchmark = true;
432
+ if (options.reproduce) window.DG.Test.isReproducing = true;
433
+ if (options.ciCd) window.DG.Test.isCiCd = true;
434
+ if (options.debug) window.DG.Test.isInDebug = true;
435
+ return new Promise((resolve, reject) => {
436
+ window.helloTests = eval('(' + testData.func + ')');
437
+ window.helloTests(testData.tests, options.stopOnTimeout).then(results => {
438
+ resolve(results);
439
+ }).catch(e => {
440
+ resolve({
441
+ failed: true,
442
+ verbosePassed: "",
443
+ verboseSkipped: "",
444
+ verboseFailed: "",
445
+ error: JSON.stringify(e),
446
+ passedAmount: 0,
447
+ skippedAmount: 0,
448
+ failedAmount: 1,
449
+ csv: "",
450
+ df: undefined
451
+ });
452
+ });
453
+
454
+ // (<any>window).DG.Utils.executeTests(testData.tests, options.stopOnTimeout)
455
+ // .then((results: any) => {
456
+ // resolve(results);
457
+ // })
458
+ // .catch((e: any) => {
459
+ // resolve({
460
+ // failed: true,
461
+ // verbosePassed: "",
462
+ // verboseSkipped: "",
463
+ // verboseFailed: "Tests execution failed",
464
+ // passedAmount: 0,
465
+ // skippedAmount: 0,
466
+ // failedAmount: 1,
467
+ // csv: "",
468
+ // df: undefined
469
+ // })
470
+ // });
471
+ });
472
+ }, testsToRun, browserOptions);
473
+ if (browserOptions.record) {
474
+ await recorder.stop();
475
+ }
476
+ if (browser != null) {
477
+ await browser.close();
478
+ }
479
+ return testingResults;
480
+ }, testInvocationTimeout);
757
481
  }
758
- function _mergeBrowsersResults() {
759
- _mergeBrowsersResults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(browsersResults) {
760
- var mergedResult, _iterator5, _step5, browsersResult, resultToMerdge1, resultToMerdge2, header;
761
- return _regenerator["default"].wrap(function _callee11$(_context11) {
762
- while (1) switch (_context11.prev = _context11.next) {
763
- case 0:
764
- mergedResult = {
765
- failed: browsersResults[0].failed,
766
- verbosePassed: browsersResults[0].verbosePassed,
767
- verboseSkipped: browsersResults[0].verboseSkipped,
768
- verboseFailed: browsersResults[0].verboseFailed,
769
- passedAmount: browsersResults[0].passedAmount,
770
- skippedAmount: browsersResults[0].skippedAmount,
771
- failedAmount: browsersResults[0].failedAmount,
772
- csv: browsersResults[0].csv
773
- };
774
- _iterator5 = _createForOfIteratorHelper(browsersResults);
775
- _context11.prev = 2;
776
- _iterator5.s();
777
- case 4:
778
- if ((_step5 = _iterator5.n()).done) {
779
- _context11.next = 21;
780
- break;
781
- }
782
- browsersResult = _step5.value;
783
- if (!(mergedResult.csv === browsersResult.csv)) {
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);
482
+ async function mergeBrowsersResults(browsersResults) {
483
+ let mergedResult = {
484
+ failed: browsersResults[0].failed,
485
+ verbosePassed: browsersResults[0].verbosePassed,
486
+ verboseSkipped: browsersResults[0].verboseSkipped,
487
+ verboseFailed: browsersResults[0].verboseFailed,
488
+ passedAmount: browsersResults[0].passedAmount,
489
+ skippedAmount: browsersResults[0].skippedAmount,
490
+ failedAmount: browsersResults[0].failedAmount,
491
+ csv: browsersResults[0].csv,
492
+ error: ''
493
+ };
494
+ for (let browsersResult of browsersResults) {
495
+ if (mergedResult.csv === browsersResult.csv) continue;
496
+ mergedResult.failed = mergedResult.failed || browsersResult.failed;
497
+ mergedResult.verbosePassed = `${mergedResult.verbosePassed.trim()}\n${browsersResult.verbosePassed.trim()}`;
498
+ mergedResult.verboseFailed = `${mergedResult.verboseFailed.trim()}\n${browsersResult.verboseFailed.trim()}`;
499
+ mergedResult.verboseSkipped = `${mergedResult.verboseSkipped.trim()}\n${browsersResult.verboseSkipped.trim()}`;
500
+ mergedResult.passedAmount += browsersResult.passedAmount;
501
+ mergedResult.failedAmount += browsersResult.failedAmount;
502
+ mergedResult.skippedAmount += browsersResult.skippedAmount;
503
+ const resultToMerdge1 = mergedResult.csv.trim().split('\n');
504
+ const resultToMerdge2 = browsersResult.csv.trim().split('\n');
505
+ const header = resultToMerdge1[0];
506
+ mergedResult.csv = [header, ...resultToMerdge1.slice(1), ...resultToMerdge2.slice(1)].join('\n');
507
+ }
508
+ return mergedResult;
823
509
  }
824
- var TestContext = exports.TestContext = /*#__PURE__*/(0, _createClass2["default"])(function TestContext(catchUnhandled, report) {
825
- (0, _classCallCheck2["default"])(this, TestContext);
826
- (0, _defineProperty2["default"])(this, "catchUnhandled", true);
827
- (0, _defineProperty2["default"])(this, "report", false);
828
- if (catchUnhandled !== undefined) this.catchUnhandled = catchUnhandled;
829
- if (report !== undefined) this.report = report;
830
- });
831
- function addColumnToCsv(_x22, _x23, _x24) {
832
- return _addColumnToCsv.apply(this, arguments);
510
+ class TestContext {
511
+ catchUnhandled = true;
512
+ report = false;
513
+ constructor(catchUnhandled, report) {
514
+ if (catchUnhandled !== undefined) this.catchUnhandled = catchUnhandled;
515
+ if (report !== undefined) this.report = report;
516
+ }
833
517
  }
834
- function _addColumnToCsv() {
835
- _addColumnToCsv = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(csv, columnName, defaultValue) {
836
- var result;
837
- return _regenerator["default"].wrap(function _callee12$(_context12) {
838
- while (1) switch (_context12.prev = _context12.next) {
839
- case 0:
840
- result = csv;
841
- _papaparse["default"].parse(csv, {
842
- header: true,
843
- skipEmptyLines: true,
844
- complete: function complete(results) {
845
- var dataWithDefaultColumn = results.data.map(function (row) {
846
- row[columnName] = defaultValue;
847
- return row;
848
- });
849
- result = _papaparse["default"].unparse(dataWithDefaultColumn, {
850
- header: true
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);
518
+ exports.TestContext = TestContext;
519
+ async function addColumnToCsv(csv, columnName, defaultValue) {
520
+ let result = csv;
521
+ _papaparse.default.parse(csv, {
522
+ header: true,
523
+ skipEmptyLines: true,
524
+ complete: function (results) {
525
+ const dataWithDefaultColumn = results.data.map(row => {
526
+ row[columnName] = defaultValue;
527
+ return row;
528
+ });
529
+ result = _papaparse.default.unparse(dataWithDefaultColumn, {
530
+ header: true
531
+ });
532
+ }
533
+ });
534
+ return result;
862
535
  }