@auxcode/auxta 1.3.40 → 1.3.42
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/build/cjs/auxta/services/log.service.d.ts +5 -1
- package/build/cjs/auxta/services/log.service.js +15 -2
- package/build/cjs/auxta/utilities/screenshot.helper.d.ts +2 -0
- package/build/cjs/auxta/utilities/screenshot.helper.js +18 -1
- package/build/cjs/macros/helpers/code.helper.d.ts +2 -1
- package/build/cjs/macros/helpers/code.helper.js +11 -2
- package/build/cjs/puppeteer/puppeteer.js +14 -13
- package/build/esm/auxta/services/log.service.d.ts +5 -1
- package/build/esm/auxta/services/log.service.js +15 -2
- package/build/esm/auxta/utilities/screenshot.helper.d.ts +2 -0
- package/build/esm/auxta/utilities/screenshot.helper.js +16 -0
- package/build/esm/macros/helpers/code.helper.d.ts +2 -1
- package/build/esm/macros/helpers/code.helper.js +11 -2
- package/build/esm/puppeteer/puppeteer.js +14 -13
- package/build/tsconfig-cjs.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,10 @@ export interface Step {
|
|
|
5
5
|
result: {
|
|
6
6
|
status: StatusOfStep;
|
|
7
7
|
duration: number;
|
|
8
|
+
embedding?: {
|
|
9
|
+
data: string;
|
|
10
|
+
mime_type: string;
|
|
11
|
+
};
|
|
8
12
|
};
|
|
9
13
|
}
|
|
10
14
|
export declare class LogSteps {
|
|
@@ -18,7 +22,7 @@ export declare class LogSteps {
|
|
|
18
22
|
};
|
|
19
23
|
addSuggestion(text: string): void;
|
|
20
24
|
clear(): void;
|
|
21
|
-
push(keyword: string, name: string, status: StatusOfStep): void;
|
|
25
|
+
push(keyword: string, name: string, status: StatusOfStep, screenshot?: string): void;
|
|
22
26
|
returnScenarioReport(): Step[];
|
|
23
27
|
getStatusCount(status: StatusOfStep): number;
|
|
24
28
|
}
|
|
@@ -28,11 +28,24 @@ class LogSteps {
|
|
|
28
28
|
[status_of_step_1.StatusOfStep.SUGGESTION]: 0,
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
push(keyword, name, status) {
|
|
31
|
+
push(keyword, name, status, screenshot = '') {
|
|
32
32
|
console.log(`System log -- status: ${status} -- : ${name} `);
|
|
33
33
|
this.statusCounter[status]++;
|
|
34
34
|
const currentStep = new Date().getTime();
|
|
35
|
-
|
|
35
|
+
if (screenshot != '') {
|
|
36
|
+
const embedding = {
|
|
37
|
+
data: screenshot,
|
|
38
|
+
mime_type: "image/png"
|
|
39
|
+
};
|
|
40
|
+
this.stepLog.push({
|
|
41
|
+
keyword,
|
|
42
|
+
name,
|
|
43
|
+
result: { status, duration: currentStep - this.lastStepTime, embedding: embedding }
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.stepLog.push({ keyword, name, result: { status, duration: currentStep - this.lastStepTime } });
|
|
48
|
+
}
|
|
36
49
|
this.lastStepTime = currentStep;
|
|
37
50
|
}
|
|
38
51
|
returnScenarioReport() {
|
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.captureScreenshot = void 0;
|
|
15
|
+
exports.captureScreenshotPage = exports.captureScreenshot = void 0;
|
|
16
16
|
const puppeteer_1 = __importDefault(require("../../puppeteer/puppeteer"));
|
|
17
17
|
const log_service_1 = __importDefault(require("../services/log.service"));
|
|
18
18
|
const status_of_step_1 = __importDefault(require("../enums/status-of.step"));
|
|
@@ -38,3 +38,20 @@ function captureScreenshot() {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
exports.captureScreenshot = captureScreenshot;
|
|
41
|
+
function captureScreenshotPage(page) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
try {
|
|
44
|
+
const screenshotBuffer = yield page.screenshot({
|
|
45
|
+
fullPage: true,
|
|
46
|
+
encoding: 'binary'
|
|
47
|
+
});
|
|
48
|
+
if (Buffer.isBuffer(screenshotBuffer))
|
|
49
|
+
return screenshotBuffer;
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
log_service_1.default.push('When', e.toString(), status_of_step_1.default.FAILED);
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
exports.captureScreenshotPage = captureScreenshotPage;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { StatusOfStep } from "../../auxta/enums/status-of.step";
|
|
2
2
|
import { ExtendDefaultPage } from "./extend-default-page";
|
|
3
3
|
export declare class FunctionHelper extends ExtendDefaultPage {
|
|
4
|
-
log(keyword: string, name: string, status: StatusOfStep): void;
|
|
4
|
+
log(keyword: string, name: string, status: StatusOfStep, screenshot?: string): void;
|
|
5
|
+
screenshot(page?: import("puppeteer").Page): Promise<string | undefined>;
|
|
5
6
|
suggest(name: string): void;
|
|
6
7
|
private getEscapedText;
|
|
7
8
|
clickByText(selector: string, text: string, dotOrText?: string, options?: {}, page?: import("puppeteer").Page, time?: number, log_message?: boolean): Promise<void>;
|
|
@@ -19,9 +19,18 @@ const status_of_step_1 = require("../../auxta/enums/status-of.step");
|
|
|
19
19
|
const AuxTA_1 = require("../../AuxTA");
|
|
20
20
|
const extend_default_page_1 = require("./extend-default-page");
|
|
21
21
|
const puppeteer_2 = require("puppeteer");
|
|
22
|
+
const screenshot_helper_1 = require("../../auxta/utilities/screenshot.helper");
|
|
22
23
|
class FunctionHelper extends extend_default_page_1.ExtendDefaultPage {
|
|
23
|
-
log(keyword, name, status) {
|
|
24
|
-
log_service_1.default.push(keyword, name, status);
|
|
24
|
+
log(keyword, name, status, screenshot) {
|
|
25
|
+
log_service_1.default.push(keyword, name, status, screenshot);
|
|
26
|
+
}
|
|
27
|
+
screenshot(page = puppeteer_1.default.defaultPage) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const screenshotBuffer = yield (0, screenshot_helper_1.captureScreenshotPage)(page);
|
|
30
|
+
if (screenshotBuffer) {
|
|
31
|
+
return screenshotBuffer.toString('base64');
|
|
32
|
+
}
|
|
33
|
+
});
|
|
25
34
|
}
|
|
26
35
|
suggest(name) {
|
|
27
36
|
log_service_1.default.addSuggestion(name);
|
|
@@ -77,26 +77,31 @@ class Puppeteer {
|
|
|
77
77
|
let screenshotBuffer;
|
|
78
78
|
let errMessage;
|
|
79
79
|
let statusCode = 200;
|
|
80
|
-
let
|
|
80
|
+
let consoleMessage = [];
|
|
81
|
+
let httpsMessage = [];
|
|
81
82
|
try {
|
|
82
|
-
|
|
83
|
+
log_service_1.default.push('When', `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
83
84
|
yield this.startBrowser();
|
|
84
|
-
this.defaultPage.on('console', (message) =>
|
|
85
|
-
.on('pageerror', ({ message }) =>
|
|
86
|
-
.on('response', (response) =>
|
|
87
|
-
.on('requestfailed', (request) => { var _a; return
|
|
85
|
+
this.defaultPage.on('console', (message) => consoleMessage.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
|
|
86
|
+
.on('pageerror', ({ message }) => consoleMessage.push(message))
|
|
87
|
+
.on('response', (response) => httpsMessage.push(`${response.status()} ${response.url()}`))
|
|
88
|
+
.on('requestfailed', (request) => { var _a; return httpsMessage.push(`${request.failure() !== null ? (_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText : ""} ${request.url()}`); });
|
|
88
89
|
yield callback(event);
|
|
89
90
|
log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
90
91
|
}
|
|
91
92
|
catch (err) {
|
|
92
93
|
console.log("Error message: \n", err);
|
|
93
94
|
let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
|
|
95
|
+
const pages = yield this.defaultPage.browser().pages();
|
|
96
|
+
consoleMessage.push('pages');
|
|
97
|
+
consoleMessage.push(pages.length);
|
|
94
98
|
if (browser_start_retry) {
|
|
95
99
|
const result = yield (0, start_suite_helper_1.retrySuite)(uploadModel.nextSuites, uploadModel.reportId, uploadModel.currentSuite, uploadModel.retries);
|
|
96
100
|
if (!result) {
|
|
97
101
|
return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
|
|
98
102
|
currentPageUrl: 'undefined',
|
|
99
|
-
console:
|
|
103
|
+
console: consoleMessage,
|
|
104
|
+
https: httpsMessage,
|
|
100
105
|
error: 'Browser did not open'
|
|
101
106
|
});
|
|
102
107
|
}
|
|
@@ -105,11 +110,6 @@ class Puppeteer {
|
|
|
105
110
|
errMessage = err;
|
|
106
111
|
statusCode = 500;
|
|
107
112
|
screenshotBuffer = yield (0, screenshot_helper_1.captureScreenshot)();
|
|
108
|
-
const pages = yield this.defaultPage.browser().pages();
|
|
109
|
-
consoleStack.push('pages');
|
|
110
|
-
consoleStack.push(pages.length);
|
|
111
|
-
consoleStack.push('screenshotBuffer');
|
|
112
|
-
consoleStack.push(screenshotBuffer);
|
|
113
113
|
log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
|
|
114
114
|
yield (0, report_service_1.postNotificationsOnFail)(uploadModel);
|
|
115
115
|
}
|
|
@@ -118,7 +118,8 @@ class Puppeteer {
|
|
|
118
118
|
yield this.close();
|
|
119
119
|
return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
|
|
120
120
|
currentPageUrl: url,
|
|
121
|
-
console:
|
|
121
|
+
console: consoleMessage,
|
|
122
|
+
https: httpsMessage,
|
|
122
123
|
error: errMessage
|
|
123
124
|
});
|
|
124
125
|
}
|
|
@@ -5,6 +5,10 @@ export interface Step {
|
|
|
5
5
|
result: {
|
|
6
6
|
status: StatusOfStep;
|
|
7
7
|
duration: number;
|
|
8
|
+
embedding?: {
|
|
9
|
+
data: string;
|
|
10
|
+
mime_type: string;
|
|
11
|
+
};
|
|
8
12
|
};
|
|
9
13
|
}
|
|
10
14
|
export declare class LogSteps {
|
|
@@ -18,7 +22,7 @@ export declare class LogSteps {
|
|
|
18
22
|
};
|
|
19
23
|
addSuggestion(text: string): void;
|
|
20
24
|
clear(): void;
|
|
21
|
-
push(keyword: string, name: string, status: StatusOfStep): void;
|
|
25
|
+
push(keyword: string, name: string, status: StatusOfStep, screenshot?: string): void;
|
|
22
26
|
returnScenarioReport(): Step[];
|
|
23
27
|
getStatusCount(status: StatusOfStep): number;
|
|
24
28
|
}
|
|
@@ -25,11 +25,24 @@ export class LogSteps {
|
|
|
25
25
|
[StatusOfStep.SUGGESTION]: 0,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
push(keyword, name, status) {
|
|
28
|
+
push(keyword, name, status, screenshot = '') {
|
|
29
29
|
console.log(`System log -- status: ${status} -- : ${name} `);
|
|
30
30
|
this.statusCounter[status]++;
|
|
31
31
|
const currentStep = new Date().getTime();
|
|
32
|
-
|
|
32
|
+
if (screenshot != '') {
|
|
33
|
+
const embedding = {
|
|
34
|
+
data: screenshot,
|
|
35
|
+
mime_type: "image/png"
|
|
36
|
+
};
|
|
37
|
+
this.stepLog.push({
|
|
38
|
+
keyword,
|
|
39
|
+
name,
|
|
40
|
+
result: { status, duration: currentStep - this.lastStepTime, embedding: embedding }
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.stepLog.push({ keyword, name, result: { status, duration: currentStep - this.lastStepTime } });
|
|
45
|
+
}
|
|
33
46
|
this.lastStepTime = currentStep;
|
|
34
47
|
}
|
|
35
48
|
returnScenarioReport() {
|
|
@@ -31,3 +31,19 @@ export function captureScreenshot() {
|
|
|
31
31
|
return undefined;
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
+
export function captureScreenshotPage(page) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
try {
|
|
37
|
+
const screenshotBuffer = yield page.screenshot({
|
|
38
|
+
fullPage: true,
|
|
39
|
+
encoding: 'binary'
|
|
40
|
+
});
|
|
41
|
+
if (Buffer.isBuffer(screenshotBuffer))
|
|
42
|
+
return screenshotBuffer;
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
log.push('When', e.toString(), StatusOfStep.FAILED);
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { StatusOfStep } from "../../auxta/enums/status-of.step";
|
|
2
2
|
import { ExtendDefaultPage } from "./extend-default-page";
|
|
3
3
|
export declare class FunctionHelper extends ExtendDefaultPage {
|
|
4
|
-
log(keyword: string, name: string, status: StatusOfStep): void;
|
|
4
|
+
log(keyword: string, name: string, status: StatusOfStep, screenshot?: string): void;
|
|
5
|
+
screenshot(page?: import("puppeteer").Page): Promise<string | undefined>;
|
|
5
6
|
suggest(name: string): void;
|
|
6
7
|
private getEscapedText;
|
|
7
8
|
clickByText(selector: string, text: string, dotOrText?: string, options?: {}, page?: import("puppeteer").Page, time?: number, log_message?: boolean): Promise<void>;
|
|
@@ -13,9 +13,18 @@ import { StatusOfStep } from "../../auxta/enums/status-of.step";
|
|
|
13
13
|
import { StepStatus } from "../../AuxTA";
|
|
14
14
|
import { ExtendDefaultPage } from "./extend-default-page";
|
|
15
15
|
import { KnownDevices } from "puppeteer";
|
|
16
|
+
import { captureScreenshotPage } from "../../auxta/utilities/screenshot.helper";
|
|
16
17
|
export class FunctionHelper extends ExtendDefaultPage {
|
|
17
|
-
log(keyword, name, status) {
|
|
18
|
-
log.push(keyword, name, status);
|
|
18
|
+
log(keyword, name, status, screenshot) {
|
|
19
|
+
log.push(keyword, name, status, screenshot);
|
|
20
|
+
}
|
|
21
|
+
screenshot(page = puppeteer.defaultPage) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
const screenshotBuffer = yield captureScreenshotPage(page);
|
|
24
|
+
if (screenshotBuffer) {
|
|
25
|
+
return screenshotBuffer.toString('base64');
|
|
26
|
+
}
|
|
27
|
+
});
|
|
19
28
|
}
|
|
20
29
|
suggest(name) {
|
|
21
30
|
log.addSuggestion(name);
|
|
@@ -70,26 +70,31 @@ export class Puppeteer {
|
|
|
70
70
|
let screenshotBuffer;
|
|
71
71
|
let errMessage;
|
|
72
72
|
let statusCode = 200;
|
|
73
|
-
let
|
|
73
|
+
let consoleMessage = [];
|
|
74
|
+
let httpsMessage = [];
|
|
74
75
|
try {
|
|
75
|
-
|
|
76
|
+
log.push('When', `Starting puppeteer process`, StatusOfStep.PASSED);
|
|
76
77
|
yield this.startBrowser();
|
|
77
|
-
this.defaultPage.on('console', (message) =>
|
|
78
|
-
.on('pageerror', ({ message }) =>
|
|
79
|
-
.on('response', (response) =>
|
|
80
|
-
.on('requestfailed', (request) => { var _a; return
|
|
78
|
+
this.defaultPage.on('console', (message) => consoleMessage.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
|
|
79
|
+
.on('pageerror', ({ message }) => consoleMessage.push(message))
|
|
80
|
+
.on('response', (response) => httpsMessage.push(`${response.status()} ${response.url()}`))
|
|
81
|
+
.on('requestfailed', (request) => { var _a; return httpsMessage.push(`${request.failure() !== null ? (_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText : ""} ${request.url()}`); });
|
|
81
82
|
yield callback(event);
|
|
82
83
|
log.push('When', `Finished puppeteer process`, StatusOfStep.PASSED);
|
|
83
84
|
}
|
|
84
85
|
catch (err) {
|
|
85
86
|
console.log("Error message: \n", err);
|
|
86
87
|
let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
|
|
88
|
+
const pages = yield this.defaultPage.browser().pages();
|
|
89
|
+
consoleMessage.push('pages');
|
|
90
|
+
consoleMessage.push(pages.length);
|
|
87
91
|
if (browser_start_retry) {
|
|
88
92
|
const result = yield retrySuite(uploadModel.nextSuites, uploadModel.reportId, uploadModel.currentSuite, uploadModel.retries);
|
|
89
93
|
if (!result) {
|
|
90
94
|
return yield onTestEnd(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
|
|
91
95
|
currentPageUrl: 'undefined',
|
|
92
|
-
console:
|
|
96
|
+
console: consoleMessage,
|
|
97
|
+
https: httpsMessage,
|
|
93
98
|
error: 'Browser did not open'
|
|
94
99
|
});
|
|
95
100
|
}
|
|
@@ -98,11 +103,6 @@ export class Puppeteer {
|
|
|
98
103
|
errMessage = err;
|
|
99
104
|
statusCode = 500;
|
|
100
105
|
screenshotBuffer = yield captureScreenshot();
|
|
101
|
-
const pages = yield this.defaultPage.browser().pages();
|
|
102
|
-
consoleStack.push('pages');
|
|
103
|
-
consoleStack.push(pages.length);
|
|
104
|
-
consoleStack.push('screenshotBuffer');
|
|
105
|
-
consoleStack.push(screenshotBuffer);
|
|
106
106
|
log.push('When', `Finished puppeteer process`, StatusOfStep.FAILED);
|
|
107
107
|
yield postNotificationsOnFail(uploadModel);
|
|
108
108
|
}
|
|
@@ -111,7 +111,8 @@ export class Puppeteer {
|
|
|
111
111
|
yield this.close();
|
|
112
112
|
return yield onTestEnd(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
|
|
113
113
|
currentPageUrl: url,
|
|
114
|
-
console:
|
|
114
|
+
console: consoleMessage,
|
|
115
|
+
https: httpsMessage,
|
|
115
116
|
error: errMessage
|
|
116
117
|
});
|
|
117
118
|
}
|