sealights-cypress-plugin 2.0.23 → 2.0.24
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 +0 -23
- package/package.json +2 -2
- package/support.js +1 -1
- package/tsOutputs/config.js +10 -9
- package/tsOutputs/config.js.map +1 -1
- package/tsOutputs/const.d.ts +4 -2
- package/tsOutputs/const.js +5 -3
- package/tsOutputs/const.js.map +1 -1
- package/tsOutputs/sealights-service.d.ts +1 -1
- package/tsOutputs/sealights-service.js +26 -9
- package/tsOutputs/sealights-service.js.map +1 -1
- package/tsOutputs/support.d.ts +6 -1
- package/tsOutputs/support.js +4 -3
- package/tsOutputs/support.js.map +1 -1
- package/tsOutputs/utils.d.ts +18 -0
- package/tsOutputs/utils.js +30 -1
- package/tsOutputs/utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -8,29 +8,6 @@ This plugin adds support for Sealights, reporting coverage and test skipping as
|
|
|
8
8
|
- Node >= 12
|
|
9
9
|
- Cypress >= 9
|
|
10
10
|
|
|
11
|
-
## ⚠️ Usage with other plugins
|
|
12
|
-
|
|
13
|
-
If you're using the Sealights plugin with other plugins, please read the following **carefully!** <br>
|
|
14
|
-
|
|
15
|
-
This plugin will register multiple types of life-cycle event handlers.
|
|
16
|
-
However, only a single event handler can exist for each type of event (due to a limitation in Cypress).
|
|
17
|
-
Thus, if you attempt to define any of the same handlers,
|
|
18
|
-
your handler will either be overriden by this plugin or you will override this plugin's handler.
|
|
19
|
-
Either way, one of the plugins will stop functioning as expected.
|
|
20
|
-
|
|
21
|
-
There's an (multiple actually) open [issue](https://github.com/cypress-io/cypress/issues/22428) at Cypress tracking this limitation.
|
|
22
|
-
|
|
23
|
-
These are the events this plugin will subscribe to:
|
|
24
|
-
|
|
25
|
-
- before:run
|
|
26
|
-
- after:run
|
|
27
|
-
|
|
28
|
-
For example, if you specify a handler for `before:run` and override this plugin's handler,
|
|
29
|
-
then no test events will be sent to Sealights.
|
|
30
|
-
|
|
31
|
-
For a workaround and ability to use multiple plugins please refer to: [cypress-on-fix](https://github.com/bahmutov/cypress-on-fix),
|
|
32
|
-
or the original issue linked above.
|
|
33
|
-
|
|
34
11
|
## Features
|
|
35
12
|
|
|
36
13
|
- **Support File:** The plugin introduces a support file, it is automatically loaded before each test, providing a centralized location to manage the Sealights information and execute the required hooks
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sealights-cypress-plugin",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.24",
|
|
4
4
|
"description": "Support and config files for Cypress to support Sealights integration.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc",
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"support.js"
|
|
34
34
|
],
|
|
35
35
|
"main": "tsOutputs/index.js",
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "5e2139752e8d9e00499b88773a5cae1869570719"
|
|
37
37
|
}
|
package/support.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
require('./tsOutputs/support');
|
package/tsOutputs/config.js
CHANGED
|
@@ -20,15 +20,9 @@ const registerSealightsTasks = (on, config) => {
|
|
|
20
20
|
teststage: config.env[const_1.SL_CYPRESS_ENVIRONMENT.TEST_STAGE],
|
|
21
21
|
labid: config.env[const_1.SL_CYPRESS_ENVIRONMENT.LAB_ID],
|
|
22
22
|
};
|
|
23
|
-
|
|
24
|
-
sealights_service_1.SealightsTestSessionService.setConfig(slConfig.token, slConfig.teststage, slConfig.buildsessionid, slConfig.labid);
|
|
25
|
-
yield sealights_service_1.SealightsTestSessionService.createTestSession();
|
|
26
|
-
}));
|
|
27
|
-
on('after:run', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
-
yield sealights_service_1.SealightsTestSessionService.endTestSession();
|
|
29
|
-
}));
|
|
23
|
+
sealights_service_1.SealightsTestSessionService.setConfig(slConfig.token, slConfig.teststage, slConfig.buildsessionid, slConfig.labid);
|
|
30
24
|
on('task', {
|
|
31
|
-
[const_1.
|
|
25
|
+
[const_1.SL_REPORT_TEST_END_TASK]({ suiteName, testName, duration, state }) {
|
|
32
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
27
|
const name = (0, utils_1.constructTestName)(suiteName, testName);
|
|
34
28
|
const start = Date.now() - duration;
|
|
@@ -37,11 +31,18 @@ const registerSealightsTasks = (on, config) => {
|
|
|
37
31
|
return null;
|
|
38
32
|
});
|
|
39
33
|
},
|
|
40
|
-
[const_1.
|
|
34
|
+
[const_1.SL_START_TEST_SESSION]() {
|
|
41
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
yield sealights_service_1.SealightsTestSessionService.createTestSession();
|
|
42
37
|
return yield sealights_service_1.SealightsTestSessionService.getTestRecommendations();
|
|
43
38
|
});
|
|
44
39
|
},
|
|
40
|
+
[const_1.SL_END_TEST_SESSION]() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
yield sealights_service_1.SealightsTestSessionService.endTestSession();
|
|
43
|
+
return null;
|
|
44
|
+
});
|
|
45
|
+
},
|
|
45
46
|
});
|
|
46
47
|
config.env[const_1.SL_TASKS_REGISTERED] = true;
|
|
47
48
|
return config;
|
package/tsOutputs/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAMiB;AACjB,2DAAkE;AAClE,mCAA4C;AAErC,MAAM,sBAAsB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;IACnD,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,gBAAgB,CAAC;QACnE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,KAAK,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,UAAU,CAAC;QACxD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,MAAM,CAAC;KACjD,CAAC;IACF,+CAA2B,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEnH,EAAE,CAAC,MAAM,EAAE;QAEH,CAAC,+BAAuB,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;;gBACtE,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEvB,MAAM,+CAA2B,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAEzE,OAAO,IAAI,CAAC;YACd,CAAC;SAAA;QACK,CAAC,6BAAqB,CAAC;;gBAC3B,MAAM,+CAA2B,CAAC,iBAAiB,EAAE,CAAC;gBACtD,OAAO,MAAM,+CAA2B,CAAC,sBAAsB,EAAE,CAAC;YACpE,CAAC;SAAA;QACK,CAAC,2BAAmB,CAAC;;gBACzB,MAAM,+CAA2B,CAAC,cAAc,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC;YACd,CAAC;SAAA;KACF,CAAC,CAAC;IAGH,MAAM,CAAC,GAAG,CAAC,2BAAmB,CAAC,GAAG,IAAI,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlCW,QAAA,sBAAsB,0BAkCjC"}
|
package/tsOutputs/const.d.ts
CHANGED
|
@@ -4,10 +4,12 @@ export declare const SL_CYPRESS_ENVIRONMENT: {
|
|
|
4
4
|
TEST_STAGE: string;
|
|
5
5
|
LAB_ID: string;
|
|
6
6
|
};
|
|
7
|
+
export declare const SL_LOG_PREFIX = "Sealights Plugin:";
|
|
8
|
+
export declare const SL_START_TEST_SESSION = "sealightsStartSession";
|
|
9
|
+
export declare const SL_END_TEST_SESSION = "sealightsEndSession";
|
|
7
10
|
export declare const SL_TASKS_REGISTERED = "sealightsTasksRegistered";
|
|
8
|
-
export declare const EXCLUDED_TESTS_TASK = "getExcludedTests";
|
|
9
11
|
export declare const X_SL_SERVER = "x-sl-server";
|
|
10
|
-
export declare const
|
|
12
|
+
export declare const SL_REPORT_TEST_END_TASK = "reportSealightsTestEnd";
|
|
11
13
|
export declare const SL_COLORING_EVENTS: {
|
|
12
14
|
SET_CONTEXT: string;
|
|
13
15
|
DELETE_CONTEXT: string;
|
package/tsOutputs/const.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TEST_STATUS = exports.SL_COLORING_HEADERS = exports.SL_COLORING_EVENTS = exports.
|
|
3
|
+
exports.TEST_STATUS = exports.SL_COLORING_HEADERS = exports.SL_COLORING_EVENTS = exports.SL_REPORT_TEST_END_TASK = exports.X_SL_SERVER = exports.SL_TASKS_REGISTERED = exports.SL_END_TEST_SESSION = exports.SL_START_TEST_SESSION = exports.SL_LOG_PREFIX = exports.SL_CYPRESS_ENVIRONMENT = void 0;
|
|
4
4
|
exports.SL_CYPRESS_ENVIRONMENT = {
|
|
5
5
|
BUILD_SESSION_ID: 'SL_BUILD_SESSION_ID',
|
|
6
6
|
TOKEN: 'SL_TOKEN',
|
|
7
7
|
TEST_STAGE: 'SL_TEST_STAGE',
|
|
8
8
|
LAB_ID: 'SL_LAB_ID',
|
|
9
9
|
};
|
|
10
|
+
exports.SL_LOG_PREFIX = 'Sealights Plugin:';
|
|
11
|
+
exports.SL_START_TEST_SESSION = 'sealightsStartSession';
|
|
12
|
+
exports.SL_END_TEST_SESSION = 'sealightsEndSession';
|
|
10
13
|
exports.SL_TASKS_REGISTERED = 'sealightsTasksRegistered';
|
|
11
|
-
exports.EXCLUDED_TESTS_TASK = 'getExcludedTests';
|
|
12
14
|
exports.X_SL_SERVER = 'x-sl-server';
|
|
13
|
-
exports.
|
|
15
|
+
exports.SL_REPORT_TEST_END_TASK = 'reportSealightsTestEnd';
|
|
14
16
|
exports.SL_COLORING_EVENTS = {
|
|
15
17
|
SET_CONTEXT: 'set:context',
|
|
16
18
|
DELETE_CONTEXT: 'delete:context',
|
package/tsOutputs/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IACpC,gBAAgB,EAAE,qBAAqB;IACvC,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,WAAW;CACpB,CAAC;AAEW,QAAA,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IACpC,gBAAgB,EAAE,qBAAqB;IACvC,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,WAAW;CACpB,CAAC;AAEW,QAAA,aAAa,GAAG,mBAAmB,CAAC;AACpC,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAE5C,QAAA,mBAAmB,GAAG,0BAA0B,CAAC;AACjD,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,uBAAuB,GAAG,wBAAwB,CAAC;AAEnD,QAAA,kBAAkB,GAAG;IAChC,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEW,QAAA,mBAAmB,GAAG;IACjC,SAAS,EAAE,gBAAgB;IAC3B,eAAe,EAAE,sBAAsB;CACxC,CAAC;AAEF,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;AACrB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB"}
|
|
@@ -21,7 +21,7 @@ declare class TestSessionService {
|
|
|
21
21
|
sendTestEvent(name: string, start: number, end: number, status: string): Promise<void>;
|
|
22
22
|
get _testSessionId(): string;
|
|
23
23
|
get _excludedTests(): Record<string, string>;
|
|
24
|
-
static runServiceMethodSafe(
|
|
24
|
+
static runServiceMethodSafe(_: unknown, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
|
|
25
25
|
}
|
|
26
26
|
export declare const SealightsTestSessionService: TestSessionService;
|
|
27
27
|
export {};
|
|
@@ -19,6 +19,7 @@ exports.SealightsTestSessionService = void 0;
|
|
|
19
19
|
const axios_1 = require("axios");
|
|
20
20
|
const jwt_decode_1 = require("jwt-decode");
|
|
21
21
|
const const_1 = require("./const");
|
|
22
|
+
const utils_1 = require("./utils");
|
|
22
23
|
class TestSessionService {
|
|
23
24
|
constructor() {
|
|
24
25
|
this.apiToken = null;
|
|
@@ -41,10 +42,17 @@ class TestSessionService {
|
|
|
41
42
|
setConfig(apiToken, testStage, buildSessionId, labId) {
|
|
42
43
|
if (!(buildSessionId === null || buildSessionId === void 0 ? void 0 : buildSessionId.length) && !(labId === null || labId === void 0 ? void 0 : labId.length)) {
|
|
43
44
|
this.configurationError = true;
|
|
44
|
-
throw new Error(
|
|
45
|
+
throw new Error(`${const_1.SL_LOG_PREFIX} At least one of buildSessionId/labId must be provided for Sealights integration. Test suite will resume with disabled integration.`);
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
let decodedToken = null;
|
|
48
|
+
try {
|
|
49
|
+
decodedToken = (0, jwt_decode_1.default)(apiToken);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
this.configurationError = true;
|
|
53
|
+
throw new Error(`${const_1.SL_LOG_PREFIX} Invalid Sealights Token provided, could not be decoded. Test suite will resume with disabled integration.`);
|
|
54
|
+
}
|
|
55
|
+
this.baseUrl = decodedToken[const_1.X_SL_SERVER];
|
|
48
56
|
this.apiToken = apiToken;
|
|
49
57
|
this.buildSessionId = buildSessionId;
|
|
50
58
|
this.labId = labId;
|
|
@@ -79,24 +87,32 @@ class TestSessionService {
|
|
|
79
87
|
labid: this.labId,
|
|
80
88
|
}));
|
|
81
89
|
this.testSessionId = data.data.testSessionId;
|
|
90
|
+
console.log(`${const_1.SL_LOG_PREFIX} Test session successfully created.`);
|
|
82
91
|
});
|
|
83
92
|
}
|
|
84
93
|
endTestSession() {
|
|
85
94
|
var _a;
|
|
86
|
-
return (
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
yield ((_a = this.testSessionsV1Instance) === null || _a === void 0 ? void 0 : _a.delete(`/${this.testSessionId}`));
|
|
97
|
+
console.log(`${const_1.SL_LOG_PREFIX} Test session successfully ended.`);
|
|
98
|
+
});
|
|
87
99
|
}
|
|
88
100
|
getTestRecommendations() {
|
|
89
101
|
var _a, _b;
|
|
90
102
|
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
if (this.excludedTests) {
|
|
104
|
+
return this.excludedTests;
|
|
105
|
+
}
|
|
91
106
|
try {
|
|
92
107
|
const { data } = yield ((_a = this.testSessionsV1Instance) === null || _a === void 0 ? void 0 : _a.get(`/${this.testSessionId}/exclude-tests`));
|
|
93
108
|
this.excludedTests = (((_b = data === null || data === void 0 ? void 0 : data.data) === null || _b === void 0 ? void 0 : _b.length) ? data.data : []).reduce((acc, testName) => (Object.assign(Object.assign({}, acc), { [testName]: testName })), {});
|
|
94
|
-
|
|
109
|
+
console.log(`${const_1.SL_LOG_PREFIX} Test recommendation successfully retrieved. Tests will be marked for exclusion.`);
|
|
110
|
+
return this.excludedTests;
|
|
95
111
|
}
|
|
96
112
|
catch (e) {
|
|
97
|
-
console.
|
|
113
|
+
console.log((0, utils_1.sanitizeError)(e));
|
|
98
114
|
this.excludedTests = null;
|
|
99
|
-
return this.
|
|
115
|
+
return this.excludedTests;
|
|
100
116
|
}
|
|
101
117
|
});
|
|
102
118
|
}
|
|
@@ -121,7 +137,7 @@ class TestSessionService {
|
|
|
121
137
|
var _a;
|
|
122
138
|
return (_a = this.excludedTests) !== null && _a !== void 0 ? _a : {};
|
|
123
139
|
}
|
|
124
|
-
static runServiceMethodSafe(
|
|
140
|
+
static runServiceMethodSafe(_, propertyKey, descriptor) {
|
|
125
141
|
const originalMethod = descriptor.value;
|
|
126
142
|
descriptor.value = function (...args) {
|
|
127
143
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -132,7 +148,8 @@ class TestSessionService {
|
|
|
132
148
|
return yield originalMethod.apply(this, args);
|
|
133
149
|
}
|
|
134
150
|
catch (error) {
|
|
135
|
-
|
|
151
|
+
const sanitizedError = (0, utils_1.sanitizeError)(error);
|
|
152
|
+
console.log(`${const_1.SL_LOG_PREFIX} An error occurred in method ${propertyKey}:`, sanitizedError);
|
|
136
153
|
}
|
|
137
154
|
});
|
|
138
155
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sealights-service.js","sourceRoot":"","sources":["../src/sealights-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,iCAA6C;AAC7C,2CAAmC;AAEnC,
|
|
1
|
+
{"version":3,"file":"sealights-service.js","sourceRoot":"","sources":["../src/sealights-service.ts"],"names":[],"mappings":"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"}
|
package/tsOutputs/support.d.ts
CHANGED
package/tsOutputs/support.js
CHANGED
|
@@ -14,12 +14,12 @@ const sealights_service_1 = require("./sealights-service");
|
|
|
14
14
|
const utils_1 = require("./utils");
|
|
15
15
|
function registerHooks() {
|
|
16
16
|
before(function () {
|
|
17
|
-
cy.task(const_1.
|
|
17
|
+
cy.task(const_1.SL_START_TEST_SESSION).then({ timeout: 20000 }, (excludedTests) => {
|
|
18
18
|
markExcludedTests(this.test.parent, excludedTests);
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
after(() => {
|
|
22
|
-
cy.window().then((
|
|
22
|
+
cy.window().then(() => __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
const currentTimeout = Cypress.config('defaultCommandTimeout');
|
|
24
24
|
const timeoutPromise = new Promise((resolve) => {
|
|
25
25
|
setTimeout(() => resolve(null), currentTimeout - 100);
|
|
@@ -31,6 +31,7 @@ function registerHooks() {
|
|
|
31
31
|
}
|
|
32
32
|
yield Promise.race([(_c = (_b = win === null || win === void 0 ? void 0 : win.$SealightsAgent) === null || _b === void 0 ? void 0 : _b.sendAllFootprints) === null || _c === void 0 ? void 0 : _c.call(_b), timeoutPromise]);
|
|
33
33
|
}));
|
|
34
|
+
cy.task(const_1.SL_END_TEST_SESSION);
|
|
34
35
|
}));
|
|
35
36
|
});
|
|
36
37
|
beforeEach(() => {
|
|
@@ -57,7 +58,7 @@ function registerHooks() {
|
|
|
57
58
|
const testName = currentTest.title;
|
|
58
59
|
const suiteName = currentTest.parent.title;
|
|
59
60
|
const state = currentTest.state;
|
|
60
|
-
cy.task(const_1.
|
|
61
|
+
cy.task(const_1.SL_REPORT_TEST_END_TASK, { testName, suiteName, duration, state });
|
|
61
62
|
});
|
|
62
63
|
afterEach(() => {
|
|
63
64
|
const currentTimeout = Cypress.config('defaultCommandTimeout');
|
package/tsOutputs/support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support.js","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":"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"}
|
package/tsOutputs/utils.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
1
|
/// <reference types="cypress" />
|
|
2
2
|
export declare function constructTestName(suiteName: string, testName: string): string;
|
|
3
3
|
export declare function checkAgentLoaded(win: Cypress.AUTWindow, intervalMs?: number, timeoutSeconds?: number): Promise<boolean>;
|
|
4
|
+
export declare function sanitizeError(error: {
|
|
5
|
+
name: string;
|
|
6
|
+
message: string;
|
|
7
|
+
response: IErrorResponse & {
|
|
8
|
+
config: IErrorResponseConfig;
|
|
9
|
+
};
|
|
10
|
+
}): Error & {
|
|
11
|
+
response: IErrorResponse & IErrorResponseConfig;
|
|
12
|
+
};
|
|
13
|
+
export interface IErrorResponse {
|
|
14
|
+
statusText: string;
|
|
15
|
+
status: string;
|
|
16
|
+
data: unknown;
|
|
17
|
+
}
|
|
18
|
+
export interface IErrorResponseConfig {
|
|
19
|
+
url: string;
|
|
20
|
+
baseURL: string;
|
|
21
|
+
}
|
package/tsOutputs/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkAgentLoaded = exports.constructTestName = void 0;
|
|
3
|
+
exports.sanitizeError = exports.checkAgentLoaded = exports.constructTestName = void 0;
|
|
4
4
|
function constructTestName(suiteName, testName) {
|
|
5
5
|
return `${suiteName} - ${testName}`;
|
|
6
6
|
}
|
|
@@ -24,4 +24,33 @@ function checkAgentLoaded(win, intervalMs = 100, timeoutSeconds = 5) {
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
exports.checkAgentLoaded = checkAgentLoaded;
|
|
27
|
+
function sanitizeError(error) {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
29
|
+
const sanitizedError = new Error('An error occurred');
|
|
30
|
+
sanitizedError.stack = undefined;
|
|
31
|
+
sanitizedError.name = error.name;
|
|
32
|
+
sanitizedError.message = error.message;
|
|
33
|
+
const response = {};
|
|
34
|
+
response.statusText = (_a = error.response) === null || _a === void 0 ? void 0 : _a.statusText;
|
|
35
|
+
response.status = (_b = error.response) === null || _b === void 0 ? void 0 : _b.status;
|
|
36
|
+
response.data = (_c = error.response) === null || _c === void 0 ? void 0 : _c.data;
|
|
37
|
+
response.url = (_e = (_d = error.response) === null || _d === void 0 ? void 0 : _d.config) === null || _e === void 0 ? void 0 : _e.url;
|
|
38
|
+
response.baseURL = (_g = (_f = error.response) === null || _f === void 0 ? void 0 : _f.config) === null || _g === void 0 ? void 0 : _g.baseURL;
|
|
39
|
+
const filteredResponse = removeEmpty(response);
|
|
40
|
+
if (Object.keys(filteredResponse).length) {
|
|
41
|
+
sanitizedError.response = filteredResponse;
|
|
42
|
+
}
|
|
43
|
+
return sanitizedError;
|
|
44
|
+
}
|
|
45
|
+
exports.sanitizeError = sanitizeError;
|
|
46
|
+
function removeEmpty(obj) {
|
|
47
|
+
const newObj = {};
|
|
48
|
+
Object.keys(obj).forEach((key) => {
|
|
49
|
+
if (obj[key] === Object(obj[key]))
|
|
50
|
+
newObj[key] = removeEmpty(obj[key]);
|
|
51
|
+
else if (obj[key] !== undefined)
|
|
52
|
+
newObj[key] = obj[key];
|
|
53
|
+
});
|
|
54
|
+
return newObj;
|
|
55
|
+
}
|
|
27
56
|
//# sourceMappingURL=utils.js.map
|
package/tsOutputs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,QAAgB;IACnE,OAAO,GAAG,SAAS,MAAM,QAAQ,EAAE,CAAC;AACtC,CAAC;AAFD,8CAEC;AAED,SAAgB,gBAAgB,CAC9B,GAAsB,EACtB,aAAqB,GAAG,EACxB,iBAAyB,CAAC;IAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE;gBACxC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACnC,IAAI,OAAO,IAAI,cAAc,GAAG,IAAI,EAAE;oBACpC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;iBAChB;aACF;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,4CAoBC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,QAAgB;IACnE,OAAO,GAAG,SAAS,MAAM,QAAQ,EAAE,CAAC;AACtC,CAAC;AAFD,8CAEC;AAED,SAAgB,gBAAgB,CAC9B,GAAsB,EACtB,aAAqB,GAAG,EACxB,iBAAyB,CAAC;IAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE;gBACxC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACnC,IAAI,OAAO,IAAI,cAAc,GAAG,IAAI,EAAE;oBACpC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;iBAChB;aACF;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,4CAoBC;AAED,SAAgB,aAAa,CAAC,KAI7B;;IACC,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAgE,CAAC;IACrH,cAAc,CAAC,KAAK,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACjC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAEvC,MAAM,QAAQ,GAA0C,EAAE,CAAC;IAC3D,QAAQ,CAAC,UAAU,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAE,UAAU,CAAC;IACjD,QAAQ,CAAC,MAAM,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,IAAI,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,CAAC;IACrC,QAAQ,CAAC,GAAG,GAAG,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,0CAAE,GAAG,CAAC;IAC3C,QAAQ,CAAC,OAAO,GAAG,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,0CAAE,OAAO,CAAC;IACnD,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE;QACxC,cAAc,CAAC,QAAQ,GAAG,gBAAgB,CAAC;KAC5C;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAvBD,sCAuBC;AAED,SAAS,WAAW,CAAI,GAAM;IAC5B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAClE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,OAAO,MAAW,CAAC;AACrB,CAAC"}
|