@wdio/sumologic-reporter 9.32.0-alpha.6 → 10.0.0-alpha.148
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/AGENTS.md +15 -0
- package/README.md +11 -0
- package/build/index.d.ts +15 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +136 -10
- package/build/types.d.ts +19 -0
- package/build/types.d.ts.map +1 -1
- package/package.json +7 -7
package/AGENTS.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @wdio/sumologic-reporter
|
|
2
|
+
|
|
3
|
+
Sends runner events to a Sumo Logic HTTP collector. Extends `@wdio/reporter`.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
pnpm run test:package wdio-sumologic-reporter
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Test ownership
|
|
10
|
+
|
|
11
|
+
Unit coverage lives in `tests/reporter.test.ts`.
|
|
12
|
+
|
|
13
|
+
- The constructor owns a missing or blank `sourceAddress`. `sync()` does not re-check it. The collector URL is fixed once the reporter is enabled. Do not assign `reporter['_options']` to reach a branch production never takes.
|
|
14
|
+
- The runner polls `isSynchronised` and does not call `sync()`. The interval must keep running after `runner:end` until the queue drains. `should stop the timer if runner ended` owns that ordering. A flush test that calls `sync()` itself still passes if the interval is cleared too early.
|
|
15
|
+
- `should start sync when reporter gets initiated` must invoke the scheduled callback. Asserting `setInterval` alone does not prove the reporter syncs.
|
package/README.md
CHANGED
|
@@ -38,6 +38,9 @@ module.exports = {
|
|
|
38
38
|
['sumologic', {
|
|
39
39
|
// define sync interval how often logs get pushed to Sumologic
|
|
40
40
|
syncInterval: 100,
|
|
41
|
+
maxRetries: 5,
|
|
42
|
+
requestTimeout: 30000,
|
|
43
|
+
shutdownTimeout: 4000,
|
|
41
44
|
// endpoint of collector source
|
|
42
45
|
sourceAddress: process.env.SUMO_SOURCE_ADDRESS
|
|
43
46
|
}]
|
|
@@ -46,6 +49,14 @@ module.exports = {
|
|
|
46
49
|
};
|
|
47
50
|
```
|
|
48
51
|
|
|
52
|
+
### Delivery behaviour
|
|
53
|
+
|
|
54
|
+
Each collector request is limited to a positive `requestTimeout` in milliseconds (default: `30000`); non-positive or invalid values use the default. Transient failures — network errors, `408`, `429`, and `5xx` responses — are retried with backoff. `maxRetries` counts retries after the initial delivery attempt and defaults to `5`. A successful batch resets the retry counter.
|
|
55
|
+
|
|
56
|
+
Other unsuccessful HTTP responses disable the reporter immediately. When its retry limit is reached, the reporter stops its timer and discards its remaining queued logs. Delivery is best effort: logs may be lost, and retries can produce duplicates if the collector accepts a request before it times out.
|
|
57
|
+
|
|
58
|
+
After `runner:end`, `shutdownTimeout` limits the total time for remaining delivery attempts (default: `4000` milliseconds). Successful batches do not reset this deadline. When it expires, the reporter aborts the active request, stops its timers, discards pending logs, and logs their count. Non-positive or invalid values use the default; positive finite values are rounded up and capped at `2147483647`. Keep `shutdownTimeout` below WebdriverIO's `reporterSyncTimeout` (default: `5000`), with enough margin for `reporterSyncInterval` polling. A longer shutdown budget may require increasing both options. The shutdown deadline may expire before all configured retries are used.
|
|
59
|
+
|
|
49
60
|
After running the first tests with the reporter you should be able to check out the tests logs with the following query:
|
|
50
61
|
|
|
51
62
|
```
|
package/build/index.d.ts
CHANGED
|
@@ -6,10 +6,17 @@ import type { Options } from './types.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export default class SumoLogicReporter extends WDIOReporter {
|
|
8
8
|
private _options;
|
|
9
|
-
private _interval
|
|
9
|
+
private _interval?;
|
|
10
|
+
private _shutdownTimer?;
|
|
11
|
+
private _requestController?;
|
|
12
|
+
private _sourceAddress;
|
|
10
13
|
private _unsynced;
|
|
11
14
|
private _isSynchronising;
|
|
15
|
+
private _isDisabled;
|
|
12
16
|
private _hasRunnerEnd;
|
|
17
|
+
private _retryAttempts;
|
|
18
|
+
private _retryDelay;
|
|
19
|
+
private _nextRetryAt;
|
|
13
20
|
constructor(options: Options);
|
|
14
21
|
get isSynchronised(): boolean;
|
|
15
22
|
onRunnerStart(runner: RunnerStats): void;
|
|
@@ -22,6 +29,13 @@ export default class SumoLogicReporter extends WDIOReporter {
|
|
|
22
29
|
onSuiteEnd(suite: SuiteStats): void;
|
|
23
30
|
onRunnerEnd(runner: RunnerStats): void;
|
|
24
31
|
sync(): Promise<void>;
|
|
32
|
+
private _isRetryableStatus;
|
|
33
|
+
private _retry;
|
|
34
|
+
private _getMaxRetries;
|
|
35
|
+
private _getRequestTimeout;
|
|
36
|
+
private _disable;
|
|
37
|
+
private _getShutdownTimeout;
|
|
38
|
+
private _stopInterval;
|
|
25
39
|
}
|
|
26
40
|
export * from './types.js';
|
|
27
41
|
declare global {
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAGzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAGzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAiCzC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAE5C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,YAAY,CAAI;gBAEZ,OAAO,EAAE,OAAO;IAqB5B,IAAI,cAAc,YAEjB;IAED,aAAa,CAAC,MAAM,EAAE,WAAW;IAYjC,YAAY,CAAC,KAAK,EAAE,UAAU;IAY9B,WAAW,CAAC,IAAI,EAAE,SAAS;IAY3B,UAAU,CAAC,IAAI,EAAE,SAAS;IAY1B,UAAU,CAAC,IAAI,EAAE,SAAS;IAY1B,UAAU,CAAC,IAAI,EAAE,SAAS;IAY1B,SAAS,CAAC,IAAI,EAAE,SAAS;IAYzB,UAAU,CAAC,KAAK,EAAE,UAAU;IAY5B,WAAW,CAAC,MAAM,EAAE,WAAW;IAkBzB,IAAI;IAoFV,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,MAAM;IAkBd,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,aAAa;CAUxB;AAED,cAAc,YAAY,CAAA;AAE1B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,cAAe,SAAQ,OAAO;SAAG;KAC9C;CACJ"}
|
package/build/index.js
CHANGED
|
@@ -4,6 +4,11 @@ import WDIOReporter from "@wdio/reporter";
|
|
|
4
4
|
import logger from "@wdio/logger";
|
|
5
5
|
var log = logger("@wdio/sumologic-reporter");
|
|
6
6
|
var MAX_LINES = 100;
|
|
7
|
+
var MAX_RETRY_DELAY = 1e3;
|
|
8
|
+
var DEFAULT_MAX_RETRIES = 5;
|
|
9
|
+
var DEFAULT_REQUEST_TIMEOUT = 3e4;
|
|
10
|
+
var DEFAULT_SHUTDOWN_TIMEOUT = 4e3;
|
|
11
|
+
var MAX_REQUEST_TIMEOUT = 2147483647;
|
|
7
12
|
function formatDate(date) {
|
|
8
13
|
const year = date.getFullYear();
|
|
9
14
|
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
@@ -22,9 +27,16 @@ function formatDate(date) {
|
|
|
22
27
|
var SumoLogicReporter = class extends WDIOReporter {
|
|
23
28
|
_options;
|
|
24
29
|
_interval;
|
|
30
|
+
_shutdownTimer;
|
|
31
|
+
_requestController;
|
|
32
|
+
_sourceAddress = "";
|
|
25
33
|
_unsynced = [];
|
|
26
34
|
_isSynchronising = false;
|
|
35
|
+
_isDisabled = false;
|
|
27
36
|
_hasRunnerEnd = false;
|
|
37
|
+
_retryAttempts = 0;
|
|
38
|
+
_retryDelay = 0;
|
|
39
|
+
_nextRetryAt = 0;
|
|
28
40
|
constructor(options) {
|
|
29
41
|
super(options);
|
|
30
42
|
this._options = Object.assign({
|
|
@@ -35,16 +47,21 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
35
47
|
// endpoint of collector source
|
|
36
48
|
sourceAddress: process.env.SUMO_SOURCE_ADDRESS
|
|
37
49
|
}, options);
|
|
38
|
-
if (typeof this._options.sourceAddress !== "string") {
|
|
39
|
-
|
|
50
|
+
if (typeof this._options.sourceAddress !== "string" || this._options.sourceAddress.trim() === "") {
|
|
51
|
+
this._disable('Sumo Logic reporter disabled: a non-empty "sourceAddress" is required');
|
|
52
|
+
return;
|
|
40
53
|
}
|
|
54
|
+
this._sourceAddress = this._options.sourceAddress;
|
|
41
55
|
this._interval = global.setInterval(this.sync.bind(this), this._options.syncInterval);
|
|
42
56
|
}
|
|
43
57
|
// @ts-ignore
|
|
44
58
|
get isSynchronised() {
|
|
45
|
-
return this._unsynced.length === 0;
|
|
59
|
+
return this._isDisabled || this._unsynced.length === 0;
|
|
46
60
|
}
|
|
47
61
|
onRunnerStart(runner) {
|
|
62
|
+
if (this._isDisabled) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
48
65
|
this._unsynced.push(stringify({
|
|
49
66
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
50
67
|
event: "runner:start",
|
|
@@ -52,6 +69,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
52
69
|
}));
|
|
53
70
|
}
|
|
54
71
|
onSuiteStart(suite) {
|
|
72
|
+
if (this._isDisabled) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
55
75
|
this._unsynced.push(stringify({
|
|
56
76
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
57
77
|
event: "suite:start",
|
|
@@ -59,6 +79,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
59
79
|
}));
|
|
60
80
|
}
|
|
61
81
|
onTestStart(test) {
|
|
82
|
+
if (this._isDisabled) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
62
85
|
this._unsynced.push(stringify({
|
|
63
86
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
64
87
|
event: "test:start",
|
|
@@ -66,6 +89,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
66
89
|
}));
|
|
67
90
|
}
|
|
68
91
|
onTestSkip(test) {
|
|
92
|
+
if (this._isDisabled) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
69
95
|
this._unsynced.push(stringify({
|
|
70
96
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
71
97
|
event: "test:skip",
|
|
@@ -73,6 +99,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
73
99
|
}));
|
|
74
100
|
}
|
|
75
101
|
onTestPass(test) {
|
|
102
|
+
if (this._isDisabled) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
76
105
|
this._unsynced.push(stringify({
|
|
77
106
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
78
107
|
event: "test:pass",
|
|
@@ -80,6 +109,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
80
109
|
}));
|
|
81
110
|
}
|
|
82
111
|
onTestFail(test) {
|
|
112
|
+
if (this._isDisabled) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
83
115
|
this._unsynced.push(stringify({
|
|
84
116
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
85
117
|
event: "test:fail",
|
|
@@ -87,6 +119,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
87
119
|
}));
|
|
88
120
|
}
|
|
89
121
|
onTestEnd(test) {
|
|
122
|
+
if (this._isDisabled) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
90
125
|
this._unsynced.push(stringify({
|
|
91
126
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
92
127
|
event: "test:end",
|
|
@@ -94,6 +129,9 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
94
129
|
}));
|
|
95
130
|
}
|
|
96
131
|
onSuiteEnd(suite) {
|
|
132
|
+
if (this._isDisabled) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
97
135
|
this._unsynced.push(stringify({
|
|
98
136
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
99
137
|
event: "suite:end",
|
|
@@ -102,32 +140,120 @@ var SumoLogicReporter = class extends WDIOReporter {
|
|
|
102
140
|
}
|
|
103
141
|
onRunnerEnd(runner) {
|
|
104
142
|
this._hasRunnerEnd = true;
|
|
143
|
+
if (this._isDisabled) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
105
146
|
this._unsynced.push(stringify({
|
|
106
147
|
time: formatDate(/* @__PURE__ */ new Date()),
|
|
107
148
|
event: "runner:end",
|
|
108
149
|
data: runner
|
|
109
150
|
}));
|
|
151
|
+
if (!this._shutdownTimer) {
|
|
152
|
+
this._shutdownTimer = setTimeout(() => {
|
|
153
|
+
this._disable(`Sumo Logic reporter shutdown timeout reached; discarding ${this._unsynced.length} queued events`);
|
|
154
|
+
}, this._getShutdownTimeout());
|
|
155
|
+
}
|
|
110
156
|
}
|
|
111
157
|
async sync() {
|
|
158
|
+
if (this._isDisabled) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
112
161
|
if (this._hasRunnerEnd && this._unsynced.length === 0) {
|
|
113
|
-
|
|
162
|
+
this._stopInterval();
|
|
163
|
+
return;
|
|
114
164
|
}
|
|
115
|
-
if (this._isSynchronising || this._unsynced.length === 0 ||
|
|
165
|
+
if (this._isSynchronising || this._unsynced.length === 0 || Date.now() < this._nextRetryAt) {
|
|
116
166
|
return;
|
|
117
167
|
}
|
|
118
168
|
const logLines = this._unsynced.slice(0, MAX_LINES).join("\n");
|
|
119
169
|
this._isSynchronising = true;
|
|
120
170
|
log.debug("start synchronization");
|
|
171
|
+
const controller = new AbortController();
|
|
172
|
+
this._requestController = controller;
|
|
173
|
+
const requestTimer = setTimeout(() => controller.abort(), this._getRequestTimeout());
|
|
121
174
|
try {
|
|
122
|
-
const resp = await fetch(this.
|
|
175
|
+
const resp = await fetch(this._sourceAddress, {
|
|
123
176
|
method: "POST",
|
|
124
|
-
body: JSON.stringify(logLines)
|
|
177
|
+
body: JSON.stringify(logLines),
|
|
178
|
+
signal: controller.signal
|
|
125
179
|
});
|
|
180
|
+
if (this._isDisabled) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (!resp.ok) {
|
|
184
|
+
if (!this._isRetryableStatus(resp.status)) {
|
|
185
|
+
this._disable(`failed to send data to Sumo Logic (HTTP ${resp.status}); disabling reporter`);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this._retry(resp.status);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
this._retryAttempts = 0;
|
|
192
|
+
this._retryDelay = 0;
|
|
193
|
+
this._nextRetryAt = 0;
|
|
126
194
|
this._unsynced.splice(0, MAX_LINES);
|
|
127
|
-
this.
|
|
195
|
+
if (this._hasRunnerEnd && this._unsynced.length === 0) {
|
|
196
|
+
this._stopInterval();
|
|
197
|
+
}
|
|
128
198
|
return log.debug(`synchronised collector data, server status: ${resp.status}`);
|
|
129
|
-
} catch
|
|
130
|
-
|
|
199
|
+
} catch {
|
|
200
|
+
if (!this._isDisabled) {
|
|
201
|
+
this._retry();
|
|
202
|
+
}
|
|
203
|
+
} finally {
|
|
204
|
+
clearTimeout(requestTimer);
|
|
205
|
+
controller.abort();
|
|
206
|
+
this._requestController = void 0;
|
|
207
|
+
this._isSynchronising = false;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
_isRetryableStatus(status) {
|
|
211
|
+
return status === 408 || status === 429 || status >= 500 && status <= 599;
|
|
212
|
+
}
|
|
213
|
+
_retry(status) {
|
|
214
|
+
const maxRetries = this._getMaxRetries();
|
|
215
|
+
if (this._retryAttempts >= maxRetries) {
|
|
216
|
+
const statusMessage2 = status === void 0 ? "" : ` (HTTP ${status})`;
|
|
217
|
+
this._disable(`failed to send data to Sumo Logic${statusMessage2}; retry limit of ${maxRetries} reached, disabling reporter`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
this._retryAttempts++;
|
|
221
|
+
this._retryDelay = Math.min(
|
|
222
|
+
Math.max(this._options.syncInterval ?? 100, this._retryDelay * 2),
|
|
223
|
+
MAX_RETRY_DELAY
|
|
224
|
+
);
|
|
225
|
+
this._nextRetryAt = Date.now() + this._retryDelay;
|
|
226
|
+
const statusMessage = status === void 0 ? "" : ` (HTTP ${status})`;
|
|
227
|
+
log.error(`failed to send data to Sumo Logic${statusMessage}; retrying (${this._retryAttempts}/${maxRetries})`);
|
|
228
|
+
}
|
|
229
|
+
_getMaxRetries() {
|
|
230
|
+
const { maxRetries } = this._options;
|
|
231
|
+
return typeof maxRetries === "number" && Number.isFinite(maxRetries) && maxRetries >= 0 ? Math.floor(maxRetries) : DEFAULT_MAX_RETRIES;
|
|
232
|
+
}
|
|
233
|
+
_getRequestTimeout() {
|
|
234
|
+
const { requestTimeout } = this._options;
|
|
235
|
+
return typeof requestTimeout === "number" && Number.isFinite(requestTimeout) && requestTimeout > 0 ? Math.min(Math.ceil(requestTimeout), MAX_REQUEST_TIMEOUT) : DEFAULT_REQUEST_TIMEOUT;
|
|
236
|
+
}
|
|
237
|
+
_disable(message) {
|
|
238
|
+
this._isDisabled = true;
|
|
239
|
+
this._unsynced = [];
|
|
240
|
+
this._nextRetryAt = 0;
|
|
241
|
+
this._stopInterval();
|
|
242
|
+
this._requestController?.abort();
|
|
243
|
+
log.error(message);
|
|
244
|
+
}
|
|
245
|
+
_getShutdownTimeout() {
|
|
246
|
+
const { shutdownTimeout } = this._options;
|
|
247
|
+
return typeof shutdownTimeout === "number" && Number.isFinite(shutdownTimeout) && shutdownTimeout > 0 ? Math.min(Math.ceil(shutdownTimeout), MAX_REQUEST_TIMEOUT) : DEFAULT_SHUTDOWN_TIMEOUT;
|
|
248
|
+
}
|
|
249
|
+
_stopInterval() {
|
|
250
|
+
if (this._shutdownTimer) {
|
|
251
|
+
clearTimeout(this._shutdownTimer);
|
|
252
|
+
this._shutdownTimer = void 0;
|
|
253
|
+
}
|
|
254
|
+
if (this._interval) {
|
|
255
|
+
clearInterval(this._interval);
|
|
256
|
+
this._interval = void 0;
|
|
131
257
|
}
|
|
132
258
|
}
|
|
133
259
|
};
|
package/build/types.d.ts
CHANGED
|
@@ -5,6 +5,25 @@ export interface Options extends Partial<Reporters.Options> {
|
|
|
5
5
|
* @default 100
|
|
6
6
|
*/
|
|
7
7
|
syncInterval?: number;
|
|
8
|
+
/**
|
|
9
|
+
* maximum number of retries after the initial delivery attempt
|
|
10
|
+
* non-negative finite values are rounded down; all other values use the default
|
|
11
|
+
* @default 5
|
|
12
|
+
*/
|
|
13
|
+
maxRetries?: number;
|
|
14
|
+
/**
|
|
15
|
+
* maximum time in milliseconds to wait for a collector response
|
|
16
|
+
* positive finite values are rounded up and capped at 2147483647; all other values use the default
|
|
17
|
+
* @default 30000
|
|
18
|
+
*/
|
|
19
|
+
requestTimeout?: number;
|
|
20
|
+
/**
|
|
21
|
+
* total time in milliseconds to flush queued events after runner:end, including requests and retries
|
|
22
|
+
* keep below WebdriverIO's reporterSyncTimeout, allowing time for its polling interval
|
|
23
|
+
* positive finite values are rounded up and capped at 2147483647; all other values use the default
|
|
24
|
+
* @default 4000
|
|
25
|
+
*/
|
|
26
|
+
shutdownTimeout?: number;
|
|
8
27
|
/**
|
|
9
28
|
* endpoint of collector source
|
|
10
29
|
* @default
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,OAAQ,SAAQ,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IACvD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,OAAQ,SAAQ,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IACvD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/sumologic-reporter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0-alpha.148+3a926c3d0",
|
|
4
4
|
"description": "A WebdriverIO reporter that sends test results to Sumologic for data analyses",
|
|
5
5
|
"author": "Christian Bromann <mail@bromann.dev>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-sumologic-reporter",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"engines": {
|
|
9
|
-
"node": ">=
|
|
9
|
+
"node": ">=22.19.0"
|
|
10
10
|
},
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"import": "./build/index.js"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
|
-
"typeScriptVersion": "
|
|
33
|
+
"typeScriptVersion": "6.0.3",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@wdio/logger": "
|
|
36
|
-
"@wdio/reporter": "
|
|
37
|
-
"@wdio/types": "
|
|
35
|
+
"@wdio/logger": "10.0.0-alpha.148+3a926c3d0",
|
|
36
|
+
"@wdio/reporter": "10.0.0-alpha.148+3a926c3d0",
|
|
37
|
+
"@wdio/types": "10.0.0-alpha.148+3a926c3d0",
|
|
38
38
|
"json-stringify-safe": "^5.0.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "3a926c3d08dafa93c92021b2892341709d74968a"
|
|
47
47
|
}
|