datagrok-tools 4.13.31 → 4.13.34

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.
@@ -5,17 +5,25 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.defaultLaunchParameters = exports.TestContext = void 0;
8
+ exports.TestContext = void 0;
9
+ exports.addLogsToFile = addLogsToFile;
10
+ exports.defaultLaunchParameters = void 0;
9
11
  exports.exitWithCode = exitWithCode;
10
12
  exports.getBrowserPage = getBrowserPage;
11
13
  exports.getDevKey = getDevKey;
12
14
  exports.getToken = getToken;
13
15
  exports.getWebUrl = getWebUrl;
14
16
  exports.loadPackages = loadPackages;
17
+ exports.loadTestsList = loadTestsList;
18
+ exports.mergeWorkersResults = mergeWorkersResults;
19
+ exports.printWorkersResult = printWorkersResult;
15
20
  exports.recorderConfig = void 0;
16
21
  exports.runWithTimeout = runWithTimeout;
22
+ exports.runWorker = runWorker;
23
+ exports.saveCsvResults = saveCsvResults;
17
24
  exports.timeout = timeout;
18
25
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
26
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
27
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
20
28
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
29
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -27,6 +35,9 @@ var _path = _interopRequireDefault(require("path"));
27
35
  var _jsYaml = _interopRequireDefault(require("js-yaml"));
28
36
  var _utils = _interopRequireWildcard(require("../utils/utils"));
29
37
  var utils = _utils;
38
+ var _puppeteerScreenRecorder = require("puppeteer-screen-recorder");
39
+ var _puppeteer = _interopRequireDefault(require("puppeteer"));
40
+ var color = _interopRequireWildcard(require("../utils/color-utils"));
30
41
  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); }
31
42
  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; }
32
43
  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; } } }; }
@@ -35,6 +46,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
35
46
  var fetch = require('node-fetch');
36
47
  var grokDir = _path["default"].join(_os["default"].homedir(), '.grok');
37
48
  var confPath = _path["default"].join(grokDir, 'config.yaml');
