checkly 4.0.2 → 4.0.4
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/README.md +3 -2
- package/dist/commands/test.d.ts +1 -0
- package/dist/commands/test.js +22 -4
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/trigger.js +7 -2
- package/dist/commands/trigger.js.map +1 -1
- package/dist/constructs/check-group.d.ts +5 -1
- package/dist/constructs/check-group.js +2 -0
- package/dist/constructs/check-group.js.map +1 -1
- package/dist/reporters/abstract-list.d.ts +3 -3
- package/dist/reporters/abstract-list.js +10 -3
- package/dist/reporters/abstract-list.js.map +1 -1
- package/dist/reporters/ci.d.ts +0 -1
- package/dist/reporters/ci.js +0 -4
- package/dist/reporters/ci.js.map +1 -1
- package/dist/reporters/dot.d.ts +0 -1
- package/dist/reporters/dot.js +1 -4
- package/dist/reporters/dot.js.map +1 -1
- package/dist/reporters/github.d.ts +0 -1
- package/dist/reporters/github.js +3 -14
- package/dist/reporters/github.js.map +1 -1
- package/dist/reporters/list.d.ts +2 -2
- package/dist/reporters/list.js +9 -14
- package/dist/reporters/list.js.map +1 -1
- package/dist/reporters/reporter.d.ts +2 -2
- package/dist/reporters/reporter.js.map +1 -1
- package/dist/rest/api.js +1 -16
- package/dist/rest/api.js.map +1 -1
- package/dist/rest/test-sessions.d.ts +10 -0
- package/dist/rest/test-sessions.js +6 -0
- package/dist/rest/test-sessions.js.map +1 -1
- package/dist/services/abstract-check-runner.d.ts +7 -2
- package/dist/services/abstract-check-runner.js +23 -20
- package/dist/services/abstract-check-runner.js.map +1 -1
- package/dist/services/config.d.ts +2 -1
- package/dist/services/config.js +13 -3
- package/dist/services/config.js.map +1 -1
- package/dist/services/socket-client.js.map +1 -1
- package/dist/services/trigger-runner.d.ts +2 -0
- package/dist/services/trigger-runner.js +14 -2
- package/dist/services/trigger-runner.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +5 -2
package/dist/rest/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/rest/api.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,+CAAuC;AACvC,yCAAiC;AACjC,mCAA2B;AAC3B,yCAAiC;AACjC,qCAA6B;AAC7B,yCAAiC;AACjC,2DAAkD;AAClD,2CAAmC;AACnC,mDAA0C;AAC1C,mEAA0D;AAE1D,SAAgB,WAAW;IACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/rest/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,10 +38,20 @@ type TriggerTestSessionRequest = {
|
|
|
38
38
|
repoInfo: GitInformation | null;
|
|
39
39
|
environment: string | null;
|
|
40
40
|
};
|
|
41
|
+
export type TestResultsShortLinks = {
|
|
42
|
+
testResultLink: string;
|
|
43
|
+
testTraceLinks: string[];
|
|
44
|
+
videoLinks: string[];
|
|
45
|
+
screenshotLinks: string[];
|
|
46
|
+
};
|
|
41
47
|
declare class TestSessions {
|
|
42
48
|
api: AxiosInstance;
|
|
43
49
|
constructor(api: AxiosInstance);
|
|
44
50
|
run(payload: RunTestSessionRequest): Promise<import("axios").AxiosResponse<any, any>>;
|
|
45
51
|
trigger(payload: TriggerTestSessionRequest): Promise<import("axios").AxiosResponse<any, any>>;
|
|
52
|
+
getShortLink(id: string): Promise<import("axios").AxiosResponse<{
|
|
53
|
+
link: string;
|
|
54
|
+
}, any>>;
|
|
55
|
+
getResultShortLinks(testSessionId: string, testResultId: string): Promise<import("axios").AxiosResponse<TestResultsShortLinks, any>>;
|
|
46
56
|
}
|
|
47
57
|
export default TestSessions;
|
|
@@ -10,6 +10,12 @@ class TestSessions {
|
|
|
10
10
|
trigger(payload) {
|
|
11
11
|
return this.api.post('/next/test-sessions/trigger', payload);
|
|
12
12
|
}
|
|
13
|
+
getShortLink(id) {
|
|
14
|
+
return this.api.get(`/next/test-sessions/${id}/link`);
|
|
15
|
+
}
|
|
16
|
+
getResultShortLinks(testSessionId, testResultId) {
|
|
17
|
+
return this.api.get(`/next/test-sessions/${testSessionId}/results/${testResultId}/links`);
|
|
18
|
+
}
|
|
13
19
|
}
|
|
14
20
|
exports.default = TestSessions;
|
|
15
21
|
//# sourceMappingURL=test-sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-sessions.js","sourceRoot":"","sources":["../../src/rest/test-sessions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"test-sessions.js","sourceRoot":"","sources":["../../src/rest/test-sessions.ts"],"names":[],"mappings":";;AA+BA,MAAM,YAAY;IAEhB,YAAa,GAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,GAAG,CAAE,OAA8B;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,CAAE,OAAkC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAED,YAAY,CAAE,EAAU;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAmB,uBAAuB,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,mBAAmB,CAAE,aAAqB,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAwB,uBAAuB,aAAa,YAAY,YAAY,QAAQ,CAAC,CAAA;IAClH,CAAC;CACF;AAED,kBAAe,YAAY,CAAA"}
|
|
@@ -25,7 +25,11 @@ export type PublicRunLocation = {
|
|
|
25
25
|
export type RunLocation = PublicRunLocation | PrivateRunLocation;
|
|
26
26
|
export type CheckRunId = string;
|
|
27
27
|
export default abstract class AbstractCheckRunner extends EventEmitter {
|
|
28
|
-
checks
|
|
28
|
+
checks: Map<CheckRunId, {
|
|
29
|
+
check: any;
|
|
30
|
+
testResultId?: string;
|
|
31
|
+
}>;
|
|
32
|
+
testSessionId?: string;
|
|
29
33
|
timeouts: Map<CheckRunId, NodeJS.Timeout>;
|
|
30
34
|
accountId: string;
|
|
31
35
|
timeout: number;
|
|
@@ -37,7 +41,7 @@ export default abstract class AbstractCheckRunner extends EventEmitter {
|
|
|
37
41
|
checks: Array<{
|
|
38
42
|
check: any;
|
|
39
43
|
checkRunId: CheckRunId;
|
|
40
|
-
|
|
44
|
+
testResultId?: string;
|
|
41
45
|
}>;
|
|
42
46
|
}>;
|
|
43
47
|
run(): Promise<void>;
|
|
@@ -47,4 +51,5 @@ export default abstract class AbstractCheckRunner extends EventEmitter {
|
|
|
47
51
|
private setAllTimeouts;
|
|
48
52
|
private disableAllTimeouts;
|
|
49
53
|
private disableTimeout;
|
|
54
|
+
private getShortLinks;
|
|
50
55
|
}
|
|
@@ -21,6 +21,7 @@ var Events;
|
|
|
21
21
|
class AbstractCheckRunner extends node_events_1.EventEmitter {
|
|
22
22
|
constructor(accountId, timeout, verbose) {
|
|
23
23
|
super();
|
|
24
|
+
this.checks = new Map();
|
|
24
25
|
this.timeouts = new Map();
|
|
25
26
|
this.queue = new p_queue_1.default({ autoStart: false, concurrency: 1 });
|
|
26
27
|
this.timeout = timeout;
|
|
@@ -35,7 +36,8 @@ class AbstractCheckRunner extends node_events_1.EventEmitter {
|
|
|
35
36
|
// Configure the socket listener and allChecksFinished listener before starting checks to avoid race conditions
|
|
36
37
|
await this.configureResultListener(checkRunSuiteId, socketClient);
|
|
37
38
|
const { testSessionId, checks } = await this.scheduleChecks(checkRunSuiteId);
|
|
38
|
-
this.
|
|
39
|
+
this.testSessionId = testSessionId;
|
|
40
|
+
this.checks = new Map(checks.map(({ check, checkRunId, testResultId }) => [checkRunId, { check, testResultId }]));
|
|
39
41
|
// `processMessage()` assumes that `this.timeouts` always has an entry for non-timed-out checks.
|
|
40
42
|
// To ensure that this is the case, we call `setAllTimeouts()` before `queue.start()`.
|
|
41
43
|
// Otherwise, we risk a race condition where check results are received before the timeout is set.
|
|
@@ -76,36 +78,26 @@ class AbstractCheckRunner extends node_events_1.EventEmitter {
|
|
|
76
78
|
// The check has already timed out. We return early to avoid reporting a duplicate result.
|
|
77
79
|
return;
|
|
78
80
|
}
|
|
79
|
-
|
|
81
|
+
if (!this.checks.get(checkRunId)) {
|
|
82
|
+
// The check has no checkRunId associated.
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const { check, testResultId } = this.checks.get(checkRunId);
|
|
80
86
|
if (subtopic === 'run-start') {
|
|
81
87
|
this.emit(Events.CHECK_INPROGRESS, check);
|
|
82
88
|
}
|
|
83
89
|
else if (subtopic === 'run-end') {
|
|
84
90
|
this.disableTimeout(checkRunId);
|
|
85
91
|
const { result } = message;
|
|
86
|
-
const { region, logPath, checkRunDataPath,
|
|
92
|
+
const { region, logPath, checkRunDataPath, } = result.assets;
|
|
87
93
|
if (logPath && (this.verbose || result.hasFailures)) {
|
|
88
94
|
result.logs = await api_1.assets.getLogs(region, logPath);
|
|
89
95
|
}
|
|
90
96
|
if (checkRunDataPath && (this.verbose || result.hasFailures)) {
|
|
91
97
|
result.checkRunData = await api_1.assets.getCheckRunData(region, checkRunDataPath);
|
|
92
98
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (playwrightTestTraceFiles && playwrightTestTraceFiles.length) {
|
|
96
|
-
result.traceFilesUrls = await Promise
|
|
97
|
-
.all(playwrightTestTraceFiles.map((t) => api_1.assets.getAssetsLink(region, t)));
|
|
98
|
-
}
|
|
99
|
-
if (playwrightTestVideoFiles && playwrightTestVideoFiles.length) {
|
|
100
|
-
result.videoFilesUrls = await Promise
|
|
101
|
-
.all(playwrightTestVideoFiles.map((t) => api_1.assets.getAssetsLink(region, t)));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
// TODO: remove the try/catch after deploy endpoint to fetch assets link
|
|
107
|
-
}
|
|
108
|
-
this.emit(Events.CHECK_SUCCESSFUL, checkRunId, check, result);
|
|
99
|
+
const links = testResultId && result.hasFailures && await this.getShortLinks(testResultId);
|
|
100
|
+
this.emit(Events.CHECK_SUCCESSFUL, checkRunId, check, result, links);
|
|
109
101
|
this.emit(Events.CHECK_FINISHED, check);
|
|
110
102
|
}
|
|
111
103
|
else if (subtopic === 'error') {
|
|
@@ -129,7 +121,7 @@ class AbstractCheckRunner extends node_events_1.EventEmitter {
|
|
|
129
121
|
});
|
|
130
122
|
}
|
|
131
123
|
setAllTimeouts() {
|
|
132
|
-
Array.from(this.checks.entries()).forEach(([checkRunId, check]) => this.timeouts.set(checkRunId, setTimeout(() => {
|
|
124
|
+
Array.from(this.checks.entries()).forEach(([checkRunId, { check }]) => this.timeouts.set(checkRunId, setTimeout(() => {
|
|
133
125
|
this.timeouts.delete(checkRunId);
|
|
134
126
|
this.emit(Events.CHECK_FAILED, check, `Reached timeout of ${this.timeout} seconds waiting for check result.`);
|
|
135
127
|
this.emit(Events.CHECK_FINISHED, check);
|
|
@@ -146,6 +138,17 @@ class AbstractCheckRunner extends node_events_1.EventEmitter {
|
|
|
146
138
|
clearTimeout(timeout);
|
|
147
139
|
this.timeouts.delete(checkRunId);
|
|
148
140
|
}
|
|
141
|
+
async getShortLinks(testResultId) {
|
|
142
|
+
try {
|
|
143
|
+
if (!this.testSessionId) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const { data: links } = await api_1.testSessions.getResultShortLinks(this.testSessionId, testResultId);
|
|
147
|
+
return links;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
}
|
|
151
|
+
}
|
|
149
152
|
}
|
|
150
153
|
exports.default = AbstractCheckRunner;
|
|
151
154
|
//# sourceMappingURL=abstract-check-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-check-runner.js","sourceRoot":"","sources":["../../src/services/abstract-check-runner.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"abstract-check-runner.js","sourceRoot":"","sources":["../../src/services/abstract-check-runner.ts"],"names":[],"mappings":";;;AAAA,qCAAkD;AAClD,mDAA8C;AAC9C,qCAA4B;AAC5B,6BAA4B;AAC5B,6CAA0C;AAK1C,gDAAgD;AAChD,IAAY,MASX;AATD,WAAY,MAAM;IAChB,+CAAqC,CAAA;IACrC,+CAAqC,CAAA;IACrC,uCAA6B,CAAA;IAC7B,+CAAqC,CAAA;IACrC,2CAAiC,CAAA;IACjC,qCAA2B,CAAA;IAC3B,uCAA6B,CAAA;IAC7B,yBAAe,CAAA;AACjB,CAAC,EATW,MAAM,GAAN,cAAM,KAAN,cAAM,QASjB;AAeD,MAA8B,mBAAoB,SAAQ,0BAAY;IAWpE,YACE,SAAiB,EACjB,OAAe,EACf,OAAgB;QAEhB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAQD,KAAK,CAAC,GAAG;QACP,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,IAAI;YACF,YAAY,GAAG,MAAM,4BAAY,CAAC,OAAO,EAAE,CAAA;YAE3C,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YACjC,+GAA+G;YAC/G,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YAEjE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;YAC5E,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAC3F,CAAA;YAED,gGAAgG;YAChG,sFAAsF;YACtF,kGAAkG;YAClG,0GAA0G;YAC1G,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,4FAA4F;YAC5F,0GAA0G;YAC1G,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;YAClD,6FAA6F;YAC7F,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAClB,2DAA2D;YAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;YAEpD,MAAM,iBAAiB,CAAA;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;SAC9C;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAC7B;gBAAS;YACR,IAAI,YAAY,EAAE;gBAChB,MAAM,YAAY,CAAC,GAAG,EAAE,CAAA;aACzB;SACF;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAE,eAAuB,EAAE,YAA6B;QAC3F,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAa,EAAE,UAAyB,EAAE,EAAE;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YACvD,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;YAEnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;QACF,MAAM,YAAY,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,SAAS,yBAAyB,eAAe,MAAM,CAAC,CAAA;IACvG,CAAC;IAEO,KAAK,CAAC,cAAc,CAAE,UAAkB,EAAE,QAAgB,EAAE,OAAY;QAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAClC,0FAA0F;YAC1F,OAAM;SACP;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAChC,0CAA0C;YAC1C,OAAM;SACP;QAED,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;QAC5D,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;SAC1C;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;YAC1B,MAAM,EACJ,MAAM,EACN,OAAO,EACP,gBAAgB,GACjB,GAAG,MAAM,CAAC,MAAM,CAAA;YACjB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;gBACnD,MAAM,CAAC,IAAI,GAAG,MAAM,YAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aACpD;YACD,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;gBAC5D,MAAM,CAAC,YAAY,GAAG,MAAM,YAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;aAC7E;YAED,MAAM,KAAK,GAAG,YAAY,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;YAE1F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YACpE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;SACxC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;SACxC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,kBAAkB,GAAG,CAAC,CAAA;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;QAClC,IAAI,SAAS,KAAK,CAAC,EAAE;YACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;SACzB;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE;gBAClC,kBAAkB,EAAE,CAAA;gBACpB,IAAI,kBAAkB,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc;QACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CACpE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE;YAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,sBAAsB,IAAI,CAAC,OAAO,oCAAoC,CAAC,CAAA;YAC7G,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QACzC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CACtB,CAAC,CAAA;IACN,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAM;SACP;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9F,CAAC;IAEO,cAAc,CAAE,UAAkB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC7C,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAE,YAAoB;QAC/C,IAAI;YACF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,OAAM;aACP;YACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;YAChG,OAAO,KAAK,CAAA;SACb;QAAC,MAAM;SACP;IACH,CAAC;CACF;AA1KD,sCA0KC"}
|
|
@@ -18,7 +18,8 @@ declare const config: {
|
|
|
18
18
|
getApiKey(): string;
|
|
19
19
|
getAccountId(): string;
|
|
20
20
|
hasEnvVarsConfigured(): boolean;
|
|
21
|
-
|
|
21
|
+
getApiUrl(): string;
|
|
22
|
+
getMqttUrl(): string;
|
|
22
23
|
hasValidCredentials(): boolean;
|
|
23
24
|
};
|
|
24
25
|
export default config;
|
package/dist/services/config.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
const conf_1 = require("conf");
|
|
4
5
|
const dataSchema = {
|
|
@@ -8,7 +9,7 @@ const dataSchema = {
|
|
|
8
9
|
const authSchema = {
|
|
9
10
|
apiKey: { type: 'string' },
|
|
10
11
|
};
|
|
11
|
-
const projectSuffix = process.env.
|
|
12
|
+
const projectSuffix = (_a = process.env.CHECKLY_ENV) !== null && _a !== void 0 ? _a : '';
|
|
12
13
|
// eslint-disable-next-line no-restricted-syntax
|
|
13
14
|
var Env;
|
|
14
15
|
(function (Env) {
|
|
@@ -38,9 +39,9 @@ const config = {
|
|
|
38
39
|
},
|
|
39
40
|
getEnv() {
|
|
40
41
|
const environments = ['production', 'staging', 'development', 'test'];
|
|
41
|
-
const env = process.env.
|
|
42
|
+
const env = process.env.CHECKLY_ENV || environments[0];
|
|
42
43
|
if (!(env in Env)) {
|
|
43
|
-
throw new Error('Invalid
|
|
44
|
+
throw new Error('Invalid CHECKLY_ENV');
|
|
44
45
|
}
|
|
45
46
|
return env;
|
|
46
47
|
},
|
|
@@ -55,6 +56,15 @@ const config = {
|
|
|
55
56
|
const accoundId = process.env.CHECKLY_ACCOUNT_ID || '';
|
|
56
57
|
return apiKey !== '' || accoundId !== '';
|
|
57
58
|
},
|
|
59
|
+
getApiUrl() {
|
|
60
|
+
const environments = {
|
|
61
|
+
development: 'http://localhost:3000',
|
|
62
|
+
test: 'https://api-test.checklyhq.com',
|
|
63
|
+
staging: 'https://api-test.checklyhq.com',
|
|
64
|
+
production: 'https://api.checklyhq.com',
|
|
65
|
+
};
|
|
66
|
+
return environments[this.getEnv()];
|
|
67
|
+
},
|
|
58
68
|
getMqttUrl() {
|
|
59
69
|
const environments = {
|
|
60
70
|
development: 'wss://events-local.checklyhq.com',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/services/socket-client.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,+CAAuC;AAEvC,MAAa,YAAY;IACvB,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,gBAAM,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/services/socket-client.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,+CAAuC;AAEvC,MAAa,YAAY;IACvB,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,gBAAM,CAAC,UAAU,EAAE,CAAA;QAC/B,MAAM,SAAS,GAAG,gBAAM,CAAC,YAAY,EAAE,CAAA;QACvC,MAAM,MAAM,GAAG,gBAAM,CAAC,SAAS,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG;YACd,eAAe,EAAE,CAAC;YAClB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,MAAM;SACjB,CAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,kCAAkC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;CACF;AAZD,oCAYC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import AbstractCheckRunner, { RunLocation, CheckRunId } from './abstract-check-runner';
|
|
2
2
|
import { GitInformation } from './util';
|
|
3
|
+
export declare class NoMatchingChecksError extends Error {
|
|
4
|
+
}
|
|
3
5
|
export default class TriggerRunner extends AbstractCheckRunner {
|
|
4
6
|
shouldRecord: boolean;
|
|
5
7
|
location: RunLocation;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoMatchingChecksError = void 0;
|
|
3
4
|
const api_1 = require("../rest/api");
|
|
4
5
|
const abstract_check_runner_1 = require("./abstract-check-runner");
|
|
6
|
+
class NoMatchingChecksError extends Error {
|
|
7
|
+
}
|
|
8
|
+
exports.NoMatchingChecksError = NoMatchingChecksError;
|
|
5
9
|
class TriggerRunner extends abstract_check_runner_1.default {
|
|
6
10
|
constructor(accountId, timeout, verbose, shouldRecord, location, targetTags, envVars, repoInfo, environment, testSessionName) {
|
|
7
11
|
super(accountId, timeout, verbose);
|
|
@@ -14,7 +18,7 @@ class TriggerRunner extends abstract_check_runner_1.default {
|
|
|
14
18
|
this.testSessionName = testSessionName;
|
|
15
19
|
}
|
|
16
20
|
async scheduleChecks(checkRunSuiteId) {
|
|
17
|
-
var _a, _b, _c, _d;
|
|
21
|
+
var _a, _b, _c, _d, _e, _f;
|
|
18
22
|
try {
|
|
19
23
|
const { data } = await api_1.testSessions.trigger({
|
|
20
24
|
name: (_a = this.testSessionName) !== null && _a !== void 0 ? _a : 'Triggered Session',
|
|
@@ -27,6 +31,11 @@ class TriggerRunner extends abstract_check_runner_1.default {
|
|
|
27
31
|
environment: this.environment,
|
|
28
32
|
});
|
|
29
33
|
const { checks, checkRunIds, testSessionId, testResultIds, } = data;
|
|
34
|
+
if (!checks.length) {
|
|
35
|
+
// Currently the BE will never return an empty `checks` array, it returns a 403 instead.
|
|
36
|
+
// This is added to make the old CLI versions compatible if we ever change this, though.
|
|
37
|
+
throw new NoMatchingChecksError();
|
|
38
|
+
}
|
|
30
39
|
const checksMap = checks.reduce((acc, check) => {
|
|
31
40
|
acc[check.id] = check;
|
|
32
41
|
return acc;
|
|
@@ -39,7 +48,10 @@ class TriggerRunner extends abstract_check_runner_1.default {
|
|
|
39
48
|
return { checks: augmentedChecks, testSessionId };
|
|
40
49
|
}
|
|
41
50
|
catch (err) {
|
|
42
|
-
|
|
51
|
+
if (((_c = (_b = err.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.errorCode) === 'ERR_NO_MATCHING_CHECKS') {
|
|
52
|
+
throw new NoMatchingChecksError();
|
|
53
|
+
}
|
|
54
|
+
throw new Error((_f = (_e = (_d = err.response) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.message) !== null && _f !== void 0 ? _f : err.message);
|
|
43
55
|
}
|
|
44
56
|
}
|
|
45
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-runner.js","sourceRoot":"","sources":["../../src/services/trigger-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trigger-runner.js","sourceRoot":"","sources":["../../src/services/trigger-runner.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,mEAAsF;AAGtF,MAAa,qBAAsB,SAAQ,KAAK;CAAG;AAAnD,sDAAmD;AAEnD,MAAqB,aAAc,SAAQ,+BAAmB;IAS5D,YACE,SAAiB,EACjB,OAAe,EACf,OAAgB,EAChB,YAAqB,EACrB,QAAqB,EACrB,UAAsB,EACtB,OAA8C,EAC9C,QAA+B,EAC/B,WAA0B,EAC1B,eAAmC;QAEnC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,eAAuB;;QAKvB,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAY,CAAC,OAAO,CAAC;gBAC1C,IAAI,EAAE,MAAA,IAAI,CAAC,eAAe,mCAAI,mBAAmB;gBACjD,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,QAAQ;gBAC1B,eAAe;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,oBAAoB,EAAE,IAAI,CAAC,OAAO;gBAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAA;YACF,MAAM,EACJ,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,GACd,GAKG,IAAI,CAAA;YACR,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,wFAAwF;gBACxF,wFAAwF;gBACxF,MAAM,IAAI,qBAAqB,EAAE,CAAA;aAClC;YACD,MAAM,SAAS,GAAwB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAwB,EAAE,KAAU,EAAE,EAAE;gBAC5F,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;gBACrB,OAAO,GAAG,CAAA;YACZ,CAAC,EAAE,EAAE,CAAC,CAAA;YACN,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClF,UAAU;gBACV,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;gBACzB,YAAY,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,OAAO,CAAC;aACvC,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,CAAA;SAClD;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,CAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,0CAAE,SAAS,MAAK,wBAAwB,EAAE;gBAC9D,MAAM,IAAI,qBAAqB,EAAE,CAAA;aAClC;YACD,MAAM,IAAI,KAAK,CAAC,MAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,mCAAI,GAAG,CAAC,OAAO,CAAC,CAAA;SAC5D;IACH,CAAC;CACF;AAjFD,gCAiFC"}
|