@testim/testim-cli 3.201.0 → 3.205.0
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/commons/featureFlags.js +1 -0
- package/commons/getSessionPlayerRequire.js +22 -2
- package/commons/logger.js +58 -48
- package/commons/testimServicesApi.js +14 -0
- package/lib/coralogix-winston.transport.js +99 -0
- package/npm-shrinkwrap.json +203 -138
- package/package.json +3 -3
- package/player/stepActions/pixelValidationStepAction.js +6 -3
- package/player/utils/eyeSdkService.js +12 -11
- package/runners/TestPlanRunner.js +29 -0
- package/services/gridService.js +1 -2
- package/testRunHandler.js +6 -0
- package/workers/BaseWorker.js +1 -3
- package/lib/coralogix-bunyan.stream.js +0 -56
package/commons/featureFlags.js
CHANGED
|
@@ -54,6 +54,7 @@ class FeatureFlagsService {
|
|
|
54
54
|
useSameBrowserForMultiTests: new LabFeatureFlag('labs'),
|
|
55
55
|
highSpeedMode: new LabFeatureFlag(),
|
|
56
56
|
usePortedHtml5DragDrop: new Rox.Flag(),
|
|
57
|
+
applitoolsNewIntegration: new Rox.Flag(),
|
|
57
58
|
};
|
|
58
59
|
Rox.register('default', this.flags);
|
|
59
60
|
}
|
|
@@ -1,10 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
3
|
const perf = require('./performance-logger');
|
|
4
4
|
|
|
5
5
|
perf.log('getSessionPlayerRequire start');
|
|
6
6
|
const getSessionPlayerFolder = require('./prepareRunnerAndTestimStartUtils').getSessionPlayerFolder;
|
|
7
|
+
|
|
7
8
|
const testimAppDataFolder = getSessionPlayerFolder();
|
|
8
|
-
|
|
9
|
+
/**
|
|
10
|
+
* @type {{
|
|
11
|
+
sessionPlayer: typeof import('../../../clickim/src/background/session/sessionPlayer').SessionPlayer;
|
|
12
|
+
utils: typeof import('../../../clickim/src/lib/utils').utils;
|
|
13
|
+
commonConstants: typeof import('../../../clickim/src/common/commonConstantsStrong');
|
|
14
|
+
locatorBuilderUtils: import('../../../clickim/src/locators/locatorBuilderUtils')['locatorBuilderUtils'];
|
|
15
|
+
assetService: import('../../../clickim/src/background/assetService')['assetService'];
|
|
16
|
+
localAssetService: import('../../../clickim/src/background/localAssetService');
|
|
17
|
+
urlUtils: import('../../../clickim/src/background/portMatch/urlUtils');
|
|
18
|
+
positionUtils: import('../../../clickim/src/lib/positionUtils');
|
|
19
|
+
visibilityUtils: import('../../../clickim/src/background/visibilityUtils');
|
|
20
|
+
apiCall: import('../../../clickim/src/common/playback/apiCall')['apiCall'];
|
|
21
|
+
stepParamBuilder: typeof import('../../../clickim/src/common/stepParamsBuilder').StepParamsBuilder;
|
|
22
|
+
stepParamExpressionEvaluator: import('../../../clickim/src/common/stepParamExpressionEvaluator');
|
|
23
|
+
manifestVersion: string | undefined;
|
|
24
|
+
EyeSdkBuilder: typeof import('../../../clickim/src/background/eyeSdkBuilder').EyeSdkBuilder
|
|
25
|
+
}}
|
|
26
|
+
*/
|
|
27
|
+
const sessionPlayer = require(require('path').join(testimAppDataFolder, 'sessionPlayer.js')); // eslint-disable-line import/no-dynamic-require
|
|
28
|
+
|
|
9
29
|
module.exports = sessionPlayer;
|
|
10
30
|
perf.log('getSessionPlayerRequire end');
|
package/commons/logger.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const winston = require('winston');
|
|
4
|
+
const os = require('os');
|
|
4
5
|
|
|
6
|
+
const hostname = os.hostname();
|
|
5
7
|
const runnerVersion = getRunnerVersion();
|
|
6
8
|
const config = require('./config');
|
|
7
9
|
|
|
@@ -24,42 +26,45 @@ function getRunnerVersion() {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
function getStreamsAndWaitForFlushPromise() {
|
|
27
|
-
const
|
|
28
|
-
const streams = [];
|
|
29
|
+
const transports = [];
|
|
29
30
|
|
|
30
31
|
let waitForFlush = () => Promise.resolve();
|
|
31
32
|
|
|
32
33
|
if (!config.IS_ON_PREM) {
|
|
33
|
-
const
|
|
34
|
+
const { CoralogixTransport } = require('../lib/coralogix-winston.transport');
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
streams.push({
|
|
39
|
-
level,
|
|
40
|
-
stream: new CoralogixBunyan.CoralogixStream({ category: 'ROOT' }),
|
|
41
|
-
type: 'raw',
|
|
36
|
+
CoralogixTransport.configure(loggerConfig);
|
|
37
|
+
const loggerInstance = new CoralogixTransport({
|
|
38
|
+
category: 'ROOT',
|
|
42
39
|
});
|
|
40
|
+
transports.push(loggerInstance);
|
|
41
|
+
|
|
42
|
+
waitForFlush = () => loggerInstance.waitForFlush();
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (config.LOGGER_CONSOLE) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
streams.push({
|
|
50
|
-
level,
|
|
51
|
-
stream: prettyStdOut,
|
|
52
|
-
type: 'raw',
|
|
53
|
-
});
|
|
46
|
+
transports.push(new winston.transports.Console({
|
|
47
|
+
format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
|
|
48
|
+
}));
|
|
54
49
|
}
|
|
55
|
-
return [
|
|
50
|
+
return [transports, waitForFlush];
|
|
56
51
|
}
|
|
57
52
|
|
|
58
|
-
const [
|
|
53
|
+
const [transports, waitForFlush] = getStreamsAndWaitForFlushPromise();
|
|
54
|
+
const level = config.LOGGER_DEBUG ? 'debug' : 'info';
|
|
55
|
+
const defaultMeta = {};
|
|
56
|
+
if (isLocal.indexOf('@echo') === -1) {
|
|
57
|
+
Object.assign(defaultMeta, devFlags());
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
} else {
|
|
60
|
+
Object.assign(defaultMeta, localFlags());
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const winstonMainLogger = winston.createLogger({
|
|
64
|
+
levels: winston.config.syslog.levels,
|
|
65
|
+
level,
|
|
66
|
+
transports,
|
|
67
|
+
defaultMeta: { name: 'runner', hostname, nodeVersion: process.version, runnerVersion, ...defaultMeta },
|
|
63
68
|
});
|
|
64
69
|
|
|
65
70
|
let executionId = null;
|
|
@@ -77,8 +82,8 @@ function setProxyUri(proxyUri) {
|
|
|
77
82
|
if (config.IS_ON_PREM || !proxyUri) {
|
|
78
83
|
return;
|
|
79
84
|
}
|
|
80
|
-
const
|
|
81
|
-
|
|
85
|
+
const { CoralogixTransport } = require('../lib/coralogix-winston.transport');
|
|
86
|
+
CoralogixTransport.configure({ ...loggerConfig, proxyUri });
|
|
82
87
|
}
|
|
83
88
|
|
|
84
89
|
function releaseFlags() {
|
|
@@ -102,53 +107,58 @@ function localFlags() {
|
|
|
102
107
|
};
|
|
103
108
|
}
|
|
104
109
|
|
|
105
|
-
function
|
|
106
|
-
|
|
110
|
+
function addExecutionMetadata(dataExecutionId) {
|
|
111
|
+
const logData = {};
|
|
112
|
+
if (executionId && !dataExecutionId) {
|
|
107
113
|
logData.executionId = executionId;
|
|
108
114
|
}
|
|
109
115
|
|
|
110
|
-
logData.runnerVersion = runnerVersion;
|
|
111
116
|
logData.projectId = projectId;
|
|
112
|
-
logData.
|
|
113
|
-
|
|
114
|
-
if (isLocal.indexOf('@echo') === -1) {
|
|
115
|
-
Object.assign(logData, devFlags());
|
|
116
|
-
|
|
117
|
+
logData.time = (new Date()).toISOString();
|
|
117
118
|
|
|
118
|
-
return logData;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
Object.assign(logData, localFlags());
|
|
122
119
|
return logData;
|
|
123
120
|
}
|
|
124
121
|
|
|
125
122
|
class Logger {
|
|
126
123
|
constructor(logger) {
|
|
127
124
|
this._logger = logger;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.
|
|
125
|
+
this.debug = this.debug.bind(this);
|
|
126
|
+
this.info = this.info.bind(this);
|
|
127
|
+
this.warn = this.warn.bind(this);
|
|
128
|
+
this.error = this.error.bind(this);
|
|
129
|
+
this.fatal = this.fatal.bind(this);
|
|
132
130
|
}
|
|
133
131
|
|
|
134
132
|
debug(msg, data = {}) {
|
|
135
|
-
this.
|
|
133
|
+
this.innerLog('debug', msg, data);
|
|
136
134
|
}
|
|
137
135
|
|
|
138
136
|
info(msg, data = {}) {
|
|
139
|
-
this.
|
|
137
|
+
this.innerLog('info', msg, data);
|
|
140
138
|
}
|
|
141
139
|
|
|
142
140
|
warn(msg, data = {}) {
|
|
143
|
-
this.
|
|
141
|
+
this.innerLog('warning', msg, data);
|
|
144
142
|
}
|
|
145
143
|
|
|
146
144
|
error(msg, data = {}) {
|
|
147
|
-
this.
|
|
145
|
+
this.innerLog('error', msg, data);
|
|
148
146
|
}
|
|
149
147
|
|
|
150
148
|
fatal(msg, data = {}) {
|
|
151
|
-
this.
|
|
149
|
+
this.innerLog('crit', msg, data);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
innerLog(level, msg, data = {}) {
|
|
153
|
+
try {
|
|
154
|
+
this._logger.log(level, Object.assign({ meta: data }, { message: msg }, addExecutionMetadata(data.executionId)));
|
|
155
|
+
} catch (err) {
|
|
156
|
+
try {
|
|
157
|
+
this._logger.log('crit', Object.assign({ message: `failed to log message ${err.message}, ${err.stack}` }, addExecutionMetadata(data.executionId)));
|
|
158
|
+
} catch (err) {
|
|
159
|
+
// well what can we do
|
|
160
|
+
}
|
|
161
|
+
}
|
|
152
162
|
}
|
|
153
163
|
|
|
154
164
|
waitForFlush() {
|
|
@@ -157,7 +167,7 @@ class Logger {
|
|
|
157
167
|
}
|
|
158
168
|
|
|
159
169
|
function getLogger(loggerName) {
|
|
160
|
-
return new Logger(
|
|
170
|
+
return new Logger(winstonMainLogger.child({ category: loggerName }));
|
|
161
171
|
}
|
|
162
172
|
|
|
163
173
|
module.exports = {
|
|
@@ -428,6 +428,19 @@ function addTestRetry({
|
|
|
428
428
|
}), DEFAULT_REQUEST_RETRY);
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
+
/**
|
|
432
|
+
* @param {string} projectId
|
|
433
|
+
* @returns {Promise<import('../../../clickim/src/common/api/testimApplitoolsApi').ApplitoolsIntegrationData>}
|
|
434
|
+
*/
|
|
435
|
+
function getApplitoolsIntegrationData(projectId) {
|
|
436
|
+
try {
|
|
437
|
+
return getWithAuth(`/integration/applitools/v3/connected?projectId=${projectId}`);
|
|
438
|
+
} catch (err) {
|
|
439
|
+
logger.warn('could\'nt get applitools integration data.', { err });
|
|
440
|
+
return {};
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
431
444
|
module.exports = {
|
|
432
445
|
getS3Artifact,
|
|
433
446
|
getTestPlan,
|
|
@@ -459,4 +472,5 @@ module.exports = {
|
|
|
459
472
|
getHybridGridProvider,
|
|
460
473
|
loadTest,
|
|
461
474
|
isTestResultCompleted,
|
|
475
|
+
getApplitoolsIntegrationData,
|
|
462
476
|
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const { Log, Severity, CoralogixLogger } = require('@testim/coralogix-logger');
|
|
2
|
+
const TransportStream = require('winston-transport');
|
|
3
|
+
|
|
4
|
+
const severityMap = {
|
|
5
|
+
silly: Severity.verbose,
|
|
6
|
+
verbose: Severity.verbose,
|
|
7
|
+
info: Severity.info,
|
|
8
|
+
http: Severity.info,
|
|
9
|
+
warn: Severity.warning,
|
|
10
|
+
warning: Severity.warning,
|
|
11
|
+
error: Severity.error,
|
|
12
|
+
silent: Severity.verbose,
|
|
13
|
+
critical: Severity.critical,
|
|
14
|
+
crit: Severity.critical,
|
|
15
|
+
debug: Severity.debug,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const errorProps = ['err', 'error', 'reason', 'e'];
|
|
19
|
+
|
|
20
|
+
class CoralogixTransport extends TransportStream {
|
|
21
|
+
constructor(options) {
|
|
22
|
+
options = Object.assign({}, CoralogixTransport.options, options);
|
|
23
|
+
super(options);
|
|
24
|
+
this.options = options;
|
|
25
|
+
this.logger = new CoralogixLogger(options.category);
|
|
26
|
+
this.name = 'Coralogix Transport';
|
|
27
|
+
if (options.timestamp) {
|
|
28
|
+
this.timestamp = options.timestamp;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
log(info, callback) {
|
|
33
|
+
const { category, level, message: msg, meta: infoMeta = {}, ...restMeta } = info;
|
|
34
|
+
const meta = Object.assign({}, infoMeta, this.options.extraFields, restMeta);
|
|
35
|
+
const log = new Log();
|
|
36
|
+
|
|
37
|
+
log.severity = severityMap[level];
|
|
38
|
+
log.text = msg;
|
|
39
|
+
log.category = category;
|
|
40
|
+
if (meta.className) {
|
|
41
|
+
log.className = meta.className;
|
|
42
|
+
}
|
|
43
|
+
if (meta.methodName) {
|
|
44
|
+
log.methodName = meta.methodName;
|
|
45
|
+
}
|
|
46
|
+
if (meta.threadId) {
|
|
47
|
+
log.threadId = meta.threadId;
|
|
48
|
+
}
|
|
49
|
+
delete meta.className;
|
|
50
|
+
delete meta.methodName;
|
|
51
|
+
delete meta.threadId;
|
|
52
|
+
delete meta.category;
|
|
53
|
+
delete meta.level;
|
|
54
|
+
delete meta.message;
|
|
55
|
+
let errorOverride = false;
|
|
56
|
+
if (infoMeta instanceof Error) {
|
|
57
|
+
errorOverride = true;
|
|
58
|
+
meta.msg = infoMeta.message + infoMeta.stack;
|
|
59
|
+
if (msg) {
|
|
60
|
+
meta.msg = `${msg}\n${meta.msg}`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
for (const prop of errorProps) {
|
|
65
|
+
if (infoMeta[prop] instanceof Error) {
|
|
66
|
+
meta[prop] = {
|
|
67
|
+
message: infoMeta[prop].message,
|
|
68
|
+
stack: infoMeta[prop].stack,
|
|
69
|
+
name: infoMeta[prop].name,
|
|
70
|
+
type: infoMeta[prop].type,
|
|
71
|
+
cause: infoMeta[prop].cause,
|
|
72
|
+
...infoMeta[prop],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// still have keys after deleting the above
|
|
78
|
+
if (Object.keys(meta).length > 0) {
|
|
79
|
+
if (msg && !errorOverride) {
|
|
80
|
+
meta.msg = msg;
|
|
81
|
+
}
|
|
82
|
+
log.text = meta;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
this.logger.addLog(log);
|
|
86
|
+
callback(null, true);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
waitForFlush() {
|
|
90
|
+
return this.logger.waitForFlush();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static configure(config) {
|
|
94
|
+
CoralogixLogger.configure(config);
|
|
95
|
+
CoralogixTransport.options = config;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
module.exports.CoralogixTransport = CoralogixTransport;
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -165,9 +165,9 @@
|
|
|
165
165
|
}
|
|
166
166
|
},
|
|
167
167
|
"ws": {
|
|
168
|
-
"version": "7.5.
|
|
169
|
-
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.
|
|
170
|
-
"integrity": "sha512-
|
|
168
|
+
"version": "7.5.6",
|
|
169
|
+
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
|
|
170
|
+
"integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA=="
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
},
|
|
@@ -607,6 +607,16 @@
|
|
|
607
607
|
"to-fast-properties": "^2.0.0"
|
|
608
608
|
}
|
|
609
609
|
},
|
|
610
|
+
"@dabh/diagnostics": {
|
|
611
|
+
"version": "2.0.2",
|
|
612
|
+
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
|
|
613
|
+
"integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
|
|
614
|
+
"requires": {
|
|
615
|
+
"colorspace": "1.1.x",
|
|
616
|
+
"enabled": "2.0.x",
|
|
617
|
+
"kuler": "^2.0.0"
|
|
618
|
+
}
|
|
619
|
+
},
|
|
610
620
|
"@istanbuljs/load-nyc-config": {
|
|
611
621
|
"version": "1.1.0",
|
|
612
622
|
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
|
|
@@ -1550,9 +1560,9 @@
|
|
|
1550
1560
|
}
|
|
1551
1561
|
},
|
|
1552
1562
|
"ws": {
|
|
1553
|
-
"version": "7.5.
|
|
1554
|
-
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.
|
|
1555
|
-
"integrity": "sha512-
|
|
1563
|
+
"version": "7.5.6",
|
|
1564
|
+
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
|
|
1565
|
+
"integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA=="
|
|
1556
1566
|
}
|
|
1557
1567
|
}
|
|
1558
1568
|
},
|
|
@@ -2297,22 +2307,6 @@
|
|
|
2297
2307
|
"integrity": "sha1-HEF554ak9Sl6XT6LxQlazp2RjDU=",
|
|
2298
2308
|
"dev": true
|
|
2299
2309
|
},
|
|
2300
|
-
"bunyan": {
|
|
2301
|
-
"version": "1.8.15",
|
|
2302
|
-
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz",
|
|
2303
|
-
"integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==",
|
|
2304
|
-
"requires": {
|
|
2305
|
-
"dtrace-provider": "~0.8",
|
|
2306
|
-
"moment": "^2.19.3",
|
|
2307
|
-
"mv": "~2",
|
|
2308
|
-
"safe-json-stringify": "~1"
|
|
2309
|
-
}
|
|
2310
|
-
},
|
|
2311
|
-
"bunyan-prettystream": {
|
|
2312
|
-
"version": "0.1.3",
|
|
2313
|
-
"resolved": "https://registry.npmjs.org/bunyan-prettystream/-/bunyan-prettystream-0.1.3.tgz",
|
|
2314
|
-
"integrity": "sha1-bDtxMmb2rTIAfHtqsemYokU0nZg="
|
|
2315
|
-
},
|
|
2316
2310
|
"bytes": {
|
|
2317
2311
|
"version": "3.1.0",
|
|
2318
2312
|
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
|
|
@@ -2386,9 +2380,9 @@
|
|
|
2386
2380
|
"dev": true
|
|
2387
2381
|
},
|
|
2388
2382
|
"caniuse-lite": {
|
|
2389
|
-
"version": "1.0.
|
|
2390
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
2391
|
-
"integrity": "sha512-
|
|
2383
|
+
"version": "1.0.30001283",
|
|
2384
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz",
|
|
2385
|
+
"integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==",
|
|
2392
2386
|
"dev": true
|
|
2393
2387
|
},
|
|
2394
2388
|
"caseless": {
|
|
@@ -2538,9 +2532,9 @@
|
|
|
2538
2532
|
}
|
|
2539
2533
|
},
|
|
2540
2534
|
"ws": {
|
|
2541
|
-
"version": "7.5.
|
|
2542
|
-
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.
|
|
2543
|
-
"integrity": "sha512-
|
|
2535
|
+
"version": "7.5.6",
|
|
2536
|
+
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
|
|
2537
|
+
"integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA=="
|
|
2544
2538
|
}
|
|
2545
2539
|
}
|
|
2546
2540
|
},
|
|
@@ -2558,9 +2552,9 @@
|
|
|
2558
2552
|
},
|
|
2559
2553
|
"dependencies": {
|
|
2560
2554
|
"@types/node": {
|
|
2561
|
-
"version": "16.11.
|
|
2562
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.
|
|
2563
|
-
"integrity": "sha512-
|
|
2555
|
+
"version": "16.11.10",
|
|
2556
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz",
|
|
2557
|
+
"integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA=="
|
|
2564
2558
|
},
|
|
2565
2559
|
"mkdirp": {
|
|
2566
2560
|
"version": "0.5.5",
|
|
@@ -2569,14 +2563,6 @@
|
|
|
2569
2563
|
"requires": {
|
|
2570
2564
|
"minimist": "^1.2.5"
|
|
2571
2565
|
}
|
|
2572
|
-
},
|
|
2573
|
-
"rimraf": {
|
|
2574
|
-
"version": "3.0.2",
|
|
2575
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
|
2576
|
-
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
|
2577
|
-
"requires": {
|
|
2578
|
-
"glob": "^7.1.3"
|
|
2579
|
-
}
|
|
2580
2566
|
}
|
|
2581
2567
|
}
|
|
2582
2568
|
},
|
|
@@ -2734,6 +2720,30 @@
|
|
|
2734
2720
|
"object-visit": "^1.0.0"
|
|
2735
2721
|
}
|
|
2736
2722
|
},
|
|
2723
|
+
"color": {
|
|
2724
|
+
"version": "3.2.1",
|
|
2725
|
+
"resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
|
|
2726
|
+
"integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
|
|
2727
|
+
"requires": {
|
|
2728
|
+
"color-convert": "^1.9.3",
|
|
2729
|
+
"color-string": "^1.6.0"
|
|
2730
|
+
},
|
|
2731
|
+
"dependencies": {
|
|
2732
|
+
"color-convert": {
|
|
2733
|
+
"version": "1.9.3",
|
|
2734
|
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
|
2735
|
+
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
|
2736
|
+
"requires": {
|
|
2737
|
+
"color-name": "1.1.3"
|
|
2738
|
+
}
|
|
2739
|
+
},
|
|
2740
|
+
"color-name": {
|
|
2741
|
+
"version": "1.1.3",
|
|
2742
|
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
|
2743
|
+
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
|
2744
|
+
}
|
|
2745
|
+
}
|
|
2746
|
+
},
|
|
2737
2747
|
"color-convert": {
|
|
2738
2748
|
"version": "2.0.1",
|
|
2739
2749
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
@@ -2747,12 +2757,35 @@
|
|
|
2747
2757
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
2748
2758
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
|
2749
2759
|
},
|
|
2760
|
+
"color-string": {
|
|
2761
|
+
"version": "1.7.4",
|
|
2762
|
+
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.7.4.tgz",
|
|
2763
|
+
"integrity": "sha512-nVdUvPVgZMpRQad5dcsCMOSB5BXLljklTiaxS6ehhKxDsAI5sD7k5VmFuBt1y3Rlym8uulc/ANUN/bMWtBu6Sg==",
|
|
2764
|
+
"requires": {
|
|
2765
|
+
"color-name": "^1.0.0",
|
|
2766
|
+
"simple-swizzle": "^0.2.2"
|
|
2767
|
+
}
|
|
2768
|
+
},
|
|
2750
2769
|
"color-support": {
|
|
2751
2770
|
"version": "1.1.3",
|
|
2752
2771
|
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
|
|
2753
2772
|
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
|
|
2754
2773
|
"dev": true
|
|
2755
2774
|
},
|
|
2775
|
+
"colors": {
|
|
2776
|
+
"version": "1.4.0",
|
|
2777
|
+
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
|
|
2778
|
+
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
|
|
2779
|
+
},
|
|
2780
|
+
"colorspace": {
|
|
2781
|
+
"version": "1.1.4",
|
|
2782
|
+
"resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
|
|
2783
|
+
"integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
|
|
2784
|
+
"requires": {
|
|
2785
|
+
"color": "^3.1.3",
|
|
2786
|
+
"text-hex": "1.0.x"
|
|
2787
|
+
}
|
|
2788
|
+
},
|
|
2756
2789
|
"combine-source-map": {
|
|
2757
2790
|
"version": "0.8.0",
|
|
2758
2791
|
"resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
|
|
@@ -3445,15 +3478,6 @@
|
|
|
3445
3478
|
}
|
|
3446
3479
|
}
|
|
3447
3480
|
},
|
|
3448
|
-
"dtrace-provider": {
|
|
3449
|
-
"version": "0.8.8",
|
|
3450
|
-
"resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz",
|
|
3451
|
-
"integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==",
|
|
3452
|
-
"optional": true,
|
|
3453
|
-
"requires": {
|
|
3454
|
-
"nan": "^2.14.0"
|
|
3455
|
-
}
|
|
3456
|
-
},
|
|
3457
3481
|
"duplexify": {
|
|
3458
3482
|
"version": "3.7.1",
|
|
3459
3483
|
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
|
|
@@ -3530,9 +3554,9 @@
|
|
|
3530
3554
|
"integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ=="
|
|
3531
3555
|
},
|
|
3532
3556
|
"electron-to-chromium": {
|
|
3533
|
-
"version": "1.
|
|
3534
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.
|
|
3535
|
-
"integrity": "sha512-
|
|
3557
|
+
"version": "1.4.4",
|
|
3558
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.4.tgz",
|
|
3559
|
+
"integrity": "sha512-teHtgwcmVcL46jlFvAaqjyiTLWuMrUQO1JqV303JKB4ysXG6m8fXSFhbjal9st0r9mNskI22AraJZorb1VcLVg==",
|
|
3536
3560
|
"dev": true
|
|
3537
3561
|
},
|
|
3538
3562
|
"emoji-regex": {
|
|
@@ -3541,6 +3565,11 @@
|
|
|
3541
3565
|
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
|
3542
3566
|
"dev": true
|
|
3543
3567
|
},
|
|
3568
|
+
"enabled": {
|
|
3569
|
+
"version": "2.0.0",
|
|
3570
|
+
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
|
|
3571
|
+
"integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
|
|
3572
|
+
},
|
|
3544
3573
|
"encodeurl": {
|
|
3545
3574
|
"version": "1.0.2",
|
|
3546
3575
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
|
@@ -4095,6 +4124,11 @@
|
|
|
4095
4124
|
"pend": "~1.2.0"
|
|
4096
4125
|
}
|
|
4097
4126
|
},
|
|
4127
|
+
"fecha": {
|
|
4128
|
+
"version": "4.2.1",
|
|
4129
|
+
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
|
|
4130
|
+
"integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q=="
|
|
4131
|
+
},
|
|
4098
4132
|
"figures": {
|
|
4099
4133
|
"version": "2.0.0",
|
|
4100
4134
|
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
|
@@ -4351,6 +4385,11 @@
|
|
|
4351
4385
|
"readable-stream": "^2.3.6"
|
|
4352
4386
|
}
|
|
4353
4387
|
},
|
|
4388
|
+
"fn.name": {
|
|
4389
|
+
"version": "1.1.0",
|
|
4390
|
+
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
|
|
4391
|
+
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
|
|
4392
|
+
},
|
|
4354
4393
|
"follow-redirects": {
|
|
4355
4394
|
"version": "1.14.5",
|
|
4356
4395
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
|
|
@@ -5780,15 +5819,6 @@
|
|
|
5780
5819
|
"semver": "^6.0.0"
|
|
5781
5820
|
}
|
|
5782
5821
|
},
|
|
5783
|
-
"rimraf": {
|
|
5784
|
-
"version": "3.0.2",
|
|
5785
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
|
5786
|
-
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
|
5787
|
-
"dev": true,
|
|
5788
|
-
"requires": {
|
|
5789
|
-
"glob": "^7.1.3"
|
|
5790
|
-
}
|
|
5791
|
-
},
|
|
5792
5822
|
"semver": {
|
|
5793
5823
|
"version": "6.3.0",
|
|
5794
5824
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
|
@@ -6068,9 +6098,9 @@
|
|
|
6068
6098
|
}
|
|
6069
6099
|
},
|
|
6070
6100
|
"ws": {
|
|
6071
|
-
"version": "7.5.
|
|
6072
|
-
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.
|
|
6073
|
-
"integrity": "sha512-
|
|
6101
|
+
"version": "7.5.6",
|
|
6102
|
+
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
|
|
6103
|
+
"integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA=="
|
|
6074
6104
|
}
|
|
6075
6105
|
}
|
|
6076
6106
|
},
|
|
@@ -6200,6 +6230,11 @@
|
|
|
6200
6230
|
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
|
|
6201
6231
|
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
|
|
6202
6232
|
},
|
|
6233
|
+
"kuler": {
|
|
6234
|
+
"version": "2.0.0",
|
|
6235
|
+
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
|
|
6236
|
+
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
|
|
6237
|
+
},
|
|
6203
6238
|
"last-run": {
|
|
6204
6239
|
"version": "1.1.1",
|
|
6205
6240
|
"resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
|
|
@@ -6484,6 +6519,18 @@
|
|
|
6484
6519
|
}
|
|
6485
6520
|
}
|
|
6486
6521
|
},
|
|
6522
|
+
"logform": {
|
|
6523
|
+
"version": "2.3.0",
|
|
6524
|
+
"resolved": "https://registry.npmjs.org/logform/-/logform-2.3.0.tgz",
|
|
6525
|
+
"integrity": "sha512-graeoWUH2knKbGthMtuG1EfaSPMZFZBIrhuJHhkS5ZseFBrc7DupCzihOQAzsK/qIKPQaPJ/lFQFctILUY5ARQ==",
|
|
6526
|
+
"requires": {
|
|
6527
|
+
"colors": "^1.2.1",
|
|
6528
|
+
"fecha": "^4.2.0",
|
|
6529
|
+
"ms": "^2.1.1",
|
|
6530
|
+
"safe-stable-stringify": "^1.1.0",
|
|
6531
|
+
"triple-beam": "^1.3.0"
|
|
6532
|
+
}
|
|
6533
|
+
},
|
|
6487
6534
|
"lru-cache": {
|
|
6488
6535
|
"version": "4.1.5",
|
|
6489
6536
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
|
|
@@ -7180,32 +7227,11 @@
|
|
|
7180
7227
|
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
|
7181
7228
|
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
|
|
7182
7229
|
},
|
|
7183
|
-
"mv": {
|
|
7184
|
-
"version": "2.1.1",
|
|
7185
|
-
"resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
|
|
7186
|
-
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
|
|
7187
|
-
"optional": true,
|
|
7188
|
-
"requires": {
|
|
7189
|
-
"mkdirp": "~0.5.1",
|
|
7190
|
-
"ncp": "~2.0.0",
|
|
7191
|
-
"rimraf": "~2.4.0"
|
|
7192
|
-
},
|
|
7193
|
-
"dependencies": {
|
|
7194
|
-
"mkdirp": {
|
|
7195
|
-
"version": "0.5.5",
|
|
7196
|
-
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
|
7197
|
-
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
|
7198
|
-
"optional": true,
|
|
7199
|
-
"requires": {
|
|
7200
|
-
"minimist": "^1.2.5"
|
|
7201
|
-
}
|
|
7202
|
-
}
|
|
7203
|
-
}
|
|
7204
|
-
},
|
|
7205
7230
|
"nan": {
|
|
7206
7231
|
"version": "2.15.0",
|
|
7207
7232
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
|
|
7208
7233
|
"integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
|
|
7234
|
+
"dev": true,
|
|
7209
7235
|
"optional": true
|
|
7210
7236
|
},
|
|
7211
7237
|
"nanomatch": {
|
|
@@ -7232,12 +7258,6 @@
|
|
|
7232
7258
|
"resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz",
|
|
7233
7259
|
"integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE="
|
|
7234
7260
|
},
|
|
7235
|
-
"ncp": {
|
|
7236
|
-
"version": "2.0.0",
|
|
7237
|
-
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
|
7238
|
-
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
|
7239
|
-
"optional": true
|
|
7240
|
-
},
|
|
7241
7261
|
"negotiator": {
|
|
7242
7262
|
"version": "0.6.2",
|
|
7243
7263
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
|
@@ -10691,15 +10711,6 @@
|
|
|
10691
10711
|
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
|
|
10692
10712
|
"dev": true
|
|
10693
10713
|
},
|
|
10694
|
-
"rimraf": {
|
|
10695
|
-
"version": "3.0.2",
|
|
10696
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
|
10697
|
-
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
|
10698
|
-
"dev": true,
|
|
10699
|
-
"requires": {
|
|
10700
|
-
"glob": "^7.1.3"
|
|
10701
|
-
}
|
|
10702
|
-
},
|
|
10703
10714
|
"safe-buffer": {
|
|
10704
10715
|
"version": "5.1.2",
|
|
10705
10716
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
|
@@ -10948,6 +10959,14 @@
|
|
|
10948
10959
|
"wrappy": "1"
|
|
10949
10960
|
}
|
|
10950
10961
|
},
|
|
10962
|
+
"one-time": {
|
|
10963
|
+
"version": "1.0.0",
|
|
10964
|
+
"resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
|
|
10965
|
+
"integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
|
|
10966
|
+
"requires": {
|
|
10967
|
+
"fn.name": "1.x.x"
|
|
10968
|
+
}
|
|
10969
|
+
},
|
|
10951
10970
|
"onetime": {
|
|
10952
10971
|
"version": "2.0.1",
|
|
10953
10972
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
|
|
@@ -12101,27 +12120,11 @@
|
|
|
12101
12120
|
"integrity": "sha512-vKz+kzolWbL3rke/xeTE2+6vHmZnNxGyDnaVW4OckntAIcc7DcZzWkQSfxMDwqHS8vhgySnIFyBUH7lIk6PxvQ=="
|
|
12102
12121
|
},
|
|
12103
12122
|
"rimraf": {
|
|
12104
|
-
"version": "
|
|
12105
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-
|
|
12106
|
-
"integrity": "
|
|
12107
|
-
"optional": true,
|
|
12123
|
+
"version": "3.0.2",
|
|
12124
|
+
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
|
12125
|
+
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
|
12108
12126
|
"requires": {
|
|
12109
|
-
"glob": "^
|
|
12110
|
-
},
|
|
12111
|
-
"dependencies": {
|
|
12112
|
-
"glob": {
|
|
12113
|
-
"version": "6.0.4",
|
|
12114
|
-
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
|
|
12115
|
-
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
|
|
12116
|
-
"optional": true,
|
|
12117
|
-
"requires": {
|
|
12118
|
-
"inflight": "^1.0.4",
|
|
12119
|
-
"inherits": "2",
|
|
12120
|
-
"minimatch": "2 || 3",
|
|
12121
|
-
"once": "^1.3.0",
|
|
12122
|
-
"path-is-absolute": "^1.0.0"
|
|
12123
|
-
}
|
|
12124
|
-
}
|
|
12127
|
+
"glob": "^7.1.3"
|
|
12125
12128
|
}
|
|
12126
12129
|
},
|
|
12127
12130
|
"rox-node": {
|
|
@@ -12160,12 +12163,6 @@
|
|
|
12160
12163
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
|
12161
12164
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
|
12162
12165
|
},
|
|
12163
|
-
"safe-json-stringify": {
|
|
12164
|
-
"version": "1.2.0",
|
|
12165
|
-
"resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
|
|
12166
|
-
"integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
|
|
12167
|
-
"optional": true
|
|
12168
|
-
},
|
|
12169
12166
|
"safe-regex": {
|
|
12170
12167
|
"version": "1.1.0",
|
|
12171
12168
|
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
|
|
@@ -12175,6 +12172,11 @@
|
|
|
12175
12172
|
"ret": "~0.1.10"
|
|
12176
12173
|
}
|
|
12177
12174
|
},
|
|
12175
|
+
"safe-stable-stringify": {
|
|
12176
|
+
"version": "1.1.1",
|
|
12177
|
+
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz",
|
|
12178
|
+
"integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="
|
|
12179
|
+
},
|
|
12178
12180
|
"safer-buffer": {
|
|
12179
12181
|
"version": "2.1.2",
|
|
12180
12182
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
|
@@ -12356,6 +12358,21 @@
|
|
|
12356
12358
|
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
|
|
12357
12359
|
"integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="
|
|
12358
12360
|
},
|
|
12361
|
+
"simple-swizzle": {
|
|
12362
|
+
"version": "0.2.2",
|
|
12363
|
+
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
|
12364
|
+
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
|
|
12365
|
+
"requires": {
|
|
12366
|
+
"is-arrayish": "^0.3.1"
|
|
12367
|
+
},
|
|
12368
|
+
"dependencies": {
|
|
12369
|
+
"is-arrayish": {
|
|
12370
|
+
"version": "0.3.2",
|
|
12371
|
+
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
|
|
12372
|
+
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
|
|
12373
|
+
}
|
|
12374
|
+
}
|
|
12375
|
+
},
|
|
12359
12376
|
"sinon": {
|
|
12360
12377
|
"version": "9.0.2",
|
|
12361
12378
|
"resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.2.tgz",
|
|
@@ -12677,15 +12694,6 @@
|
|
|
12677
12694
|
"semver": "^6.0.0"
|
|
12678
12695
|
}
|
|
12679
12696
|
},
|
|
12680
|
-
"rimraf": {
|
|
12681
|
-
"version": "3.0.2",
|
|
12682
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
|
12683
|
-
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
|
12684
|
-
"dev": true,
|
|
12685
|
-
"requires": {
|
|
12686
|
-
"glob": "^7.1.3"
|
|
12687
|
-
}
|
|
12688
|
-
},
|
|
12689
12697
|
"semver": {
|
|
12690
12698
|
"version": "6.3.0",
|
|
12691
12699
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
|
@@ -12941,9 +12949,9 @@
|
|
|
12941
12949
|
},
|
|
12942
12950
|
"dependencies": {
|
|
12943
12951
|
"debug": {
|
|
12944
|
-
"version": "4.3.
|
|
12945
|
-
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.
|
|
12946
|
-
"integrity": "sha512
|
|
12952
|
+
"version": "4.3.3",
|
|
12953
|
+
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
|
|
12954
|
+
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
|
|
12947
12955
|
"requires": {
|
|
12948
12956
|
"ms": "2.1.2"
|
|
12949
12957
|
}
|
|
@@ -13061,6 +13069,11 @@
|
|
|
13061
13069
|
"minimatch": "^3.0.4"
|
|
13062
13070
|
}
|
|
13063
13071
|
},
|
|
13072
|
+
"text-hex": {
|
|
13073
|
+
"version": "1.0.0",
|
|
13074
|
+
"resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
|
|
13075
|
+
"integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
|
|
13076
|
+
},
|
|
13064
13077
|
"threads": {
|
|
13065
13078
|
"version": "0.12.0",
|
|
13066
13079
|
"resolved": "https://registry.npmjs.org/threads/-/threads-0.12.0.tgz",
|
|
@@ -13221,6 +13234,11 @@
|
|
|
13221
13234
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
|
13222
13235
|
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
|
|
13223
13236
|
},
|
|
13237
|
+
"triple-beam": {
|
|
13238
|
+
"version": "1.3.0",
|
|
13239
|
+
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
|
|
13240
|
+
"integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
|
|
13241
|
+
},
|
|
13224
13242
|
"ts-node": {
|
|
13225
13243
|
"version": "8.10.1",
|
|
13226
13244
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz",
|
|
@@ -13796,6 +13814,53 @@
|
|
|
13796
13814
|
"string-width": "^1.0.2 || 2 || 3 || 4"
|
|
13797
13815
|
}
|
|
13798
13816
|
},
|
|
13817
|
+
"winston": {
|
|
13818
|
+
"version": "3.3.3",
|
|
13819
|
+
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
|
|
13820
|
+
"integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
|
|
13821
|
+
"requires": {
|
|
13822
|
+
"@dabh/diagnostics": "^2.0.2",
|
|
13823
|
+
"async": "^3.1.0",
|
|
13824
|
+
"is-stream": "^2.0.0",
|
|
13825
|
+
"logform": "^2.2.0",
|
|
13826
|
+
"one-time": "^1.0.0",
|
|
13827
|
+
"readable-stream": "^3.4.0",
|
|
13828
|
+
"stack-trace": "0.0.x",
|
|
13829
|
+
"triple-beam": "^1.3.0",
|
|
13830
|
+
"winston-transport": "^4.4.0"
|
|
13831
|
+
},
|
|
13832
|
+
"dependencies": {
|
|
13833
|
+
"async": {
|
|
13834
|
+
"version": "3.2.2",
|
|
13835
|
+
"resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz",
|
|
13836
|
+
"integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g=="
|
|
13837
|
+
},
|
|
13838
|
+
"is-stream": {
|
|
13839
|
+
"version": "2.0.1",
|
|
13840
|
+
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
|
13841
|
+
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
|
|
13842
|
+
},
|
|
13843
|
+
"readable-stream": {
|
|
13844
|
+
"version": "3.6.0",
|
|
13845
|
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
|
13846
|
+
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
|
13847
|
+
"requires": {
|
|
13848
|
+
"inherits": "^2.0.3",
|
|
13849
|
+
"string_decoder": "^1.1.1",
|
|
13850
|
+
"util-deprecate": "^1.0.1"
|
|
13851
|
+
}
|
|
13852
|
+
}
|
|
13853
|
+
}
|
|
13854
|
+
},
|
|
13855
|
+
"winston-transport": {
|
|
13856
|
+
"version": "4.4.0",
|
|
13857
|
+
"resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
|
|
13858
|
+
"integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
|
|
13859
|
+
"requires": {
|
|
13860
|
+
"readable-stream": "^2.3.7",
|
|
13861
|
+
"triple-beam": "^1.2.0"
|
|
13862
|
+
}
|
|
13863
|
+
},
|
|
13799
13864
|
"word-wrap": {
|
|
13800
13865
|
"version": "1.2.3",
|
|
13801
13866
|
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testim/testim-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.205.0",
|
|
4
4
|
"description": "Command line interface for running Testing on your CI",
|
|
5
5
|
"author": "Oren Rubin",
|
|
6
6
|
"contributors": [{
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"bluebird": "3.7.2",
|
|
61
61
|
"bluebird-retry": "0.11.0",
|
|
62
62
|
"body-parser": "1.19.0",
|
|
63
|
-
"
|
|
64
|
-
"
|
|
63
|
+
"winston": "3.3.3",
|
|
64
|
+
"winston-transport": "4.4.0",
|
|
65
65
|
"chalk": "4.1.0",
|
|
66
66
|
"chrome-launcher": "0.13.4",
|
|
67
67
|
"combine-source-map": "0.8.0",
|
|
@@ -9,19 +9,22 @@ class PixelValidationStepAction extends StepAction {
|
|
|
9
9
|
async performAction() {
|
|
10
10
|
const { shouldUseVisualGrid, applitoolsSdkConfig: config, testResultId } = this.context;
|
|
11
11
|
this.runContext = this.context.getRunContext(undefined);
|
|
12
|
-
const
|
|
12
|
+
const batchId = (config.batch && config.batch.id) || testResultId;
|
|
13
|
+
const eyeManager = await eyeSdkService.getManager(shouldUseVisualGrid, this.context.config.applitoolsConcurrency || 5, batchId, this.runContext.applitoolsIntegrationData);
|
|
13
14
|
const targetElementData = this.getTarget() || {};
|
|
15
|
+
let result;
|
|
14
16
|
try {
|
|
15
17
|
const openedEye = await eyeManager.openEyes({ driver: this.driver.client, config });
|
|
16
18
|
const region = (this.step.action === 'element' && targetElementData.seleniumElement) || undefined;
|
|
17
19
|
await openedEye.check({ settings: { region, fully: this.step.action === 'stitched' } });
|
|
18
20
|
const eyesResults = await openedEye.close();
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
result = { isApplitoolsSdkResult: true, success: true, eyesResults };
|
|
21
23
|
} catch (err) {
|
|
22
24
|
logger.error('Applitools SDK step failed', { err, info: err.info });
|
|
23
|
-
|
|
25
|
+
result = { isApplitoolsSdkResult: true, success: false, err };
|
|
24
26
|
}
|
|
27
|
+
return await eyeSdkService.handleApplitoolsSdkResult(this.context, result);
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
30
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
// https://github.com/applitools/eyes.sdk.javascript1/blob/master/packages/eyes-webdriverio-4/src/spec-driver.ts
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
* @
|
|
2
|
+
* @typedef {typeof import('../../../../clickim/src/background/eyeSdkBuilder').EyeSdkBuilder} EyeSdkBuilder
|
|
3
|
+
* @typedef {import('@applitools/types').SpecDriver} SpecDriver
|
|
4
|
+
* @typedef {import('@applitools/types').Core} Core
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
const { EyeSdkBuilder } = require('../../commons/getSessionPlayerRequire');
|
|
7
8
|
const { makeSDK } = require('@applitools/eyes-sdk-core');
|
|
8
9
|
const { W3C_ELEMENT_ID } = require('../constants');
|
|
9
10
|
const _ = require('lodash');
|
|
@@ -31,7 +32,8 @@ function getValueOrFallbackIfNullOrUndefined(value, fallback) {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
|
-
*
|
|
35
|
+
* Applitools Spec Driver for webdriverIO 4.
|
|
36
|
+
* @see https://github.com/applitools/eyes.sdk.javascript1/blob/master/packages/eyes-webdriverio-4/src/spec-driver.ts
|
|
35
37
|
* @implements {SpecDriver}
|
|
36
38
|
*/
|
|
37
39
|
class EyesSpec {
|
|
@@ -215,20 +217,19 @@ class EyesSpec {
|
|
|
215
217
|
|
|
216
218
|
class EyeSdkService {
|
|
217
219
|
constructor() {
|
|
218
|
-
/**
|
|
219
|
-
* @typedef {import('@applitools/types').Core} Core
|
|
220
|
-
* @type {Core}
|
|
221
|
-
*/
|
|
220
|
+
/** @type {Core} */
|
|
222
221
|
this.sdk = makeSDK({
|
|
223
222
|
name: 'Testim.io',
|
|
224
223
|
version: '4.0.0',
|
|
225
224
|
spec: new EyesSpec(),
|
|
226
225
|
VisualGridClient: require('@applitools/visual-grid-client'),
|
|
227
226
|
});
|
|
227
|
+
/** @type {EyeSdkBuilder['handleApplitoolsSdkResult']} */
|
|
228
|
+
this.handleApplitoolsSdkResult = EyeSdkBuilder.handleApplitoolsSdkResult;
|
|
228
229
|
}
|
|
229
|
-
async getManager(useVisualGrid, concurrency, batchId) {
|
|
230
|
+
async getManager(useVisualGrid, concurrency, batchId, applitoolsIntegrationData) {
|
|
230
231
|
const manager = await this.sdk.makeManager({ type: useVisualGrid ? 'vg' : 'classic', concurrency });
|
|
231
|
-
|
|
232
|
+
EyeSdkBuilder.rememberCreatedBatch(batchId, applitoolsIntegrationData);
|
|
232
233
|
return manager;
|
|
233
234
|
}
|
|
234
235
|
}
|
|
@@ -19,6 +19,7 @@ const { getSuite, calcTestResultStatus, validateConfig } = require('./runnerUtil
|
|
|
19
19
|
const { StopRunOnError, ArgError } = require('../errors');
|
|
20
20
|
const Logger = require('../commons/logger');
|
|
21
21
|
const perf = require('../commons/performance-logger');
|
|
22
|
+
const featureFlags = require('../commons/featureFlags');
|
|
22
23
|
|
|
23
24
|
const guid = utils.guid;
|
|
24
25
|
const logger = Logger.getLogger('test-plan-runner');
|
|
@@ -75,6 +76,34 @@ class TestPlanRunner {
|
|
|
75
76
|
return catchBeforeTestsFailed(executionId);
|
|
76
77
|
}
|
|
77
78
|
throw err;
|
|
79
|
+
})
|
|
80
|
+
.finally(async () => {
|
|
81
|
+
if ((tpOptions.lightweightMode && tpOptions.lightweightMode.disablePixelValidation) || !featureFlags.flags.applitoolsNewIntegration.isEnabled()) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// When sessionPlayer is available, use it - as it only attempts to close batches that exist.
|
|
85
|
+
if (tpOptions.mode === constants.CLI_MODE.SELENIUM) {
|
|
86
|
+
const { EyeSdkBuilder } = require('../commons/getSessionPlayerRequire');
|
|
87
|
+
await EyeSdkBuilder.closeBatch(executionId);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
if (!tpOptions.company || !tpOptions.company.activePlan || !tpOptions.company.activePlan.premiumFeatures || !tpOptions.company.activePlan.premiumFeatures.applitools) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const applitoolsIntegrationData = await testimServicesApi.getApplitoolsIntegrationData(tpOptions.project);
|
|
95
|
+
if (_.isEmpty(applitoolsIntegrationData)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const { runKey: apiKey, url: serverUrl } = applitoolsIntegrationData;
|
|
99
|
+
const tmpSDK = require('@applitools/eyes-sdk-core').makeSDK({ name: 'Testim.io', version: '4.0.0', spec: {} });
|
|
100
|
+
await tmpSDK.closeBatches({ batchIds: [executionId], serverUrl, apiKey });
|
|
101
|
+
} catch (err) {
|
|
102
|
+
if (err.message && err.message.startsWith('Request failed with status code 404')) { // If a batch with this name did not exist, do not log an error.
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
logger.error('Failed closing batch in extension mode', { err, projectId: tpOptions.project });
|
|
106
|
+
}
|
|
78
107
|
});
|
|
79
108
|
}
|
|
80
109
|
|
package/services/gridService.js
CHANGED
|
@@ -50,13 +50,12 @@ function getSerializableObject(grid) {
|
|
|
50
50
|
(tunnel && grid.hybrid.external && grid.hybrid.external[grid.hybrid.tunnel] && grid.hybrid.external[grid.hybrid.tunnel].user) : user;
|
|
51
51
|
const tunnelKey = type === gridTypes.HYBRID ?
|
|
52
52
|
(tunnel && grid.hybrid.external && grid.hybrid.external[grid.hybrid.tunnel] && grid.hybrid.external[grid.hybrid.tunnel].key) : key;
|
|
53
|
-
const arn = (grid && grid.external && grid.external.arn) || (tunnel && grid.hybrid.external && grid.hybrid.external[grid.hybrid.tunnel] && grid.hybrid.external[grid.hybrid.tunnel].arn);
|
|
54
53
|
const name = grid && grid.name;
|
|
55
54
|
const gridId = grid && (grid._id || grid.gridId);
|
|
56
55
|
const provider = grid && grid.provider;
|
|
57
56
|
|
|
58
57
|
return {
|
|
59
|
-
host, port, path, protocol, accessToken, slotId, gridId, tunnel, user, key, type, name,
|
|
58
|
+
host, port, path, protocol, accessToken, slotId, gridId, tunnel, user, key, type, name, provider, tunnelUser, tunnelKey,
|
|
60
59
|
};
|
|
61
60
|
}
|
|
62
61
|
|
package/testRunHandler.js
CHANGED
|
@@ -237,6 +237,12 @@ TestRun.prototype.clearTestResult = function () {
|
|
|
237
237
|
if (this._options.mockNetworkRules) {
|
|
238
238
|
runData.mockNetworkRules = this._options.mockNetworkRules;
|
|
239
239
|
}
|
|
240
|
+
const mustClearPreviousStepResults = !this.isAllowReportTestResultRetries() && (this._timeoutRetryCount > 1 || this._retryCount > 1);
|
|
241
|
+
|
|
242
|
+
if (this._options.lightweightMode && this._options.lightweightMode.disableResults &&
|
|
243
|
+
!mustClearPreviousStepResults) {
|
|
244
|
+
return Promise.resolve();
|
|
245
|
+
}
|
|
240
246
|
|
|
241
247
|
this.clearTestResultFinished = testimServicesApi.uploadRunDataArtifact(this._options.project, this._testId, this._testResultId, runData)
|
|
242
248
|
.catch(err => {
|
package/workers/BaseWorker.js
CHANGED
|
@@ -90,9 +90,7 @@ class BaseWorker {
|
|
|
90
90
|
resultId: testRunHandler.getTestResultId(),
|
|
91
91
|
seleniumSession: player.getSessionId(),
|
|
92
92
|
});
|
|
93
|
-
|
|
94
|
-
return undefined;
|
|
95
|
-
}
|
|
93
|
+
|
|
96
94
|
return await testRunHandler.clearTestResult();
|
|
97
95
|
}
|
|
98
96
|
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// This is copied from coralogix-bunyan-stream pacakge and altered to expose waitForFlush
|
|
4
|
-
|
|
5
|
-
const coralogixLogger = require('@testim/coralogix-logger');
|
|
6
|
-
|
|
7
|
-
const sevMap = {
|
|
8
|
-
10: coralogixLogger.Severity.debug,
|
|
9
|
-
30: coralogixLogger.Severity.info,
|
|
10
|
-
40: coralogixLogger.Severity.warning,
|
|
11
|
-
50: coralogixLogger.Severity.error,
|
|
12
|
-
60: coralogixLogger.Severity.critical,
|
|
13
|
-
20: coralogixLogger.Severity.debug,
|
|
14
|
-
};
|
|
15
|
-
const CoralogixStream = (function () {
|
|
16
|
-
function CoralogixStream(options) {
|
|
17
|
-
if (!options) options = {};
|
|
18
|
-
CoralogixStream.logger = this.logger = new coralogixLogger.CoralogixLogger(options.category);
|
|
19
|
-
}
|
|
20
|
-
CoralogixStream.waitForFlush = function () {
|
|
21
|
-
return CoralogixStream.logger.waitForFlush();
|
|
22
|
-
};
|
|
23
|
-
CoralogixStream.prototype.write = function (rec) {
|
|
24
|
-
const log = new coralogixLogger.Log();
|
|
25
|
-
log.severity = sevMap[rec.level];
|
|
26
|
-
log.category = rec.category;
|
|
27
|
-
if (rec.className) log.className = rec.className;
|
|
28
|
-
if (rec.methodName) log.methodName = rec.methodName;
|
|
29
|
-
if (rec.threadId) log.threadId = rec.threadId;
|
|
30
|
-
log.text = this.removeStaticFields(rec);
|
|
31
|
-
this.logger.addLog(log);
|
|
32
|
-
};
|
|
33
|
-
CoralogixStream.prototype.removeStaticFields = function (json) {
|
|
34
|
-
delete json.threadId;
|
|
35
|
-
delete json.methodName;
|
|
36
|
-
delete json.className;
|
|
37
|
-
delete json.category;
|
|
38
|
-
return JSON.stringify(json, this.replaceErrors);
|
|
39
|
-
};
|
|
40
|
-
CoralogixStream.prototype.replaceErrors = function (key, value) {
|
|
41
|
-
if (value instanceof Error) {
|
|
42
|
-
const error = {};
|
|
43
|
-
Object.getOwnPropertyNames(value).forEach((key) => {
|
|
44
|
-
error[key] = value[key];
|
|
45
|
-
});
|
|
46
|
-
return error;
|
|
47
|
-
}
|
|
48
|
-
return value;
|
|
49
|
-
};
|
|
50
|
-
CoralogixStream.configure = function (config) {
|
|
51
|
-
coralogixLogger.CoralogixLogger.configure(config);
|
|
52
|
-
};
|
|
53
|
-
return CoralogixStream;
|
|
54
|
-
}());
|
|
55
|
-
|
|
56
|
-
module.exports = { CoralogixStream };
|