datagrok-tools 4.13.50 → 4.13.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/bin/commands/help.js +1 -1
- package/bin/commands/test-all.js +32 -32
- package/bin/commands/test.js +8 -8
- package/bin/utils/order-functions.js +17 -16
- package/bin/utils/test-utils.js +54 -54
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Datagrok-tools changelog
|
|
2
2
|
|
|
3
|
+
## 4.13.52 (2024-12-30)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* Refactored workers to browsers
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 4.13.51 (2024-12-30)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* Minor fix for testToWorker order in testsAll
|
|
15
|
+
|
|
16
|
+
|
|
3
17
|
## 4.13.50 (2024-12-30)
|
|
4
18
|
|
|
5
19
|
### Features
|
package/bin/commands/help.js
CHANGED
|
@@ -13,7 +13,7 @@ var HELP_CREATE = "\nUsage: grok create [name]\n\nCreate a package:\n\ngrok crea
|
|
|
13
13
|
var HELP_PUBLISH = "\nUsage: grok publish [host]\n\nUpload a package\n\nOptions:\n[--build|--rebuild] [--debug|--release] [-k | --key] [--suffix] [--all] [--refresh] [--link]\n\n--all Publish all available packages \n--refresh Publish all available already loaded packages \n--link \t Link the package to local utils\n\nRunning `grok publish` is the same as running `grok publish defaultHost --build --debug`\n";
|
|
14
14
|
var HELP_CHECK = "\nUsage: grok check\n\nOptions:\n[-r | --recursive]\n\n--recursive Check all packages in the current directory\n\nCheck package content (function signatures, import statements of external modules, etc.)\n";
|
|
15
15
|
var HELP_TEST = "\nUsage: grok test\n\nOptions:\n[--package] [--category] [--test] [--host] [--csv] [--gui] [--skip-build] [--skip-publish] [--link] [--catchUnhandled] [--report] [--record] [--verbose] [--platform] [--benchmark] [--stress-test]\n\n--package Specify a package name to run tests for\n--category Specify a category name to run tests for\n--test Specify a test name to run \n--host Host alias as in the config file\n--csv Save the test report in a CSV file\n--gui Launch graphical interface (non-headless mode)\n--catchUnhandled Catch unhandled exceptions during test execution (default=true)\n--report Report failed tests to audit, notifies package author (default=false)\n--skip-build Skip the package build step\n--skip-publish Skip the package publication step\n--link \t Link the package to local utils\n--record Records the test execution process in mp4 format\n--verbose Prints detailed information about passed and skipped tests in the console\n--platform Runs only platform tests (applicable for ApiTests package only)\n--core Runs package & auto tests & core tests (core tests run only from DevTools package)\n--benchmark \t Runs tests in benchmark mode\n--stress-test Runs shuffled stress-test only\n \nRun package tests\n\nSee instructions:\nhttps://datagrok.ai/help/develop/how-to/test-packages#local-testing\n";
|
|
16
|
-
var HELP_TESTALL = "\nUsage: grok testall\n\nOptions:\n[--packages] [--host] [--csv] [--gui] [--skip-build] [--skip-publish] [--link-package] [--catchUnhandled] [--report] [--record] [--verbose] [--benchmark] [--stress-test] [--order] [--tags] [--testRepeat] [--
|
|
16
|
+
var HELP_TESTALL = "\nUsage: grok testall\n\nOptions:\n[--packages] [--host] [--csv] [--gui] [--skip-build] [--skip-publish] [--link-package] [--catchUnhandled] [--report] [--record] [--verbose] [--benchmark] [--stress-test] [--order] [--tags] [--testRepeat] [--browsers-count]\n\n--packages Specify a packages names to run tests for\n--host Host alias as in the config file\n--csv Save the test report in a CSV file\n--gui Launch graphical interface (non-headless mode)\n--catchUnhandled Catch unhandled exceptions during test execution (default=true)\n--report Report failed tests to audit, notifies packages author (default=false)\n--skip-build Skip the packages build step\n--skip-publish Skip the packages publication step\n--link-package \t Link the packages to local utils\n--record Records the test execution process in mp4 format\n--verbose Prints detailed information about passed and skipped tests in the console\n--core Runs packages & core tests (applicable for DevTools packages only)\n--benchmark \t Runs tests in benchmark mode\n--stress-test Runs shuffled stress-test only\n--order Specify order for tests invocation\n--tags Filter tests by tag name for run\n--testRepeat Set amount of tests repeats\n--browsers-count Set amount of browsers for tests run\n\nRun tests of all or specified packages \n\nSee instructions:\nhttps://datagrok.ai/help/develop/how-to/test-packages#local-testing\n";
|
|
17
17
|
var HELP_LINK = "\nUsage: grok link\n\nLink `datagrok-api` and libraries for local development\n";
|
|
18
18
|
|
|
19
19
|
// const HELP_MIGRATE = `
|
package/bin/commands/test-all.js
CHANGED
|
@@ -26,7 +26,7 @@ var order = /*#__PURE__*/function (order) {
|
|
|
26
26
|
order[order["alphabetical"] = 1] = "alphabetical";
|
|
27
27
|
order[order["packageRandom"] = 2] = "packageRandom";
|
|
28
28
|
order[order["packageAlphabetical"] = 3] = "packageAlphabetical";
|
|
29
|
-
order[order["
|
|
29
|
+
order[order["testToBrowser"] = 4] = "testToBrowser";
|
|
30
30
|
return order;
|
|
31
31
|
}(order || {});
|
|
32
32
|
function getEnumOrder(orderStr) {
|
|
@@ -47,8 +47,8 @@ function getEnumOrder(orderStr) {
|
|
|
47
47
|
case "packageatoz":
|
|
48
48
|
return order.packageAlphabetical;
|
|
49
49
|
break;
|
|
50
|
-
case "
|
|
51
|
-
return order.
|
|
50
|
+
case "testtobrowser":
|
|
51
|
+
return order.testToBrowser;
|
|
52
52
|
break;
|
|
53
53
|
}
|
|
54
54
|
return order.random;
|
|
@@ -58,15 +58,15 @@ var grokDir = _path["default"].join(_os["default"].homedir(), '.grok');
|
|
|
58
58
|
var confPath = _path["default"].join(grokDir, 'config.yaml');
|
|
59
59
|
var csvReportDir = _path["default"].join(curDir, 'test-report.csv');
|
|
60
60
|
var testInvocationTimeout = 7200000;
|
|
61
|
-
var orderingFunctions = new Map([[order.random, _orderFunctions.setRandomOrder], [order.alphabetical, _orderFunctions.setAlphabeticalOrder], [order.packageRandom, _orderFunctions.setPackageRandomOrder], [order.packageAlphabetical, _orderFunctions.setPackageAlphabeticalOrder], [order.
|
|
62
|
-
var
|
|
61
|
+
var orderingFunctions = new Map([[order.random, _orderFunctions.setRandomOrder], [order.alphabetical, _orderFunctions.setAlphabeticalOrder], [order.packageRandom, _orderFunctions.setPackageRandomOrder], [order.packageAlphabetical, _orderFunctions.setPackageAlphabeticalOrder], [order.testToBrowser, _orderFunctions.setTestToBrowserOrder]]);
|
|
62
|
+
var browsersStarted = 0;
|
|
63
63
|
function testAll(_x) {
|
|
64
64
|
return _testAll.apply(this, arguments);
|
|
65
65
|
}
|
|
66
66
|
function _testAll() {
|
|
67
67
|
_testAll = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(args) {
|
|
68
68
|
var _args$tags, _args$order, _args$benchmark, _args$catchUnhandled, _args$gui, _args$record, _args$report, _args$verbose;
|
|
69
|
-
var config, packagesToRun, testsObj, filteredTests,
|
|
69
|
+
var config, packagesToRun, testsObj, filteredTests, browsersOrder, testsResults, i, _iterator, _step, result;
|
|
70
70
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
71
71
|
while (1) switch (_context.prev = _context.next) {
|
|
72
72
|
case 0:
|
|
@@ -87,11 +87,11 @@ function _testAll() {
|
|
|
87
87
|
case 10:
|
|
88
88
|
filteredTests = _context.sent;
|
|
89
89
|
_context.next = 13;
|
|
90
|
-
return
|
|
90
|
+
return setBrowsersOrder(filteredTests, getEnumOrder((_args$order = args.order) !== null && _args$order !== void 0 ? _args$order : ''), args['browsers-count'], args.testRepeat);
|
|
91
91
|
case 13:
|
|
92
|
-
|
|
92
|
+
browsersOrder = _context.sent;
|
|
93
93
|
_context.next = 16;
|
|
94
|
-
return runTests(
|
|
94
|
+
return runTests(browsersOrder, {
|
|
95
95
|
benchmark: (_args$benchmark = args.benchmark) !== null && _args$benchmark !== void 0 ? _args$benchmark : false,
|
|
96
96
|
catchUnhandled: (_args$catchUnhandled = args.catchUnhandled) !== null && _args$catchUnhandled !== void 0 ? _args$catchUnhandled : false,
|
|
97
97
|
gui: (_args$gui = args.gui) !== null && _args$gui !== void 0 ? _args$gui : false,
|
|
@@ -106,8 +106,8 @@ function _testAll() {
|
|
|
106
106
|
try {
|
|
107
107
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
108
108
|
result = _step.value;
|
|
109
|
-
console.log("\
|
|
110
|
-
(0, _testUtils.
|
|
109
|
+
console.log("\nBrowser #".concat(i++, " "));
|
|
110
|
+
(0, _testUtils.printBrowsersResult)(result, args.verbose);
|
|
111
111
|
}
|
|
112
112
|
} catch (err) {
|
|
113
113
|
_iterator.e(err);
|
|
@@ -228,13 +228,13 @@ function _filterTests() {
|
|
|
228
228
|
}));
|
|
229
229
|
return _filterTests.apply(this, arguments);
|
|
230
230
|
}
|
|
231
|
-
function
|
|
232
|
-
return
|
|
231
|
+
function setBrowsersOrder(_x4) {
|
|
232
|
+
return _setBrowsersOrder.apply(this, arguments);
|
|
233
233
|
}
|
|
234
|
-
function
|
|
235
|
-
|
|
234
|
+
function _setBrowsersOrder() {
|
|
235
|
+
_setBrowsersOrder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(tests) {
|
|
236
236
|
var invocationOrder,
|
|
237
|
-
|
|
237
|
+
countOfBrowsers,
|
|
238
238
|
testRepeats,
|
|
239
239
|
resultOrder,
|
|
240
240
|
orderingFunction,
|
|
@@ -243,7 +243,7 @@ function _setWorkersOrder() {
|
|
|
243
243
|
while (1) switch (_context4.prev = _context4.next) {
|
|
244
244
|
case 0:
|
|
245
245
|
invocationOrder = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : 0;
|
|
246
|
-
|
|
246
|
+
countOfBrowsers = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : 1;
|
|
247
247
|
testRepeats = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : 1;
|
|
248
248
|
resultOrder = [];
|
|
249
249
|
orderingFunction = orderingFunctions.get(invocationOrder);
|
|
@@ -251,7 +251,7 @@ function _setWorkersOrder() {
|
|
|
251
251
|
_context4.next = 9;
|
|
252
252
|
break;
|
|
253
253
|
}
|
|
254
|
-
resultOrder = orderingFunction(tests,
|
|
254
|
+
resultOrder = orderingFunction(tests, countOfBrowsers, testRepeats);
|
|
255
255
|
_context4.next = 10;
|
|
256
256
|
break;
|
|
257
257
|
case 9:
|
|
@@ -264,31 +264,31 @@ function _setWorkersOrder() {
|
|
|
264
264
|
}
|
|
265
265
|
}, _callee3);
|
|
266
266
|
}));
|
|
267
|
-
return
|
|
267
|
+
return _setBrowsersOrder.apply(this, arguments);
|
|
268
268
|
}
|
|
269
269
|
function runTests(_x5, _x6) {
|
|
270
270
|
return _runTests.apply(this, arguments);
|
|
271
271
|
}
|
|
272
272
|
function _runTests() {
|
|
273
|
-
_runTests = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(
|
|
274
|
-
var
|
|
273
|
+
_runTests = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(browsersOrder, browserOptions) {
|
|
274
|
+
var browsersCommands, _iterator3, _step3, browserOrder, browsersPromises, _i, _browsersCommands, browserCommands, resultObjects;
|
|
275
275
|
return _regenerator["default"].wrap(function _callee4$(_context5) {
|
|
276
276
|
while (1) switch (_context5.prev = _context5.next) {
|
|
277
277
|
case 0:
|
|
278
|
-
|
|
279
|
-
_iterator3 = _createForOfIteratorHelper(
|
|
278
|
+
browsersCommands = [];
|
|
279
|
+
_iterator3 = _createForOfIteratorHelper(browsersOrder);
|
|
280
280
|
try {
|
|
281
281
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
282
|
-
|
|
283
|
-
|
|
282
|
+
browserOrder = _step3.value;
|
|
283
|
+
browsersCommands.push(browserOrder.map(function (testObj) {
|
|
284
284
|
return {
|
|
285
285
|
"package": testObj.packageName,
|
|
286
286
|
params: {
|
|
287
287
|
category: testObj.category,
|
|
288
288
|
test: testObj.name,
|
|
289
289
|
options: {
|
|
290
|
-
catchUnhandled:
|
|
291
|
-
report:
|
|
290
|
+
catchUnhandled: browserOptions.catchUnhandled,
|
|
291
|
+
report: browserOptions.report
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
294
|
};
|
|
@@ -299,13 +299,13 @@ function _runTests() {
|
|
|
299
299
|
} finally {
|
|
300
300
|
_iterator3.f();
|
|
301
301
|
}
|
|
302
|
-
|
|
303
|
-
for (_i = 0,
|
|
304
|
-
|
|
305
|
-
|
|
302
|
+
browsersPromises = [];
|
|
303
|
+
for (_i = 0, _browsersCommands = browsersCommands; _i < _browsersCommands.length; _i++) {
|
|
304
|
+
browserCommands = _browsersCommands[_i];
|
|
305
|
+
browsersPromises.push((0, _testUtils.runBrowser)(browserCommands, browserOptions, browsersStarted++, testInvocationTimeout));
|
|
306
306
|
}
|
|
307
307
|
_context5.next = 7;
|
|
308
|
-
return Promise.all(
|
|
308
|
+
return Promise.all(browsersPromises);
|
|
309
309
|
case 7:
|
|
310
310
|
resultObjects = _context5.sent;
|
|
311
311
|
return _context5.abrupt("return", resultObjects);
|
package/bin/commands/test.js
CHANGED
|
@@ -67,7 +67,7 @@ function _test() {
|
|
|
67
67
|
case 15:
|
|
68
68
|
res = _context.sent;
|
|
69
69
|
if (args.csv) (0, _testUtils.saveCsvResults)([res.csv], csvReportDir);
|
|
70
|
-
(0, _testUtils.
|
|
70
|
+
(0, _testUtils.printBrowsersResult)(res, args.verbose);
|
|
71
71
|
if (res.failed) testUtils.exitWithCode(1);else testUtils.exitWithCode(0);
|
|
72
72
|
return _context.abrupt("return", true);
|
|
73
73
|
case 20:
|
|
@@ -91,7 +91,7 @@ function runTesting(_x2) {
|
|
|
91
91
|
function _runTesting() {
|
|
92
92
|
_runTesting = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(args) {
|
|
93
93
|
var _process$env$TARGET_P, _args$category;
|
|
94
|
-
var testsObj, parsed, organized, filtered, categoryRegex, _iterator, _step, element, testsResults, r,
|
|
94
|
+
var testsObj, parsed, organized, filtered, categoryRegex, _iterator, _step, element, testsResults, r, browserId;
|
|
95
95
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
96
96
|
while (1) switch (_context3.prev = _context3.next) {
|
|
97
97
|
case 0:
|
|
@@ -153,7 +153,7 @@ function _runTesting() {
|
|
|
153
153
|
}
|
|
154
154
|
color.info('Starting tests...');
|
|
155
155
|
testsResults = [];
|
|
156
|
-
|
|
156
|
+
browserId = 1;
|
|
157
157
|
_context3.next = 17;
|
|
158
158
|
return (0, _testUtils.timeout)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
159
159
|
var _args$benchmark, _args$catchUnhandled, _args$gui, _args$record, _args$report, _args$verbose, _args$ciCd, testsLeft, testsToReproduce, _iterator2, _step2, testData, reproduced, _iterator3, _step3, _test2, _reproducedTest2;
|
|
@@ -161,7 +161,7 @@ function _runTesting() {
|
|
|
161
161
|
while (1) switch (_context2.prev = _context2.next) {
|
|
162
162
|
case 0:
|
|
163
163
|
_context2.next = 2;
|
|
164
|
-
return (0, _testUtils.
|
|
164
|
+
return (0, _testUtils.runBrowser)(organized, {
|
|
165
165
|
benchmark: (_args$benchmark = args.benchmark) !== null && _args$benchmark !== void 0 ? _args$benchmark : false,
|
|
166
166
|
catchUnhandled: (_args$catchUnhandled = args.catchUnhandled) !== null && _args$catchUnhandled !== void 0 ? _args$catchUnhandled : false,
|
|
167
167
|
gui: (_args$gui = args.gui) !== null && _args$gui !== void 0 ? _args$gui : false,
|
|
@@ -170,7 +170,7 @@ function _runTesting() {
|
|
|
170
170
|
verbose: (_args$verbose = args.verbose) !== null && _args$verbose !== void 0 ? _args$verbose : false,
|
|
171
171
|
ciCd: (_args$ciCd = args['ci-cd']) !== null && _args$ciCd !== void 0 ? _args$ciCd : false,
|
|
172
172
|
stopOnTimeout: true
|
|
173
|
-
},
|
|
173
|
+
}, browserId, testInvocationTimeout);
|
|
174
174
|
case 2:
|
|
175
175
|
r = _context2.sent;
|
|
176
176
|
testsLeft = [];
|
|
@@ -232,7 +232,7 @@ function _runTesting() {
|
|
|
232
232
|
case 31:
|
|
233
233
|
testsResults.push(r);
|
|
234
234
|
organized = testsLeft;
|
|
235
|
-
|
|
235
|
+
browserId++;
|
|
236
236
|
case 34:
|
|
237
237
|
if (r.failed) {
|
|
238
238
|
_context2.next = 0;
|
|
@@ -246,7 +246,7 @@ function _runTesting() {
|
|
|
246
246
|
})), testInvocationTimeout);
|
|
247
247
|
case 17:
|
|
248
248
|
_context3.next = 19;
|
|
249
|
-
return (0, _testUtils.
|
|
249
|
+
return (0, _testUtils.mergeBrowsersResults)(testsResults);
|
|
250
250
|
case 19:
|
|
251
251
|
return _context3.abrupt("return", _context3.sent);
|
|
252
252
|
case 20:
|
|
@@ -277,7 +277,7 @@ function _reproducedTest() {
|
|
|
277
277
|
}
|
|
278
278
|
_test3 = _step4.value;
|
|
279
279
|
_context4.next = 8;
|
|
280
|
-
return (0, _testUtils.
|
|
280
|
+
return (0, _testUtils.runBrowser)([_test3], {
|
|
281
281
|
benchmark: (_args$benchmark2 = args.benchmark) !== null && _args$benchmark2 !== void 0 ? _args$benchmark2 : false,
|
|
282
282
|
catchUnhandled: false,
|
|
283
283
|
gui: false,
|
|
@@ -8,7 +8,7 @@ exports.setAlphabeticalOrder = setAlphabeticalOrder;
|
|
|
8
8
|
exports.setPackageAlphabeticalOrder = setPackageAlphabeticalOrder;
|
|
9
9
|
exports.setPackageRandomOrder = setPackageRandomOrder;
|
|
10
10
|
exports.setRandomOrder = setRandomOrder;
|
|
11
|
-
exports.
|
|
11
|
+
exports.setTestToBrowserOrder = setTestToBrowserOrder;
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
14
14
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -16,15 +16,15 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
16
16
|
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; } } }; }
|
|
17
17
|
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); }
|
|
18
18
|
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; }
|
|
19
|
-
function setRandomOrder(tests,
|
|
20
|
-
if (
|
|
19
|
+
function setRandomOrder(tests, browsersAmount, testRepeats) {
|
|
20
|
+
if (browsersAmount > tests.length) browsersAmount = tests.length;
|
|
21
21
|
var repeatedTests = repeatTests(tests, testRepeats);
|
|
22
22
|
var orderedTests = shuffle(repeatedTests);
|
|
23
|
-
return splitArray(orderedTests,
|
|
23
|
+
return splitArray(orderedTests, browsersAmount);
|
|
24
24
|
}
|
|
25
|
-
function setPackageRandomOrder(tests,
|
|
25
|
+
function setPackageRandomOrder(tests, browsersAmount, testRepeats) {
|
|
26
26
|
var packages = splitTestsByPackages(tests);
|
|
27
|
-
if (
|
|
27
|
+
if (browsersAmount > packages.size) browsersAmount = packages.size;
|
|
28
28
|
var _iterator = _createForOfIteratorHelper(packages.keys()),
|
|
29
29
|
_step;
|
|
30
30
|
try {
|
|
@@ -38,7 +38,7 @@ function setPackageRandomOrder(tests, workersAmount, testRepeats) {
|
|
|
38
38
|
} finally {
|
|
39
39
|
_iterator.f();
|
|
40
40
|
}
|
|
41
|
-
var splittedPackagesArray = splitArray((0, _toConsumableArray2["default"])(packages.values()),
|
|
41
|
+
var splittedPackagesArray = splitArray((0, _toConsumableArray2["default"])(packages.values()), browsersAmount);
|
|
42
42
|
var splittedTestsArray = [];
|
|
43
43
|
for (var _i = 0, _splittedPackagesArra = splittedPackagesArray; _i < _splittedPackagesArra.length; _i++) {
|
|
44
44
|
var _splitArray = _splittedPackagesArra[_i];
|
|
@@ -59,17 +59,17 @@ function setPackageRandomOrder(tests, workersAmount, testRepeats) {
|
|
|
59
59
|
}
|
|
60
60
|
return splittedTestsArray;
|
|
61
61
|
}
|
|
62
|
-
function setAlphabeticalOrder(tests,
|
|
63
|
-
if (
|
|
62
|
+
function setAlphabeticalOrder(tests, browsersAmount, testRepeats) {
|
|
63
|
+
if (browsersAmount > tests.length) browsersAmount = tests.length;
|
|
64
64
|
var repeatedTests = repeatTests(tests, testRepeats);
|
|
65
65
|
var orderedTests = repeatedTests.sort(function (test1, test2) {
|
|
66
66
|
return "".concat(test1.category, ": ").concat(test1.name, "s").localeCompare("".concat(test2.category, ": ").concat(test2.name, "s"));
|
|
67
67
|
});
|
|
68
|
-
return splitArray(orderedTests,
|
|
68
|
+
return splitArray(orderedTests, browsersAmount);
|
|
69
69
|
}
|
|
70
|
-
function setPackageAlphabeticalOrder(tests,
|
|
70
|
+
function setPackageAlphabeticalOrder(tests, browsersAmount, testRepeats) {
|
|
71
71
|
var packages = splitTestsByPackages(tests);
|
|
72
|
-
if (
|
|
72
|
+
if (browsersAmount > packages.size) browsersAmount = packages.size;
|
|
73
73
|
var _iterator3 = _createForOfIteratorHelper(packages.keys()),
|
|
74
74
|
_step3;
|
|
75
75
|
try {
|
|
@@ -83,7 +83,7 @@ function setPackageAlphabeticalOrder(tests, workersAmount, testRepeats) {
|
|
|
83
83
|
} finally {
|
|
84
84
|
_iterator3.f();
|
|
85
85
|
}
|
|
86
|
-
var splittedPackagesArray = splitArray((0, _toConsumableArray2["default"])(packages.values()),
|
|
86
|
+
var splittedPackagesArray = splitArray((0, _toConsumableArray2["default"])(packages.values()), browsersAmount);
|
|
87
87
|
var splittedTestsArray = [];
|
|
88
88
|
for (var _i2 = 0, _splittedPackagesArra2 = splittedPackagesArray; _i2 < _splittedPackagesArra2.length; _i2++) {
|
|
89
89
|
var _splitArray2 = _splittedPackagesArra2[_i2];
|
|
@@ -104,11 +104,11 @@ function setPackageAlphabeticalOrder(tests, workersAmount, testRepeats) {
|
|
|
104
104
|
}
|
|
105
105
|
return splittedTestsArray;
|
|
106
106
|
}
|
|
107
|
-
function
|
|
107
|
+
function setTestToBrowserOrder(tests, browsersAmount, testRepeats) {
|
|
108
108
|
var splittedTestsArray = [];
|
|
109
|
-
if (
|
|
109
|
+
if (browsersAmount > tests.length) browsersAmount = tests.length;
|
|
110
110
|
var orderedTests = shuffle(tests);
|
|
111
|
-
for (var i = 0; i <
|
|
111
|
+
for (var i = 0; i < browsersAmount; i++) {
|
|
112
112
|
splittedTestsArray.push([]);
|
|
113
113
|
var _iterator5 = _createForOfIteratorHelper(orderedTests),
|
|
114
114
|
_step5;
|
|
@@ -122,6 +122,7 @@ function setTestToWorkerOrder(tests, workersAmount, testRepeats) {
|
|
|
122
122
|
} finally {
|
|
123
123
|
_iterator5.f();
|
|
124
124
|
}
|
|
125
|
+
splittedTestsArray[splittedTestsArray.length - 1] = shuffle(repeatTests(splittedTestsArray[splittedTestsArray.length - 1], testRepeats));
|
|
125
126
|
}
|
|
126
127
|
return splittedTestsArray;
|
|
127
128
|
}
|
package/bin/utils/test-utils.js
CHANGED
|
@@ -15,11 +15,11 @@ exports.getToken = getToken;
|
|
|
15
15
|
exports.getWebUrl = getWebUrl;
|
|
16
16
|
exports.loadPackages = loadPackages;
|
|
17
17
|
exports.loadTestsList = loadTestsList;
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
18
|
+
exports.mergeBrowsersResults = mergeBrowsersResults;
|
|
19
|
+
exports.printBrowsersResult = printBrowsersResult;
|
|
20
20
|
exports.recorderConfig = void 0;
|
|
21
|
+
exports.runBrowser = runBrowser;
|
|
21
22
|
exports.runWithTimeout = runWithTimeout;
|
|
22
|
-
exports.runWorker = runWorker;
|
|
23
23
|
exports.saveCsvResults = saveCsvResults;
|
|
24
24
|
exports.timeout = timeout;
|
|
25
25
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
@@ -575,28 +575,28 @@ function _loadTestsList() {
|
|
|
575
575
|
function addLogsToFile(filePath, stringToSave) {
|
|
576
576
|
_fs["default"].appendFileSync(filePath, "".concat(stringToSave));
|
|
577
577
|
}
|
|
578
|
-
function
|
|
579
|
-
var
|
|
578
|
+
function printBrowsersResult(browserResult) {
|
|
579
|
+
var _browserResult$failed, _browserResult$verbos3;
|
|
580
580
|
var verbose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
581
581
|
if (verbose) {
|
|
582
|
-
var
|
|
583
|
-
if (((
|
|
582
|
+
var _browserResult$passed, _browserResult$verbos, _browserResult$skippe, _browserResult$verbos2;
|
|
583
|
+
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) {
|
|
584
584
|
console.log("Passed: ");
|
|
585
|
-
console.log(
|
|
585
|
+
console.log(browserResult.verbosePassed);
|
|
586
586
|
}
|
|
587
|
-
if (((
|
|
587
|
+
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) {
|
|
588
588
|
console.log("Skipped: ");
|
|
589
|
-
console.log(
|
|
589
|
+
console.log(browserResult.verboseSkipped);
|
|
590
590
|
}
|
|
591
591
|
}
|
|
592
|
-
if (((
|
|
592
|
+
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) {
|
|
593
593
|
console.log("Failed: ");
|
|
594
|
-
console.log(
|
|
594
|
+
console.log(browserResult.verboseFailed);
|
|
595
595
|
}
|
|
596
|
-
console.log("Passed amount: " + (
|
|
597
|
-
console.log("Skipped amount: " + (
|
|
598
|
-
console.log("Failed amount: " + (
|
|
599
|
-
if (
|
|
596
|
+
console.log("Passed amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.passedAmount));
|
|
597
|
+
console.log("Skipped amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.skippedAmount));
|
|
598
|
+
console.log("Failed amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.failedAmount));
|
|
599
|
+
if (browserResult.failed) {
|
|
600
600
|
color.fail('Tests failed.');
|
|
601
601
|
} else {
|
|
602
602
|
color.success('Tests passed.');
|
|
@@ -610,11 +610,11 @@ function saveCsvResults(stringToSave, csvReportDir) {
|
|
|
610
610
|
_fs["default"].writeFileSync(csvReportDir, modifiedStrings.join('\n'), 'utf8');
|
|
611
611
|
color.info('Saved `test-report.csv`\n');
|
|
612
612
|
}
|
|
613
|
-
function
|
|
614
|
-
return
|
|
613
|
+
function runBrowser(_x18, _x19, _x20) {
|
|
614
|
+
return _runBrowser.apply(this, arguments);
|
|
615
615
|
}
|
|
616
|
-
function
|
|
617
|
-
|
|
616
|
+
function _runBrowser() {
|
|
617
|
+
_runBrowser = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(testExecutionData, browserOptions, browsersId) {
|
|
618
618
|
var testInvocationTimeout,
|
|
619
619
|
_args10 = arguments;
|
|
620
620
|
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
@@ -623,12 +623,12 @@ function _runWorker() {
|
|
|
623
623
|
testInvocationTimeout = _args10.length > 3 && _args10[3] !== undefined ? _args10[3] : 3600000;
|
|
624
624
|
_context10.next = 3;
|
|
625
625
|
return timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
|
|
626
|
-
var params, out, browser, page, recorder,
|
|
626
|
+
var params, out, browser, page, recorder, currentBrowserNum, logsDir, recordDir, testingResults;
|
|
627
627
|
return _regenerator["default"].wrap(function _callee9$(_context9) {
|
|
628
628
|
while (1) switch (_context9.prev = _context9.next) {
|
|
629
629
|
case 0:
|
|
630
630
|
params = Object.assign({}, defaultLaunchParameters);
|
|
631
|
-
if (
|
|
631
|
+
if (browserOptions.gui) params['headless'] = false;
|
|
632
632
|
_context9.next = 4;
|
|
633
633
|
return getBrowserPage(_puppeteer["default"], params);
|
|
634
634
|
case 4:
|
|
@@ -636,10 +636,10 @@ function _runWorker() {
|
|
|
636
636
|
browser = out.browser;
|
|
637
637
|
page = out.page;
|
|
638
638
|
recorder = new _puppeteerScreenRecorder.PuppeteerScreenRecorder(page, recorderConfig);
|
|
639
|
-
|
|
640
|
-
logsDir = "./test-console-output-".concat(
|
|
641
|
-
recordDir = "./test-record-".concat(
|
|
642
|
-
if (!
|
|
639
|
+
currentBrowserNum = browsersId;
|
|
640
|
+
logsDir = "./test-console-output-".concat(currentBrowserNum, ".log");
|
|
641
|
+
recordDir = "./test-record-".concat(currentBrowserNum, ".mp4");
|
|
642
|
+
if (!browserOptions.record) {
|
|
643
643
|
_context9.next = 20;
|
|
644
644
|
break;
|
|
645
645
|
}
|
|
@@ -682,10 +682,10 @@ function _runWorker() {
|
|
|
682
682
|
});
|
|
683
683
|
});
|
|
684
684
|
});
|
|
685
|
-
}, testExecutionData,
|
|
685
|
+
}, testExecutionData, browserOptions);
|
|
686
686
|
case 22:
|
|
687
687
|
testingResults = _context9.sent;
|
|
688
|
-
if (!
|
|
688
|
+
if (!browserOptions.record) {
|
|
689
689
|
_context9.next = 26;
|
|
690
690
|
break;
|
|
691
691
|
}
|
|
@@ -714,28 +714,28 @@ function _runWorker() {
|
|
|
714
714
|
}
|
|
715
715
|
}, _callee10);
|
|
716
716
|
}));
|
|
717
|
-
return
|
|
717
|
+
return _runBrowser.apply(this, arguments);
|
|
718
718
|
}
|
|
719
|
-
function
|
|
720
|
-
return
|
|
719
|
+
function mergeBrowsersResults(_x21) {
|
|
720
|
+
return _mergeBrowsersResults.apply(this, arguments);
|
|
721
721
|
}
|
|
722
|
-
function
|
|
723
|
-
|
|
724
|
-
var mergedResult, _iterator5, _step5,
|
|
722
|
+
function _mergeBrowsersResults() {
|
|
723
|
+
_mergeBrowsersResults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(browsersResults) {
|
|
724
|
+
var mergedResult, _iterator5, _step5, browsersResult, resultToMerdge1, resultToMerdge2, header;
|
|
725
725
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
|
726
726
|
while (1) switch (_context11.prev = _context11.next) {
|
|
727
727
|
case 0:
|
|
728
728
|
mergedResult = {
|
|
729
|
-
failed:
|
|
730
|
-
verbosePassed:
|
|
731
|
-
verboseSkipped:
|
|
732
|
-
verboseFailed:
|
|
733
|
-
passedAmount:
|
|
734
|
-
skippedAmount:
|
|
735
|
-
failedAmount:
|
|
736
|
-
csv:
|
|
729
|
+
failed: browsersResults[0].failed,
|
|
730
|
+
verbosePassed: browsersResults[0].verbosePassed,
|
|
731
|
+
verboseSkipped: browsersResults[0].verboseSkipped,
|
|
732
|
+
verboseFailed: browsersResults[0].verboseFailed,
|
|
733
|
+
passedAmount: browsersResults[0].passedAmount,
|
|
734
|
+
skippedAmount: browsersResults[0].skippedAmount,
|
|
735
|
+
failedAmount: browsersResults[0].failedAmount,
|
|
736
|
+
csv: browsersResults[0].csv
|
|
737
737
|
};
|
|
738
|
-
_iterator5 = _createForOfIteratorHelper(
|
|
738
|
+
_iterator5 = _createForOfIteratorHelper(browsersResults);
|
|
739
739
|
_context11.prev = 2;
|
|
740
740
|
_iterator5.s();
|
|
741
741
|
case 4:
|
|
@@ -743,22 +743,22 @@ function _mergeWorkersResults() {
|
|
|
743
743
|
_context11.next = 21;
|
|
744
744
|
break;
|
|
745
745
|
}
|
|
746
|
-
|
|
747
|
-
if (!(mergedResult.csv ===
|
|
746
|
+
browsersResult = _step5.value;
|
|
747
|
+
if (!(mergedResult.csv === browsersResult.csv)) {
|
|
748
748
|
_context11.next = 8;
|
|
749
749
|
break;
|
|
750
750
|
}
|
|
751
751
|
return _context11.abrupt("continue", 19);
|
|
752
752
|
case 8:
|
|
753
|
-
mergedResult.failed = mergedResult.failed &&
|
|
754
|
-
mergedResult.verbosePassed = "".concat(mergedResult.verbosePassed.trim(), "\n").concat(
|
|
755
|
-
mergedResult.verboseFailed = "".concat(mergedResult.verboseFailed.trim(), "\n").concat(
|
|
756
|
-
mergedResult.verboseSkipped = "".concat(mergedResult.verboseSkipped.trim(), "\n").concat(
|
|
757
|
-
mergedResult.passedAmount +=
|
|
758
|
-
mergedResult.failedAmount +=
|
|
759
|
-
mergedResult.skippedAmount +=
|
|
753
|
+
mergedResult.failed = mergedResult.failed && browsersResult.failed;
|
|
754
|
+
mergedResult.verbosePassed = "".concat(mergedResult.verbosePassed.trim(), "\n").concat(browsersResult.verbosePassed.trim());
|
|
755
|
+
mergedResult.verboseFailed = "".concat(mergedResult.verboseFailed.trim(), "\n").concat(browsersResult.verboseFailed.trim());
|
|
756
|
+
mergedResult.verboseSkipped = "".concat(mergedResult.verboseSkipped.trim(), "\n").concat(browsersResult.verboseSkipped.trim());
|
|
757
|
+
mergedResult.passedAmount += browsersResult.passedAmount;
|
|
758
|
+
mergedResult.failedAmount += browsersResult.failedAmount;
|
|
759
|
+
mergedResult.skippedAmount += browsersResult.skippedAmount;
|
|
760
760
|
resultToMerdge1 = mergedResult.csv.trim().split('\n');
|
|
761
|
-
resultToMerdge2 =
|
|
761
|
+
resultToMerdge2 = browsersResult.csv.trim().split('\n');
|
|
762
762
|
header = resultToMerdge1[0];
|
|
763
763
|
mergedResult.csv = [header].concat((0, _toConsumableArray2["default"])(resultToMerdge1.slice(1)), (0, _toConsumableArray2["default"])(resultToMerdge2.slice(1))).join('\n');
|
|
764
764
|
case 19:
|
|
@@ -783,7 +783,7 @@ function _mergeWorkersResults() {
|
|
|
783
783
|
}
|
|
784
784
|
}, _callee11, null, [[2, 23, 26, 29]]);
|
|
785
785
|
}));
|
|
786
|
-
return
|
|
786
|
+
return _mergeBrowsersResults.apply(this, arguments);
|
|
787
787
|
}
|
|
788
788
|
var TestContext = exports.TestContext = /*#__PURE__*/(0, _createClass2["default"])(function TestContext(catchUnhandled, report) {
|
|
789
789
|
(0, _classCallCheck2["default"])(this, TestContext);
|
package/package.json
CHANGED