49
+ var testCollectionTimeout = 100000;
38
50
  var defaultLaunchParameters = exports.defaultLaunchParameters = {
39
51
  args: ['--disable-dev-shm-usage', '--disable-features=site-per-process', '--window-size=1920,1080'],
40
52
  ignoreHTTPSErrors: true,
@@ -320,7 +332,7 @@ function loadPackages(_x10, _x11, _x12, _x13, _x14, _x15, _x16) {
320
332
  }
321
333
  function _loadPackages() {
322
334
  _loadPackages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(packagesDir, packagesToLoad, host, skipPublish, skipBuild, linkPackage, release) {
323
- var packagesToRun, hostString, _iterator, _step, pacakgeName, _iterator2, _step2, dirName, packageDir, _spaceToCamelCase$toL, _packageJsonData$frie, packageJsonData, packageFriendlyName;
335
+ var packagesToRun, hostString, _iterator, _step, pacakgeName, _iterator2, _step2, dirName, packageDir, _spaceToCamelCase$toL, _ref6, _ref7, _packageJsonData$frie, packageJsonData, packageFriendlyName;
324
336
  return _regenerator["default"].wrap(function _callee6$(_context6) {
325
337
  while (1) switch (_context6.prev = _context6.next) {
326
338
  case 0:
@@ -331,7 +343,7 @@ function _loadPackages() {
331
343
  try {
332
344
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
333
345
  pacakgeName = _step.value;
334
- packagesToRun.set((0, _utils.spaceToCamelCase)(pacakgeName).toLocaleLowerCase(), false);
346
+ if ((pacakgeName !== null && pacakgeName !== void 0 ? pacakgeName : '').length !== 0) packagesToRun.set((0, _utils.spaceToCamelCase)(pacakgeName).toLocaleLowerCase(), false);
335
347
  }
336
348
  } catch (err) {
337
349
  _iterator.e(err);
@@ -357,7 +369,7 @@ function _loadPackages() {
357
369
  packageJsonData = JSON.parse(_fs["default"].readFileSync(_path["default"].join(packageDir, 'package.json'), {
358
370
  encoding: 'utf-8'
359
371
  }));
360
- packageFriendlyName = packagesToRun.get((_spaceToCamelCase$toL = (0, _utils.spaceToCamelCase)((_packageJsonData$frie = packageJsonData["friendlyName"]) !== null && _packageJsonData$frie !== void 0 ? _packageJsonData$frie : packageJsonData["name"].split("/")[1]).toLocaleLowerCase()) !== null && _spaceToCamelCase$toL !== void 0 ? _spaceToCamelCase$toL : "");
372
+ packageFriendlyName = 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 : "");
361
373
  if (!(utils.isPackageDir(packageDir) && (packageFriendlyName !== undefined || packagesToLoad === "all"))) {
362
374
  _context6.next = 33;
363
375
  break;
@@ -435,4 +447,345 @@ function _loadPackages() {
435
447
  }, _callee6, null, [[4, 42, 45, 48], [10, 35], [14, 30]]);
436
448
  }));
437
449
  return _loadPackages.apply(this, arguments);
450
+ }
451
+ function loadTestsList(_x17) {
452
+ return _loadTestsList.apply(this, arguments);
453
+ }
454
+ function _loadTestsList() {
455
+ _loadTestsList = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(packages) {
456
+ var core,
457
+ packageTestsData,
458
+ testsList,
459
+ _iterator3,
460
+ _step3,
461
+ testPackage,
462
+ key,
463
+ _iterator4,
464
+ _step4,
465
+ testValue,
466
+ _args8 = arguments;
467
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
468
+ while (1) switch (_context8.prev = _context8.next) {
469
+ case 0:
470
+ core = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : false;
471
+ _context8.next = 3;
472
+ return timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
473
+ var params, out, browser, page, r;
474
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
475
+ while (1) switch (_context7.prev = _context7.next) {
476
+ case 0:
477
+ params = Object.assign({}, defaultLaunchParameters); // params['headless'] = false;
478
+ _context7.next = 3;
479
+ return getBrowserPage(_puppeteer["default"], params);
480
+ case 3:
481
+ out = _context7.sent;
482
+ browser = out.browser;
483
+ page = out.page;
484
+ _context7.next = 8;
485
+ return page.evaluate(function (packages, coreTests) {
486
+ return new Promise(function (resolve, reject) {
487
+ var promises = [];
488
+ try {
489
+ packages.map(function (packageName) {
490
+ var _DG$Func$find$;
491
+ var p = (_DG$Func$find$ = window.DG.Func.find({
492
+ "package": packageName,
493
+ name: 'test'
494
+ })[0]) === null || _DG$Func$find$ === void 0 ? void 0 : _DG$Func$find$["package"];
495
+ if (p) {
496
+ try {
497
+ promises.push(p.getTests(coreTests)["catch"](function (e) {
498
+ console.error('something else went wrong with collecting package tests');
499
+ console.error(e === null || e === void 0 ? void 0 : e.message);
500
+ }).then(function (ts) {
501
+ return {
502
+ packageName: packageName,
503
+ tests: ts
504
+ };
505
+ }));
506
+ } catch (e) {
507
+ console.error('something went wrong while adding test collection promise');
508
+ console.error(e.message);
509
+ }
510
+ }
511
+ });
512
+ } catch (err) {
513
+ console.error("Error during evaluation in browser context:", err);
514
+ reject();
515
+ }
516
+ Promise.all(promises).then(function (results) {
517
+ resolve(results);
518
+ })["catch"](function (e) {
519
+ var stack = window.DG.Logger.translateStackTrace(e.stack).then(function () {
520
+ resolve({
521
+ failReport: "".concat(e.message, "\n").concat(stack)
522
+ });
523
+ });
524
+ });
525
+ });
526
+ }, packages, core);
527
+ case 8:
528
+ r = _context7.sent;
529
+ if (!(browser != null)) {
530
+ _context7.next = 12;
531
+ break;
532
+ }
533
+ _context7.next = 12;
534
+ return browser.close();
535
+ case 12:
536
+ return _context7.abrupt("return", r);
537
+ case 13:
538
+ case "end":
539
+ return _context7.stop();
540
+ }
541
+ }, _callee7);
542
+ })), testCollectionTimeout);
543
+ case 3:
544
+ packageTestsData = _context8.sent;
545
+ testsList = [];
546
+ _iterator3 = _createForOfIteratorHelper(packageTestsData);
547
+ try {
548
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
549
+ testPackage = _step3.value;
550
+ for (key in testPackage.tests) {
551
+ if (testPackage.tests.hasOwnProperty(key)) {
552
+ _iterator4 = _createForOfIteratorHelper(testPackage.tests[key].tests);
553
+ try {
554
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
555
+ testValue = _step4.value;
556
+ testValue.packageName = testPackage.packageName;
557
+ testsList.push(testValue);
558
+ }
559
+ } catch (err) {
560
+ _iterator4.e(err);
561
+ } finally {
562
+ _iterator4.f();
563
+ }
564
+ }
565
+ }
566
+ }
567
+ } catch (err) {
568
+ _iterator3.e(err);
569
+ } finally {
570
+ _iterator3.f();
571
+ }
572
+ return _context8.abrupt("return", testsList);
573
+ case 8:
574
+ case "end":
575
+ return _context8.stop();
576
+ }
577
+ }, _callee8);
578
+ }));
579
+ return _loadTestsList.apply(this, arguments);
580
+ }
581
+ function addLogsToFile(filePath, stringToSave) {
582
+ _fs["default"].appendFileSync(filePath, "".concat(stringToSave));
583
+ }
584
+ function printWorkersResult(workerResult) {
585
+ var _workerResult$failedA, _workerResult$verbose3;
586
+ var verbose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
587
+ if (verbose) {
588
+ var _workerResult$passedA, _workerResult$verbose, _workerResult$skipped, _workerResult$verbose2;
589
+ if (((_workerResult$passedA = workerResult.passedAmount) !== null && _workerResult$passedA !== void 0 ? _workerResult$passedA : 0) > 0 && ((_workerResult$verbose = workerResult.verbosePassed) !== null && _workerResult$verbose !== void 0 ? _workerResult$verbose : []).length > 0) {
590
+ console.log("Passed: ");
591
+ console.log(workerResult.verbosePassed);
592
+ }
593
+ if (((_workerResult$skipped = workerResult.skippedAmount) !== null && _workerResult$skipped !== void 0 ? _workerResult$skipped : 0) > 0 && ((_workerResult$verbose2 = workerResult.verboseSkipped) !== null && _workerResult$verbose2 !== void 0 ? _workerResult$verbose2 : []).length > 0) {
594
+ console.log("Skipped: ");
595
+ console.log(workerResult.verboseSkipped);
596
+ }
597
+ }
598
+ if (((_workerResult$failedA = workerResult.failedAmount) !== null && _workerResult$failedA !== void 0 ? _workerResult$failedA : 0) > 0 && ((_workerResult$verbose3 = workerResult.verboseFailed) !== null && _workerResult$verbose3 !== void 0 ? _workerResult$verbose3 : []).length > 0) {
599
+ console.log("Failed: ");
600
+ console.log(workerResult.verboseFailed);
601
+ }
602
+ console.log("Passed amount: " + (workerResult === null || workerResult === void 0 ? void 0 : workerResult.passedAmount));
603
+ console.log("Skipped amount: " + (workerResult === null || workerResult === void 0 ? void 0 : workerResult.skippedAmount));
604
+ console.log("Failed amount: " + (workerResult === null || workerResult === void 0 ? void 0 : workerResult.failedAmount));
605
+ if (workerResult.failed) {
606
+ color.fail('Tests failed.');
607
+ } else {
608
+ color.success('Tests passed.');
609
+ }
610
+ }
611
+ function saveCsvResults(stringToSave, csvReportDir) {
612
+ var modifiedStrings = stringToSave.map(function (str, index) {
613
+ if (index === 0) return str;
614
+ return str.split('\n').slice(1).join('\n');
615
+ });
616
+ _fs["default"].writeFileSync(csvReportDir, modifiedStrings.join('\n'), 'utf8');
617
+ color.info('Saved `test-report.csv`\n');
618
+ }
619
+ function runWorker(_x18, _x19, _x20) {
620
+ return _runWorker.apply(this, arguments);
621
+ }
622
+ function _runWorker() {
623
+ _runWorker = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(testExecutionData, workerOptions, workersId) {
624
+ var testInvocationTimeout,
625
+ _args10 = arguments;
626
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
627
+ while (1) switch (_context10.prev = _context10.next) {
628
+ case 0:
629
+ testInvocationTimeout = _args10.length > 3 && _args10[3] !== undefined ? _args10[3] : 3600000;
630
+ _context10.next = 3;
631
+ return timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
632
+ var params, out, browser, page, recorder, currentWorkerNum, logsDir, recordDir, testingResults;
633
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
634
+ while (1) switch (_context9.prev = _context9.next) {
635
+ case 0:
636
+ params = Object.assign({}, defaultLaunchParameters);
637
+ if (workerOptions.gui) params['headless'] = false;
638
+ _context9.next = 4;
639
+ return getBrowserPage(_puppeteer["default"], params);
640
+ case 4:
641
+ out = _context9.sent;
642
+ browser = out.browser;
643
+ page = out.page;
644
+ recorder = new _puppeteerScreenRecorder.PuppeteerScreenRecorder(page, recorderConfig);
645
+ currentWorkerNum = workersId;
646
+ logsDir = "./test-console-output-".concat(currentWorkerNum, ".log");
647
+ recordDir = "./test-record-".concat(currentWorkerNum, ".mp4");
648
+ if (!workerOptions.record) {
649
+ _context9.next = 20;
650
+ break;
651
+ }
652
+ _context9.next = 14;
653
+ return recorder.start(recordDir);
654
+ case 14:
655
+ _context9.next = 16;
656
+ return page.exposeFunction("addLogsToFile", addLogsToFile);
657
+ case 16:
658
+ _fs["default"].writeFileSync(logsDir, "");
659
+ page.on('console', function (msg) {
660
+ addLogsToFile(logsDir, "CONSOLE LOG ENTRY: ".concat(msg.text(), "\n"));
661
+ });
662
+ page.on('pageerror', function (error) {
663
+ addLogsToFile(logsDir, "CONSOLE LOG ERROR: ".concat(error.message, "\n"));
664
+ });
665
+ page.on('response', function (response) {
666
+ addLogsToFile(logsDir, "CONSOLE LOG REQUEST: ".concat(response.status(), ", ").concat(response.url(), "\n"));
667
+ });
668
+ case 20:
669
+ _context9.next = 22;
670
+ return page.evaluate(function (testData, options) {
671
+ if (options.benchmark) window.DG.Test.isInBenchmark = true;
672
+ return new Promise(function (resolve, reject) {
673
+ window.DG.Utils.executeTests(testData, options.stopOnTimeout).then(function (results) {
674
+ resolve(results);
675
+ })["catch"](function (e) {
676
+ resolve({
677
+ failed: true,
678
+ verbosePassed: "",
679
+ verboseSkipped: "",
680
+ verboseFailed: "Tests execution failed",
681
+ passedAmount: 0,
682
+ skippedAmount: 0,
683
+ failedAmount: 1,
684
+ csv: "",
685
+ df: undefined
686
+ });
687
+ });
688
+ });
689
+ }, testExecutionData, workerOptions);
690
+ case 22:
691
+ testingResults = _context9.sent;
692
+ if (!workerOptions.record) {
693
+ _context9.next = 26;
694
+ break;
695
+ }
696
+ _context9.next = 26;
697
+ return recorder.stop();
698
+ case 26:
699
+ if (!(browser != null)) {
700
+ _context9.next = 29;
701
+ break;
702
+ }
703
+ _context9.next = 29;
704
+ return browser.close();
705
+ case 29:
706
+ return _context9.abrupt("return", testingResults);
707
+ case 30:
708
+ case "end":
709
+ return _context9.stop();
710
+ }
711
+ }, _callee9);
712
+ })), testInvocationTimeout);
713
+ case 3:
714
+ return _context10.abrupt("return", _context10.sent);
715
+ case 4:
716
+ case "end":
717
+ return _context10.stop();
718
+ }
719
+ }, _callee10);
720
+ }));
721
+ return _runWorker.apply(this, arguments);
722
+ }
723
+ function mergeWorkersResults(_x21) {
724
+ return _mergeWorkersResults.apply(this, arguments);
725
+ }
726
+ function _mergeWorkersResults() {
727
+ _mergeWorkersResults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(workersResults) {
728
+ var mergedResult, _iterator5, _step5, workersResult, resultToMerdge1, resultToMerdge2, header;
729
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
730
+ while (1) switch (_context11.prev = _context11.next) {
731
+ case 0:
732
+ mergedResult = {
733
+ failed: workersResults[0].failed,
734
+ verbosePassed: workersResults[0].verbosePassed,
735
+ verboseSkipped: workersResults[0].verboseSkipped,
736
+ verboseFailed: workersResults[0].verboseFailed,
737
+ passedAmount: workersResults[0].passedAmount,
738
+ skippedAmount: workersResults[0].skippedAmount,
739
+ failedAmount: workersResults[0].failedAmount,
740
+ csv: workersResults[0].csv
741
+ };
742
+ _iterator5 = _createForOfIteratorHelper(workersResults);
743
+ _context11.prev = 2;
744
+ _iterator5.s();
745
+ case 4:
746
+ if ((_step5 = _iterator5.n()).done) {
747
+ _context11.next = 21;
748
+ break;
749
+ }
750
+ workersResult = _step5.value;
751
+ if (!(mergedResult.csv === workersResult.csv)) {
752
+ _context11.next = 8;
753
+ break;
754
+ }
755
+ return _context11.abrupt("continue", 19);
756
+ case 8:
757
+ mergedResult.failed = mergedResult.failed && workersResult.failed;
758
+ mergedResult.verbosePassed = "".concat(mergedResult.verbosePassed.trim(), "\n").concat(workersResult.verbosePassed.trim());
759
+ mergedResult.verboseFailed = "".concat(mergedResult.verboseFailed.trim(), "\n").concat(workersResult.verboseFailed.trim());
760
+ mergedResult.verboseSkipped = "".concat(mergedResult.verboseSkipped.trim(), "\n").concat(workersResult.verboseSkipped.trim());
761
+ mergedResult.passedAmount += workersResult.passedAmount;
762
+ mergedResult.failedAmount += workersResult.failedAmount;
763
+ mergedResult.skippedAmount += workersResult.skippedAmount;
764
+ resultToMerdge1 = mergedResult.csv.trim().split('\n');
765
+ resultToMerdge2 = workersResult.csv.trim().split('\n');
766
+ header = resultToMerdge1[0];
767
+ mergedResult.csv = [header].concat((0, _toConsumableArray2["default"])(resultToMerdge1.slice(1)), (0, _toConsumableArray2["default"])(resultToMerdge2.slice(1))).join('\n');
768
+ case 19:
769
+ _context11.next = 4;
770
+ break;
771
+ case 21:
772
+ _context11.next = 26;
773
+ break;
774
+ case 23:
775
+ _context11.prev = 23;
776
+ _context11.t0 = _context11["catch"](2);
777
+ _iterator5.e(_context11.t0);
778
+ case 26:
779
+ _context11.prev = 26;
780
+ _iterator5.f();
781
+ return _context11.finish(26);
782
+ case 29:
783
+ return _context11.abrupt("return", mergedResult);
784
+ case 30:
785
+ case "end":
786
+ return _context11.stop();
787
+ }
788
+ }, _callee11, null, [[2, 23, 26, 29]]);
789
+ }));
790
+ return _mergeWorkersResults.apply(this, arguments);
438
791
  }
@@ -0,0 +1,3 @@
1
+ # #{PACKAGE_NAME} changelog
2
+
3
+ ## 0.0.1 (#{CURRENT_DATE})