@auxcode/auxta 1.3.22 → 1.3.24-beta.1

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.
Files changed (76) hide show
  1. package/README.md +93 -93
  2. package/build/cjs/AuxTA.d.ts +60 -60
  3. package/build/cjs/AuxTA.js +150 -150
  4. package/build/cjs/auxta/configs/config.d.ts +54 -54
  5. package/build/cjs/auxta/configs/config.js +65 -65
  6. package/build/cjs/auxta/enums/status-of.step.d.ts +7 -7
  7. package/build/cjs/auxta/enums/status-of.step.js +11 -11
  8. package/build/cjs/auxta/helpers/response.helper.d.ts +10 -10
  9. package/build/cjs/auxta/helpers/response.helper.js +15 -15
  10. package/build/cjs/auxta/helpers/start.helper.d.ts +1 -1
  11. package/build/cjs/auxta/helpers/start.helper.js +26 -26
  12. package/build/cjs/auxta/hooks/report.hook.d.ts +14 -14
  13. package/build/cjs/auxta/hooks/report.hook.js +66 -66
  14. package/build/cjs/auxta/models/upload.model.d.ts +32 -32
  15. package/build/cjs/auxta/models/upload.model.js +75 -75
  16. package/build/cjs/auxta/services/log.service.d.ts +26 -26
  17. package/build/cjs/auxta/services/log.service.js +47 -47
  18. package/build/cjs/auxta/services/report.service.d.ts +36 -36
  19. package/build/cjs/auxta/services/report.service.js +164 -164
  20. package/build/cjs/auxta/services/runtime.service.d.ts +16 -16
  21. package/build/cjs/auxta/services/runtime.service.js +41 -41
  22. package/build/cjs/auxta/utilities/runtime.helper.d.ts +15 -15
  23. package/build/cjs/auxta/utilities/runtime.helper.js +19 -19
  24. package/build/cjs/auxta/utilities/screenshot.helper.d.ts +2 -2
  25. package/build/cjs/auxta/utilities/screenshot.helper.js +36 -36
  26. package/build/cjs/auxta/utilities/start-suite.helper.d.ts +17 -17
  27. package/build/cjs/auxta/utilities/start-suite.helper.js +31 -31
  28. package/build/cjs/macros/helpers/Aux2faAuth.d.ts +7 -7
  29. package/build/cjs/macros/helpers/Aux2faAuth.js +29 -29
  30. package/build/cjs/macros/helpers/AuxGoogleAuth.d.ts +13 -13
  31. package/build/cjs/macros/helpers/AuxGoogleAuth.js +104 -104
  32. package/build/cjs/macros/helpers/code.helper.d.ts +27 -27
  33. package/build/cjs/macros/helpers/code.helper.js +259 -250
  34. package/build/cjs/macros/helpers/extend-default-page.d.ts +6 -6
  35. package/build/cjs/macros/helpers/extend-default-page.js +88 -88
  36. package/build/cjs/puppeteer/puppeteer.d.ts +25 -25
  37. package/build/cjs/puppeteer/puppeteer.js +196 -196
  38. package/build/esm/AuxTA.d.ts +60 -60
  39. package/build/esm/AuxTA.js +121 -121
  40. package/build/esm/auxta/configs/config.d.ts +54 -54
  41. package/build/esm/auxta/configs/config.js +60 -60
  42. package/build/esm/auxta/enums/status-of.step.d.ts +7 -7
  43. package/build/esm/auxta/enums/status-of.step.js +8 -8
  44. package/build/esm/auxta/helpers/response.helper.d.ts +10 -10
  45. package/build/esm/auxta/helpers/response.helper.js +11 -11
  46. package/build/esm/auxta/helpers/start.helper.d.ts +1 -1
  47. package/build/esm/auxta/helpers/start.helper.js +24 -24
  48. package/build/esm/auxta/hooks/report.hook.d.ts +14 -14
  49. package/build/esm/auxta/hooks/report.hook.js +58 -58
  50. package/build/esm/auxta/models/upload.model.d.ts +32 -32
  51. package/build/esm/auxta/models/upload.model.js +71 -71
  52. package/build/esm/auxta/services/log.service.d.ts +26 -26
  53. package/build/esm/auxta/services/log.service.js +43 -43
  54. package/build/esm/auxta/services/report.service.d.ts +36 -36
  55. package/build/esm/auxta/services/report.service.js +150 -150
  56. package/build/esm/auxta/services/runtime.service.d.ts +16 -16
  57. package/build/esm/auxta/services/runtime.service.js +37 -37
  58. package/build/esm/auxta/utilities/runtime.helper.d.ts +15 -15
  59. package/build/esm/auxta/utilities/runtime.helper.js +15 -15
  60. package/build/esm/auxta/utilities/screenshot.helper.d.ts +2 -2
  61. package/build/esm/auxta/utilities/screenshot.helper.js +29 -29
  62. package/build/esm/auxta/utilities/start-suite.helper.d.ts +17 -17
  63. package/build/esm/auxta/utilities/start-suite.helper.js +26 -26
  64. package/build/esm/macros/helpers/Aux2faAuth.d.ts +7 -7
  65. package/build/esm/macros/helpers/Aux2faAuth.js +25 -25
  66. package/build/esm/macros/helpers/AuxGoogleAuth.d.ts +13 -13
  67. package/build/esm/macros/helpers/AuxGoogleAuth.js +100 -100
  68. package/build/esm/macros/helpers/code.helper.d.ts +27 -27
  69. package/build/esm/macros/helpers/code.helper.js +252 -243
  70. package/build/esm/macros/helpers/extend-default-page.d.ts +6 -6
  71. package/build/esm/macros/helpers/extend-default-page.js +81 -81
  72. package/build/esm/puppeteer/puppeteer.d.ts +25 -25
  73. package/build/esm/puppeteer/puppeteer.js +188 -188
  74. package/build/tsconfig-cjs.tsbuildinfo +1 -1
  75. package/build/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +32 -32
