@sap_oss/wdio-qmate-service 2.6.2 → 2.6.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/lib/reuse/helper/errorHandler.d.ts +5 -5
- package/lib/reuse/helper/errorHandler.js +29 -24
- package/lib/reuse/helper/errorHandler.js.map +1 -1
- package/lib/reuse/helper/errorMessages.js +5 -5
- package/lib/reuse/helper/errorMessages.js.map +1 -1
- package/lib/reuse/{modules → helper}/types.js.map +1 -1
- package/lib/reuse/modules/nonUi5/userInteraction.d.ts +1 -1
- package/lib/reuse/modules/ui5/userInteraction.d.ts +1 -1
- package/package.json +9 -9
- package/test/reuse/helper/errorHandler/logException.spec.js +27 -9
- /package/lib/reuse/{modules → helper}/types.d.ts +0 -0
- /package/lib/reuse/{modules → helper}/types.js +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export interface IErrorHandler {
|
|
2
|
-
logException(error: Error): Promise<never>;
|
|
2
|
+
logException(error: unknown | Error, customErrorMessage?: string): Promise<never>;
|
|
3
3
|
}
|
|
4
4
|
export declare class CustomError extends Error {
|
|
5
|
-
constructor(message: string,
|
|
5
|
+
constructor(message: string, displayStack: boolean);
|
|
6
|
+
private _getFormattedStackTrace;
|
|
6
7
|
}
|
|
7
8
|
export default class ErrorHandler implements IErrorHandler {
|
|
8
|
-
private logStackTrace
|
|
9
|
+
private logStackTrace;
|
|
9
10
|
constructor(logStackTrace?: boolean);
|
|
10
|
-
logException(errorObject: Error):
|
|
11
|
+
logException(errorObject: unknown | Error, customErrorMessage?: string): never;
|
|
11
12
|
private _retrieveFunctionNameFromStack;
|
|
12
|
-
private _getFormattedStackTrace;
|
|
13
13
|
}
|
|
@@ -3,11 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CustomError = void 0;
|
|
4
4
|
const errorMessages_1 = require("../helper/errorMessages");
|
|
5
5
|
class CustomError extends Error {
|
|
6
|
-
constructor(message,
|
|
6
|
+
constructor(message, displayStack) {
|
|
7
7
|
super(message);
|
|
8
|
+
this.name = this.constructor.name;
|
|
8
9
|
this.message = message;
|
|
9
|
-
this.
|
|
10
|
-
|
|
10
|
+
this.stack = displayStack ? this._getFormattedStackTrace(this.stack) : "";
|
|
11
|
+
}
|
|
12
|
+
// =================================== HELPER ===================================
|
|
13
|
+
_getFormattedStackTrace(stack) {
|
|
14
|
+
if (stack) {
|
|
15
|
+
var stackTrace = stack
|
|
16
|
+
.split("\n")
|
|
17
|
+
.map((line) => {
|
|
18
|
+
return line.includes("ErrorHandler.logException") ? "" : line;
|
|
19
|
+
})
|
|
20
|
+
.filter(Boolean)
|
|
21
|
+
.join("\n");
|
|
22
|
+
return stackTrace;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
11
27
|
}
|
|
12
28
|
}
|
|
13
29
|
exports.CustomError = CustomError;
|
|
@@ -15,24 +31,26 @@ class ErrorHandler {
|
|
|
15
31
|
constructor(logStackTrace = true) {
|
|
16
32
|
this.logStackTrace = logStackTrace;
|
|
17
33
|
}
|
|
18
|
-
logException(errorObject) {
|
|
19
|
-
if (errorObject) {
|
|
34
|
+
logException(errorObject, customErrorMessage) {
|
|
35
|
+
if (errorObject instanceof Error) {
|
|
20
36
|
let functionName = this._retrieveFunctionNameFromStack(errorObject);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
37
|
+
if (customErrorMessage) {
|
|
38
|
+
throw new CustomError(errorMessages_1.ErrorMessages.customErrorWithMessage(functionName, customErrorMessage), this.logStackTrace);
|
|
39
|
+
}
|
|
40
|
+
else if (errorObject.message) {
|
|
41
|
+
throw new CustomError(errorMessages_1.ErrorMessages.customErrorWithMessage(functionName, errorObject.message), this.logStackTrace);
|
|
24
42
|
}
|
|
25
43
|
else {
|
|
26
|
-
throw new CustomError(errorMessages_1.ErrorMessages.customErrorWithoutMessage(functionName),
|
|
44
|
+
throw new CustomError(errorMessages_1.ErrorMessages.customErrorWithoutMessage(functionName), this.logStackTrace);
|
|
27
45
|
}
|
|
28
46
|
}
|
|
29
47
|
else {
|
|
30
|
-
throw new CustomError(errorMessages_1.ErrorMessages.genericErrorMessage(),
|
|
48
|
+
throw new CustomError(errorMessages_1.ErrorMessages.genericErrorMessage(), this.logStackTrace);
|
|
31
49
|
}
|
|
32
50
|
}
|
|
33
51
|
// =================================== HELPER ===================================
|
|
34
52
|
_retrieveFunctionNameFromStack(errorObject) {
|
|
35
|
-
if (errorObject.stack) {
|
|
53
|
+
if (errorObject instanceof Error && errorObject.stack) {
|
|
36
54
|
var stackTrace = errorObject.stack.split("\n");
|
|
37
55
|
const startIndex = stackTrace[1].indexOf("at") + 2;
|
|
38
56
|
const endIndex = stackTrace[1].indexOf("(");
|
|
@@ -43,19 +61,6 @@ class ErrorHandler {
|
|
|
43
61
|
return "";
|
|
44
62
|
}
|
|
45
63
|
}
|
|
46
|
-
_getFormattedStackTrace(errorObject) {
|
|
47
|
-
if (errorObject.stack) {
|
|
48
|
-
var stackTrace = errorObject.stack
|
|
49
|
-
.split("\n")
|
|
50
|
-
.map((line) => line.replace(/\s+at\s+/, ""))
|
|
51
|
-
.slice(1)
|
|
52
|
-
.join("\n\r");
|
|
53
|
-
return stackTrace;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
return "";
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
64
|
}
|
|
60
65
|
exports.default = ErrorHandler;
|
|
61
66
|
//# sourceMappingURL=errorHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../src/reuse/helper/errorHandler.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAMxD,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../src/reuse/helper/errorHandler.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAMxD,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe,EAAE,YAAqB;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,iFAAiF;IACzE,uBAAuB,CAAC,KAAc;QAC5C,IAAI,KAAK,EAAE;YACT,IAAI,UAAU,GAAG,KAAK;iBACnB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,UAAU,CAAC;SACnB;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAvBD,kCAuBC;AAED,MAAqB,YAAY;IAG/B,YAAY,gBAAyB,IAAI;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,YAAY,CAAC,WAA4B,EAAE,kBAA2B;QAC3E,IAAI,WAAW,YAAY,KAAK,EAAE;YAChC,IAAI,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;YAEpE,IAAI,kBAAkB,EAAE;gBACtB,MAAM,IAAI,WAAW,CAAC,6BAAa,CAAC,sBAAsB,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;aACnH;iBAAM,IAAI,WAAW,CAAC,OAAO,EAAE;gBAC9B,MAAM,IAAI,WAAW,CAAC,6BAAa,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;aACpH;iBAAM;gBACL,MAAM,IAAI,WAAW,CAAC,6BAAa,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;aAClG;SACF;aAAM;YACL,MAAM,IAAI,WAAW,CAAC,6BAAa,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAChF;IACH,CAAC;IAED,iFAAiF;IAEzE,8BAA8B,CAAC,WAA4B;QACjE,IAAI,WAAW,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE;YACrD,IAAI,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AApCD,+BAoCC"}
|
|
@@ -3,19 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ErrorMessages = void 0;
|
|
4
4
|
class ErrorMessages {
|
|
5
5
|
static numberFormatErrorMessage(functionName) {
|
|
6
|
-
return `
|
|
6
|
+
return `Function '${functionName}' failed with : Please provide the input as number`;
|
|
7
7
|
}
|
|
8
8
|
static fileNotFoundErrorMessage(functionName) {
|
|
9
|
-
return `
|
|
9
|
+
return `Function '${functionName}' failed with : Please provide the file path along with proper file extension`;
|
|
10
10
|
}
|
|
11
11
|
static customErrorWithMessage(functionName, message) {
|
|
12
|
-
return `
|
|
12
|
+
return `Function '${functionName}' failed with : ${message}`;
|
|
13
13
|
}
|
|
14
14
|
static customErrorWithoutMessage(functionName) {
|
|
15
|
-
return `
|
|
15
|
+
return `Function '${functionName}' failed with unknown error`;
|
|
16
16
|
}
|
|
17
17
|
static genericErrorMessage() {
|
|
18
|
-
return `
|
|
18
|
+
return `Failed due to exception in block`;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.ErrorMessages = ErrorMessages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorMessages.js","sourceRoot":"","sources":["../../../src/reuse/helper/errorMessages.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IACjB,MAAM,CAAC,wBAAwB,CAAC,YAAoB;QACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"errorMessages.js","sourceRoot":"","sources":["../../../src/reuse/helper/errorMessages.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IACjB,MAAM,CAAC,wBAAwB,CAAC,YAAoB;QACzD,OAAO,aAAa,YAAY,oDAAoD,CAAC;IACvF,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,YAAoB;QACzD,OAAO,aAAa,YAAY,+EAA+E,CAAC;IAClH,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,YAAoB,EAAE,OAAe;QACxE,OAAO,aAAa,YAAY,mBAAmB,OAAO,EAAE,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,YAAoB;QAC1D,OAAO,aAAa,YAAY,6BAA6B,CAAC;IAChE,CAAC;IAEM,MAAM,CAAC,mBAAmB;QAC/B,OAAO,kCAAkC,CAAC;IAC5C,CAAC;CACF;AApBD,sCAoBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reuse/
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reuse/helper/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap_oss/wdio-qmate-service",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.4",
|
|
4
4
|
"author": "SAP SE",
|
|
5
5
|
"types": "./@types/index.d.ts",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -145,14 +145,14 @@
|
|
|
145
145
|
"@types/fs-extra": "^11.0.1",
|
|
146
146
|
"@types/pdf-parse": "^1.1.1",
|
|
147
147
|
"@types/xml2js": "^0.4.11",
|
|
148
|
-
"@wdio/cli": "
|
|
149
|
-
"@wdio/local-runner": "
|
|
150
|
-
"@wdio/mocha-framework": "
|
|
151
|
-
"@wdio/sauce-service": "
|
|
152
|
-
"@wdio/selenium-standalone-service": "
|
|
153
|
-
"@wdio/shared-store-service": "
|
|
154
|
-
"@wdio/spec-reporter": "
|
|
155
|
-
"@wdio/static-server-service": "
|
|
148
|
+
"@wdio/cli": "8.14.6",
|
|
149
|
+
"@wdio/local-runner": "8.14.6",
|
|
150
|
+
"@wdio/mocha-framework": "8.14.0",
|
|
151
|
+
"@wdio/sauce-service": "8.14.6",
|
|
152
|
+
"@wdio/selenium-standalone-service": "8.14.0",
|
|
153
|
+
"@wdio/shared-store-service": "8.14.6",
|
|
154
|
+
"@wdio/spec-reporter": "8.14.0",
|
|
155
|
+
"@wdio/static-server-service": "8.14.0",
|
|
156
156
|
"app-root-path": "^3.1.0",
|
|
157
157
|
"chai": "^4.3.4",
|
|
158
158
|
"chromedriver": "^114.0.3",
|
|
@@ -2,38 +2,56 @@
|
|
|
2
2
|
|
|
3
3
|
const ErrorHandler = require("../../../../lib/reuse/helper/errorHandler").default;
|
|
4
4
|
|
|
5
|
-
describe("errorHandler - logException -
|
|
5
|
+
describe("errorHandler - logException - error message without stacktrace", async function () {
|
|
6
6
|
it("Execution & Verification", async function () {
|
|
7
7
|
const errorHandler = new ErrorHandler(false);
|
|
8
|
-
await expect(async ()
|
|
8
|
+
await expect(async function display() {
|
|
9
9
|
errorHandler.logException(new Error("Divide by zero error."));
|
|
10
|
-
}).rejects.toThrow("
|
|
10
|
+
}).rejects.toThrow("Function 'display' failed with : Divide by zero error.");
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
describe("errorHandler - logException -
|
|
14
|
+
describe("errorHandler - logException - error message with stacktrace by passing constructor value true", async function () {
|
|
15
15
|
const errorHandler = new ErrorHandler(true);
|
|
16
16
|
it("Execution & Verification", async function () {
|
|
17
17
|
await expect(async function display() {
|
|
18
18
|
errorHandler.logException(new Error("File not found exception"));
|
|
19
|
-
}).rejects.toThrow(/
|
|
19
|
+
}).rejects.toThrow(/Function 'display' failed with : File not found exception/);
|
|
20
20
|
});
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
describe("errorHandler - logException -
|
|
23
|
+
describe("errorHandler - logException - error message with stacktrace by default constructor value", async function () {
|
|
24
24
|
const errorHandler = new ErrorHandler();
|
|
25
25
|
it("Execution & Verification", async function () {
|
|
26
26
|
await expect(async function display() {
|
|
27
27
|
errorHandler.logException(new Error("Array index out of bound exception"));
|
|
28
|
-
}).rejects.toThrow(/
|
|
28
|
+
}).rejects.toThrow(/Function 'display' failed with : Array index out of bound exception/);
|
|
29
29
|
});
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
describe("errorHandler - logException -
|
|
32
|
+
describe("errorHandler - logException - generic error message", async function () {
|
|
33
33
|
it("Execution & Verification", async function () {
|
|
34
34
|
const errorHandler = new ErrorHandler(false);
|
|
35
35
|
await expect(async () => {
|
|
36
36
|
errorHandler.logException();
|
|
37
|
-
}).rejects.toThrow("
|
|
37
|
+
}).rejects.toThrow("Failed due to exception in block");
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe("errorHandler - logException - Without message", async function () {
|
|
42
|
+
it("Execution & Verification", async function () {
|
|
43
|
+
const errorHandler = new ErrorHandler(false);
|
|
44
|
+
await expect(async function display() {
|
|
45
|
+
errorHandler.logException(new Error());
|
|
46
|
+
}).rejects.toThrow("Function 'display' failed with unknown error");
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe("errorHandler - logException - customized error message with stacktrace by having default constructor value", async function () {
|
|
51
|
+
const errorHandler = new ErrorHandler();
|
|
52
|
+
it("Execution & Verification", async function () {
|
|
53
|
+
await expect(async function display() {
|
|
54
|
+
errorHandler.logException(new Error(), "File not found in given path please pass the correct path");
|
|
55
|
+
}).rejects.toThrow(/Function 'display' failed with : File not found in given path please pass the correct path/);
|
|
38
56
|
});
|
|
39
57
|
});
|
|
File without changes
|
|
File without changes
|