@@ -1,88 +1,88 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ExtendDefaultPage = void 0;
16
- const log_service_1 = __importDefault(require("../../auxta/services/log.service"));
17
- const status_of_step_1 = require("../../auxta/enums/status-of.step");
18
- const config_1 = require("../../auxta/configs/config");
19
- class ExtendDefaultPage {
20
- constructor() {
21
- this.defaultTimeout = config_1.config.timeout;
22
- }
23
- extend_page_functions(page, time = this.defaultTimeout) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const { goto: original_goto, click: original_click, type: original_type, waitForNetworkIdle: original_waitForNetworkIdle } = page;
26
- page.goto = function goto(url, options) {
27
- log_service_1.default.push('Then', `I go to the '${url}' page`, status_of_step_1.StatusOfStep.PASSED);
28
- return original_goto.apply(page, arguments);
29
- };
30
- page.click = function click(selector, options) {
31
- return __awaiter(this, arguments, void 0, function* () {
32
- try {
33
- yield page.waitForSelector(selector, {
34
- timeout: time
35
- });
36
- let elementName = yield page.$eval(selector, (e) => e.textContent);
37
- if (!elementName || elementName === ' ')
38
- elementName = selector;
39
- yield original_click.apply(page, arguments);
40
- log_service_1.default.push('Then', `I click on the '${elementName}'`, status_of_step_1.StatusOfStep.PASSED);
41
- }
42
- catch (e) {
43
- const msg = `I click on the '${selector}'`;
44
- log_service_1.default.push('Then', msg, status_of_step_1.StatusOfStep.FAILED);
45
- throw new Error(msg);
46
- }
47
- });
48
- };
49
- page.waitForNetworkIdle = function waitForNetworkIdle(selector, option) {
50
- return __awaiter(this, arguments, void 0, function* () {
51
- let message = 'I wait for the page to load';
52
- let result;
53
- try {
54
- result = yield original_waitForNetworkIdle.apply(page, arguments);
55
- log_service_1.default.push('Then', message, status_of_step_1.StatusOfStep.PASSED);
56
- }
57
- catch (e) {
58
- log_service_1.default.push('Then', message, status_of_step_1.StatusOfStep.FAILED);
59
- throw new Error(message);
60
- }
61
- return result;
62
- });
63
- };
64
- page.type = function type(field, value) {
65
- return __awaiter(this, arguments, void 0, function* () {
66
- try {
67
- yield page.waitForSelector(field, {
68
- timeout: time
69
- });
70
- yield original_type.apply(page, arguments);
71
- let elementName = yield page.$eval(field, (e) => e.textContent);
72
- if (!elementName || elementName === ' ')
73
- elementName = field;
74
- log_service_1.default.push('Then', `I type '${value}' into the '${elementName}' field`, status_of_step_1.StatusOfStep.PASSED);
75
- }
76
- catch (e) {
77
- const msg = `I type '${value}' into the '${field}' field`;
78
- log_service_1.default.push('Then', msg, status_of_step_1.StatusOfStep.FAILED);
79
- throw new Error(msg);
80
- }
81
- });
82
- };
83
- return page;
84
- });
85
- }
86
- }
87
- exports.ExtendDefaultPage = ExtendDefaultPage;
88
- exports.default = new ExtendDefaultPage();
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ExtendDefaultPage = void 0;
16
+ const log_service_1 = __importDefault(require("../../auxta/services/log.service"));
17
+ const status_of_step_1 = require("../../auxta/enums/status-of.step");
18
+ const config_1 = require("../../auxta/configs/config");
19
+ class ExtendDefaultPage {
20
+ constructor() {
21
+ this.defaultTimeout = config_1.config.timeout;
22
+ }
23
+ extend_page_functions(page, time = this.defaultTimeout) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const { goto: original_goto, click: original_click, type: original_type, waitForNetworkIdle: original_waitForNetworkIdle } = page;
26
+ page.goto = function goto(url, options) {
27
+ log_service_1.default.push('Then', `I go to the '${url}' page`, status_of_step_1.StatusOfStep.PASSED);
28
+ return original_goto.apply(page, arguments);
29
+ };
30
+ page.click = function click(selector, options) {
31
+ return __awaiter(this, arguments, void 0, function* () {
32
+ try {
33
+ yield page.waitForSelector(selector, {
34
+ timeout: time
35
+ });
36
+ let elementName = yield page.$eval(selector, (e) => e.textContent);
37
+ if (!elementName || elementName === ' ')
38
+ elementName = selector;
39
+ yield original_click.apply(page, arguments);
40
+ log_service_1.default.push('Then', `I click on the '${elementName}'`, status_of_step_1.StatusOfStep.PASSED);
41
+ }
42
+ catch (e) {
43
+ const msg = `I click on the '${selector}'`;
44
+ log_service_1.default.push('Then', msg, status_of_step_1.StatusOfStep.FAILED);
45
+ throw new Error(msg);
46
+ }
47
+ });
48
+ };
49
+ page.waitForNetworkIdle = function waitForNetworkIdle(selector, option) {
50
+ return __awaiter(this, arguments, void 0, function* () {
51
+ let message = 'I wait for the page to load';
52
+ let result;
53
+ try {
54
+ result = yield original_waitForNetworkIdle.apply(page, arguments);
55
+ log_service_1.default.push('Then', message, status_of_step_1.StatusOfStep.PASSED);
56
+ }
57
+ catch (e) {
58
+ log_service_1.default.push('Then', message, status_of_step_1.StatusOfStep.FAILED);
59
+ throw new Error(message);
60
+ }
61
+ return result;
62
+ });
63
+ };
64
+ page.type = function type(field, value) {
65
+ return __awaiter(this, arguments, void 0, function* () {
66
+ try {
67
+ yield page.waitForSelector(field, {
68
+ timeout: time
69
+ });
70
+ yield original_type.apply(page, arguments);
71
+ let elementName = yield page.$eval(field, (e) => e.textContent);
72
+ if (!elementName || elementName === ' ')
73
+ elementName = field;
74
+ log_service_1.default.push('Then', `I type '${value}' into the '${elementName}' field`, status_of_step_1.StatusOfStep.PASSED);
75
+ }
76
+ catch (e) {
77
+ const msg = `I type '${value}' into the '${field}' field`;
78
+ log_service_1.default.push('Then', msg, status_of_step_1.StatusOfStep.FAILED);
79
+ throw new Error(msg);
80
+ }
81
+ });
82
+ };
83
+ return page;
84
+ });
85
+ }
86
+ }
87
+ exports.ExtendDefaultPage = ExtendDefaultPage;
88
+ exports.default = new ExtendDefaultPage();
@@ -1,25 +1,25 @@
1
- import { UploadModel } from "../auxta/models/upload.model";
2
- import puppeteer = require("puppeteer");
3
- export declare class Puppeteer {
4
- defaultPage: puppeteer.Page;
5
- private browser;
6
- startBrowser(): Promise<void>;
7
- close(): Promise<void>;
8
- run(event: any, callback: any, featureName?: string, scenarioName?: string, uploadModel?: UploadModel): Promise<{
9
- nextSuites?: undefined;
10
- reportId?: undefined;
11
- currentSuite?: undefined;
12
- retries?: undefined;
13
- } | {
14
- nextSuites: string[];
15
- reportId: string | undefined;
16
- currentSuite: string | undefined;
17
- retries: string;
18
- } | {
19
- statusCode: number;
20
- } | undefined>;
21
- runRPA(event: any, callback: any, uploadModel?: UploadModel, close?: boolean): Promise<any>;
22
- private static setupHeader;
23
- }
24
- declare const _default: Puppeteer;
25
- export default _default;
1
+ import { UploadModel } from "../auxta/models/upload.model";
2
+ import puppeteer = require("puppeteer");
3
+ export declare class Puppeteer {
4
+ defaultPage: puppeteer.Page;
5
+ private browser;
6
+ startBrowser(): Promise<void>;
7
+ close(): Promise<void>;
8
+ run(event: any, callback: any, featureName?: string, scenarioName?: string, uploadModel?: UploadModel): Promise<{
9
+ nextSuites?: undefined;
10
+ reportId?: undefined;
11
+ currentSuite?: undefined;
12
+ retries?: undefined;
13
+ } | {
14
+ nextSuites: string[];
15
+ reportId: string | undefined;
16
+ currentSuite: string | undefined;
17
+ retries: string;
18
+ } | {
19
+ statusCode: number;
20
+ } | undefined>;
21
+ runRPA(event: any, callback: any, uploadModel?: UploadModel, close?: boolean): Promise<any>;
22
+ private static setupHeader;
23
+ }
24
+ declare const _default: Puppeteer;
25
+ export default _default;
@@ -1,196 +1,196 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Puppeteer = void 0;
16
- const log_service_1 = __importDefault(require("../auxta/services/log.service"));
17
- const screenshot_helper_1 = require("../auxta/utilities/screenshot.helper");
18
- const report_hook_1 = require("../auxta/hooks/report.hook");
19
- const AuxTA_1 = __importDefault(require("../AuxTA"));
20
- const status_of_step_1 = require("../auxta/enums/status-of.step");
21
- const config_1 = require("../auxta/configs/config");
22
- const start_suite_helper_1 = require("../auxta/utilities/start-suite.helper");
23
- const report_service_1 = require("../auxta/services/report.service");
24
- const puppeteer = require("puppeteer");
25
- class Puppeteer {
26
- startBrowser() {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- let args = [
29
- '--start-maximized',
30
- ];
31
- if (process.env.ENVIRONMENT != 'LOCAL')
32
- args.push(`--window-size=${config_1.config.screenWidth},${config_1.config.screenHeight}`);
33
- this.browser = yield puppeteer.launch({
34
- executablePath: puppeteer.executablePath(),
35
- args,
36
- ignoreDefaultArgs: ["--enable-automation"],
37
- defaultViewport: process.env.ENVIRONMENT === 'LOCAL' ? null : {
38
- width: config_1.config.screenWidth,
39
- height: config_1.config.screenHeight
40
- },
41
- headless: process.env.ENVIRONMENT === 'LOCAL' ? process.env.headless === 'true' : true
42
- });
43
- this.defaultPage = (yield this.browser.pages())[0];
44
- yield AuxTA_1.default.extend_page_functions(this.defaultPage);
45
- yield this.defaultPage.goto(config_1.config.baseURL, { waitUntil: 'networkidle0' });
46
- yield this.defaultPage.waitForNetworkIdle();
47
- });
48
- }
49
- close() {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- if (this.browser) {
52
- let pages = yield this.browser.pages();
53
- yield Promise.all(pages.map((page) => page.close()));
54
- yield this.browser.close();
55
- }
56
- });
57
- }
58
- run(event, callback, featureName = 'Test feature', scenarioName = 'Test scenario', uploadModel) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- let close;
61
- try {
62
- if (uploadModel === undefined) {
63
- uploadModel = AuxTA_1.default.getUploadModel();
64
- uploadModel.featureName = featureName;
65
- uploadModel.scenarioName = scenarioName;
66
- }
67
- if (event.close === undefined)
68
- close = Puppeteer.setupHeader(event, uploadModel);
69
- let screenshotBuffer;
70
- let errMessage;
71
- let statusCode = 200;
72
- let consoleStack = [];
73
- try {
74
- yield log_service_1.default.push('When', `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
75
- yield this.startBrowser();
76
- this.defaultPage.on('console', (message) => consoleStack.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
77
- .on('pageerror', ({ message }) => consoleStack.push(message))
78
- .on('response', (response) => consoleStack.push(`${response.status()} ${response.url()}`))
79
- .on('requestfailed', (request) => { var _a; return consoleStack.push(`${request.failure() !== null ? (_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText : ""} ${request.url()}`); });
80
- yield callback(event);
81
- log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
82
- }
83
- catch (err) {
84
- console.log("Error message: \n", err);
85
- let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
86
- if (browser_start_retry) {
87
- const result = yield (0, start_suite_helper_1.retrySuite)(uploadModel.nextSuites, uploadModel.reportId, uploadModel.currentSuite, uploadModel.retries);
88
- if (!result) {
89
- return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
90
- currentPageUrl: 'undefined',
91
- console: consoleStack,
92
- error: 'Browser did not open'
93
- });
94
- }
95
- return { statusCode: 204 };
96
- }
97
- errMessage = err;
98
- statusCode = 500;
99
- screenshotBuffer = yield (0, screenshot_helper_1.captureScreenshot)();
100
- log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
101
- yield (0, report_service_1.postNotificationsOnFail)(uploadModel);
102
- }
103
- let url = this.defaultPage.url();
104
- if (close)
105
- yield this.close();
106
- return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
107
- currentPageUrl: url,
108
- console: consoleStack,
109
- error: errMessage
110
- });
111
- }
112
- catch (e) {
113
- console.log("Lib error:", e);
114
- }
115
- finally {
116
- log_service_1.default.clear();
117
- }
118
- });
119
- }
120
- runRPA(event, callback, uploadModel, close) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- let errMessage;
123
- try {
124
- if (uploadModel === undefined)
125
- uploadModel = AuxTA_1.default.getUploadModel();
126
- if (close === undefined) {
127
- try {
128
- if (event.close) {
129
- close = event.close === "true";
130
- }
131
- else {
132
- close = true;
133
- }
134
- if (event.retries) {
135
- uploadModel.retries = Number(event.retries);
136
- }
137
- }
138
- catch (e) {
139
- close = true;
140
- }
141
- }
142
- let consoleStack = [];
143
- try {
144
- yield log_service_1.default.push('When', `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
145
- yield this.startBrowser();
146
- this.defaultPage.on('console', (message) => consoleStack.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
147
- .on('pageerror', ({ message }) => consoleStack.push(message))
148
- .on('response', (response) => consoleStack.push(`${response.status()} ${response.url()}`))
149
- .on('requestfailed', (request) => { var _a; return consoleStack.push(`${request.failure() !== null ? (_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText : ""} ${request.url()}`); });
150
- yield callback(event);
151
- log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
152
- }
153
- catch (err) {
154
- console.log("Error message: \n", err);
155
- let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
156
- if (browser_start_retry) {
157
- yield (0, start_suite_helper_1.retrySuite)([], '', uploadModel.currentSuite, uploadModel.retries);
158
- return { statusCode: 204 };
159
- }
160
- errMessage = err;
161
- log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
162
- return errMessage;
163
- }
164
- if (close)
165
- yield this.close();
166
- }
167
- catch (e) {
168
- console.log("Lib error:", e);
169
- }
170
- finally {
171
- log_service_1.default.clear();
172
- }
173
- return { statusCode: 200 };
174
- });
175
- }
176
- static setupHeader(event, uploadModel) {
177
- let close = true;
178
- if (process.env.ENVIRONMENT !== 'LOCAL' && event) {
179
- uploadModel.reportId = event.reportId;
180
- uploadModel.nextSuites = event.nextSuites;
181
- uploadModel.currentSuite = event.currentSuite;
182
- uploadModel.retries = Number(event.retries);
183
- }
184
- try {
185
- if (event.close) {
186
- close = event.close === "true";
187
- }
188
- return close;
189
- }
190
- catch (e) {
191
- return true;
192
- }
193
- }
194
- }
195
- exports.Puppeteer = Puppeteer;
196
- exports.default = new Puppeteer();
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Puppeteer = void 0;
16
+ const log_service_1 = __importDefault(require("../auxta/services/log.service"));
17
+ const screenshot_helper_1 = require("../auxta/utilities/screenshot.helper");
18
+ const report_hook_1 = require("../auxta/hooks/report.hook");
19
+ const AuxTA_1 = __importDefault(require("../AuxTA"));
20
+ const status_of_step_1 = require("../auxta/enums/status-of.step");
21
+ const config_1 = require("../auxta/configs/config");
22
+ const start_suite_helper_1 = require("../auxta/utilities/start-suite.helper");
23
+ const report_service_1 = require("../auxta/services/report.service");
24
+ const puppeteer = require("puppeteer");
25
+ class Puppeteer {
26
+ startBrowser() {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ let args = [
29
+ '--start-maximized',
30
+ ];
31
+ if (process.env.ENVIRONMENT != 'LOCAL')
32
+ args.push(`--window-size=${config_1.config.screenWidth},${config_1.config.screenHeight}`);
33
+ this.browser = yield puppeteer.launch({
34
+ executablePath: puppeteer.executablePath(),
35
+ args,
36
+ ignoreDefaultArgs: ["--enable-automation"],
37
+ defaultViewport: process.env.ENVIRONMENT === 'LOCAL' ? null : {
38
+ width: config_1.config.screenWidth,
39
+ height: config_1.config.screenHeight
40
+ },
41
+ headless: process.env.ENVIRONMENT === 'LOCAL' ? process.env.headless === 'true' : true
42
+ });
43
+ this.defaultPage = (yield this.browser.pages())[0];
44
+ yield AuxTA_1.default.extend_page_functions(this.defaultPage);
45
+ yield this.defaultPage.goto(config_1.config.baseURL, { waitUntil: 'networkidle0' });
46
+ yield this.defaultPage.waitForNetworkIdle();
47
+ });
48
+ }
49
+ close() {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ if (this.browser) {
52
+ let pages = yield this.browser.pages();
53
+ yield Promise.all(pages.map((page) => page.close()));
54
+ yield this.browser.close();
55
+ }
56
+ });
57
+ }
58
+ run(event, callback, featureName = 'Test feature', scenarioName = 'Test scenario', uploadModel) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ let close;
61
+ try {
62
+ if (uploadModel === undefined) {
63
+ uploadModel = AuxTA_1.default.getUploadModel();
64
+ uploadModel.featureName = featureName;
65
+ uploadModel.scenarioName = scenarioName;
66
+ }
67
+ if (event.close === undefined)
68
+ close = Puppeteer.setupHeader(event, uploadModel);
69
+ let screenshotBuffer;
70
+ let errMessage;
71
+ let statusCode = 200;
72
+ let consoleStack = [];
73
+ try {
74
+ yield log_service_1.default.push('When', `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
75
+ yield this.startBrowser();
76
+ this.defaultPage.on('console', (message) => consoleStack.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
77
+ .on('pageerror', ({ message }) => consoleStack.push(message))
78
+ .on('response', (response) => consoleStack.push(`${response.status()} ${response.url()}`))
79
+ .on('requestfailed', (request) => { var _a; return consoleStack.push(`${request.failure() !== null ? (_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText : ""} ${request.url()}`); });
80
+ yield callback(event);
81
+ log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
82
+ }
83
+ catch (err) {
84
+ console.log("Error message: \n", err);
85
+ let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
86
+ if (browser_start_retry) {
87
+ const result = yield (0, start_suite_helper_1.retrySuite)(uploadModel.nextSuites, uploadModel.reportId, uploadModel.currentSuite, uploadModel.retries);
88
+ if (!result) {
89
+ return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
90
+ currentPageUrl: 'undefined',
91
+ console: consoleStack,
92
+ error: 'Browser did not open'
93
+ });
94
+ }
95
+ return { statusCode: 204 };
96
+ }
97
+ errMessage = err;
98
+ statusCode = 500;
99
+ screenshotBuffer = yield (0, screenshot_helper_1.captureScreenshot)();
100
+ log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
101
+ yield (0, report_service_1.postNotificationsOnFail)(uploadModel);
102
+ }
103
+ let url = this.defaultPage.url();
104
+ if (close)
105
+ yield this.close();
106
+ return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
107
+ currentPageUrl: url,
108
+ console: consoleStack,
109
+ error: errMessage
110
+ });
111
+ }
112
+ catch (e) {
113
+ console.log("Lib error:", e);
114
+ }
115
+ finally {
116
+ log_service_1.default.clear();
117
+ }
118
+ });
119
+ }
120
+ runRPA(event, callback, uploadModel, close) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ let errMessage;
123
+ try {
124
+ if (uploadModel === undefined)
125
+ uploadModel = AuxTA_1.default.getUploadModel();
126
+ if (close === undefined) {
127
+ try {
128
+ if (event.close) {
129
+ close = event.close === "true";
130
+ }
131
+ else {
132
+ close = true;
133
+ }
134
+ if (event.retries) {
135
+ uploadModel.retries = Number(event.retries);
136
+ }
137
+ }
138
+ catch (e) {
139
+ close = true;
140
+ }
141
+ }
142
+ let consoleStack = [];
143
+ try {
144
+ yield log_service_1.default.push('When', `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
145
+ yield this.startBrowser();
146
+ this.defaultPage.on('console', (message) => consoleStack.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
147
+ .on('pageerror', ({ message }) => consoleStack.push(message))
148
+ .on('response', (response) => consoleStack.push(`${response.status()} ${response.url()}`))
149
+ .on('requestfailed', (request) => { var _a; return consoleStack.push(`${request.failure() !== null ? (_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText : ""} ${request.url()}`); });
150
+ yield callback(event);
151
+ log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
152
+ }
153
+ catch (err) {
154
+ console.log("Error message: \n", err);
155
+ let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
156
+ if (browser_start_retry) {
157
+ yield (0, start_suite_helper_1.retrySuite)([], '', uploadModel.currentSuite, uploadModel.retries);
158
+ return { statusCode: 204 };
159
+ }
160
+ errMessage = err;
161
+ log_service_1.default.push('When', `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
162
+ return errMessage;
163
+ }
164
+ if (close)
165
+ yield this.close();
166
+ }
167
+ catch (e) {
168
+ console.log("Lib error:", e);
169
+ }
170
+ finally {
171
+ log_service_1.default.clear();
172
+ }
173
+ return { statusCode: 200 };
174
+ });
175
+ }
176
+ static setupHeader(event, uploadModel) {
177
+ let close = true;
178
+ if (process.env.ENVIRONMENT !== 'LOCAL' && event) {
179
+ uploadModel.reportId = event.reportId;
180
+ uploadModel.nextSuites = event.nextSuites;
181
+ uploadModel.currentSuite = event.currentSuite;
182
+ uploadModel.retries = Number(event.retries);
183
+ }
184
+ try {
185
+ if (event.close) {
186
+ close = event.close === "true";
187
+ }
188
+ return close;
189
+ }
190
+ catch (e) {
191
+ return true;
192
+ }
193
+ }
194
+ }
195
+ exports.Puppeteer = Puppeteer;
196
+ exports.default = new Puppeteer();