@auxcode/auxta 1.3.131 → 1.3.132
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/package.json +1 -1
- package/build/AuxTA.d.ts +0 -60
- package/build/AuxTA.js +0 -168
- package/build/auxta/configs/config.d.ts +0 -63
- package/build/auxta/configs/config.js +0 -78
- package/build/auxta/enums/status-of.step.d.ts +0 -9
- package/build/auxta/enums/status-of.step.js +0 -13
- package/build/auxta/helpers/response.helper.d.ts +0 -9
- package/build/auxta/helpers/response.helper.js +0 -14
- package/build/auxta/helpers/start.helper.d.ts +0 -1
- package/build/auxta/helpers/start.helper.js +0 -26
- package/build/auxta/hooks/report.hook.d.ts +0 -13
- package/build/auxta/hooks/report.hook.js +0 -68
- package/build/auxta/models/upload.model.d.ts +0 -41
- package/build/auxta/models/upload.model.js +0 -96
- package/build/auxta/services/log.service.d.ts +0 -39
- package/build/auxta/services/log.service.js +0 -109
- package/build/auxta/services/report.service.d.ts +0 -41
- package/build/auxta/services/report.service.js +0 -269
- package/build/auxta/services/runtime.service.d.ts +0 -16
- package/build/auxta/services/runtime.service.js +0 -40
- package/build/auxta/utilities/runtime.helper.d.ts +0 -15
- package/build/auxta/utilities/runtime.helper.js +0 -19
- package/build/auxta/utilities/screenshot.helper.d.ts +0 -3
- package/build/auxta/utilities/screenshot.helper.js +0 -100
- package/build/auxta/utilities/start-suite.helper.d.ts +0 -17
- package/build/auxta/utilities/start-suite.helper.js +0 -30
- package/build/macros/helpers/Aux2faAuth.d.ts +0 -7
- package/build/macros/helpers/Aux2faAuth.js +0 -29
- package/build/macros/helpers/code.helper.d.ts +0 -34
- package/build/macros/helpers/code.helper.js +0 -352
- package/build/macros/helpers/emailHelper.d.ts +0 -7
- package/build/macros/helpers/emailHelper.js +0 -54
- package/build/macros/helpers/extend-default-page.d.ts +0 -6
- package/build/macros/helpers/extend-default-page.js +0 -92
- package/build/puppeteer/puppeteer.d.ts +0 -35
- package/build/puppeteer/puppeteer.js +0 -339
|
@@ -1,339 +0,0 @@
|
|
|
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 puppeteer = require("puppeteer");
|
|
24
|
-
class Puppeteer {
|
|
25
|
-
constructor() {
|
|
26
|
-
this._tabLogs = {};
|
|
27
|
-
}
|
|
28
|
-
attachListenersToAllTabs(consoleMessage, httpsMessage, debugMessage) {
|
|
29
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
let tabSeq = 0;
|
|
31
|
-
const serializeArgs = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
const out = [];
|
|
33
|
-
try {
|
|
34
|
-
const args = msg.args && typeof msg.args === 'function' ? msg.args() : [];
|
|
35
|
-
for (const a of args) {
|
|
36
|
-
try {
|
|
37
|
-
out.push(yield a.jsonValue());
|
|
38
|
-
}
|
|
39
|
-
catch (_a) {
|
|
40
|
-
try {
|
|
41
|
-
out.push(String(a));
|
|
42
|
-
}
|
|
43
|
-
catch (_b) {
|
|
44
|
-
out.push('[unserializable]');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (_c) { }
|
|
50
|
-
return out;
|
|
51
|
-
});
|
|
52
|
-
const attach = (page, fixedIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
const id = typeof fixedIndex === 'number' ? fixedIndex : (++tabSeq);
|
|
54
|
-
const suffix = ` [tab ${id}]`;
|
|
55
|
-
if (!this._tabLogs[id])
|
|
56
|
-
this._tabLogs[id] = { console: [], https: [], debug: [] };
|
|
57
|
-
page
|
|
58
|
-
.on('console', (message) => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
try {
|
|
60
|
-
const entry = {
|
|
61
|
-
ts: Date.now(),
|
|
62
|
-
level: message.type && typeof message.type === 'function' ? message.type() : 'log',
|
|
63
|
-
text: (message.text && typeof message.text === 'function') ? message.text() : String(message)
|
|
64
|
-
};
|
|
65
|
-
try {
|
|
66
|
-
const loc = (message.location && typeof message.location === 'function') ? message.location() : undefined;
|
|
67
|
-
if (loc)
|
|
68
|
-
entry.location = loc;
|
|
69
|
-
}
|
|
70
|
-
catch (_a) { }
|
|
71
|
-
try {
|
|
72
|
-
entry.args = yield serializeArgs(message);
|
|
73
|
-
}
|
|
74
|
-
catch (_b) { }
|
|
75
|
-
this._tabLogs[id].debug.push(entry);
|
|
76
|
-
if (debugMessage)
|
|
77
|
-
debugMessage.push(entry);
|
|
78
|
-
const short = `${String(entry.level).substr(0, 3).toUpperCase()} ${entry.text}${suffix}`;
|
|
79
|
-
consoleMessage.push(short);
|
|
80
|
-
this._tabLogs[id].console.push(`${String(entry.level).substr(0, 3).toUpperCase()} ${entry.text}`);
|
|
81
|
-
}
|
|
82
|
-
catch (_c) {
|
|
83
|
-
}
|
|
84
|
-
}))
|
|
85
|
-
.on('pageerror', ({ message }) => {
|
|
86
|
-
consoleMessage.push(`${message}${suffix}`);
|
|
87
|
-
this._tabLogs[id].console.push(`${message}`);
|
|
88
|
-
})
|
|
89
|
-
.on('response', (response) => {
|
|
90
|
-
try {
|
|
91
|
-
const line = `${response.status()} ${response.url()}${suffix}`;
|
|
92
|
-
httpsMessage.push(line);
|
|
93
|
-
this._tabLogs[id].https.push(`${response.status()} ${response.url()}`);
|
|
94
|
-
this._tabLogs[id].url = response.url();
|
|
95
|
-
}
|
|
96
|
-
catch (_a) { }
|
|
97
|
-
})
|
|
98
|
-
.on('requestfailed', (request) => {
|
|
99
|
-
try {
|
|
100
|
-
const failure = request.failure && request.failure();
|
|
101
|
-
const err = failure ? failure.errorText : '';
|
|
102
|
-
const line = `${err !== null && err !== void 0 ? err : ''} ${request.url()}${suffix}`;
|
|
103
|
-
httpsMessage.push(line);
|
|
104
|
-
this._tabLogs[id].https.push(`${err !== null && err !== void 0 ? err : ''} ${request.url()}`);
|
|
105
|
-
this._tabLogs[id].url = request.url();
|
|
106
|
-
}
|
|
107
|
-
catch (_a) { }
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
const pages = yield this.browser.pages();
|
|
111
|
-
tabSeq = pages.length - 1;
|
|
112
|
-
yield Promise.all(pages.map((p, idx) => attach(p, idx)));
|
|
113
|
-
this.browser.on('targetcreated', (target) => __awaiter(this, void 0, void 0, function* () {
|
|
114
|
-
try {
|
|
115
|
-
if (typeof target.page === 'function') {
|
|
116
|
-
const page = yield target.page();
|
|
117
|
-
if (page)
|
|
118
|
-
yield attach(page);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch (_a) { }
|
|
122
|
-
}));
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
getTabLogs() {
|
|
126
|
-
return this._tabLogs;
|
|
127
|
-
}
|
|
128
|
-
static setupHeader(event, uploadModel) {
|
|
129
|
-
let close = true;
|
|
130
|
-
if (process.env.ENVIRONMENT !== 'LOCAL' && event) {
|
|
131
|
-
uploadModel.reportId = event.reportId;
|
|
132
|
-
uploadModel.nextSuites = event.nextSuites;
|
|
133
|
-
uploadModel.currentSuite = event.currentSuite;
|
|
134
|
-
uploadModel.retries = Number(event.retries);
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
if (event.close) {
|
|
138
|
-
close = event.close === "true";
|
|
139
|
-
}
|
|
140
|
-
return close;
|
|
141
|
-
}
|
|
142
|
-
catch (e) {
|
|
143
|
-
return true;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
startBrowser() {
|
|
147
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
-
var _a;
|
|
149
|
-
let args = [];
|
|
150
|
-
if (process.env.ENVIRONMENT === 'LOCAL') {
|
|
151
|
-
args.push('--start-maximized');
|
|
152
|
-
}
|
|
153
|
-
args.push(`--window-size=${config_1.config.screenWidth ? config_1.config.screenWidth : 1920},${config_1.config.screenHeight ? config_1.config.screenHeight : 1080}`);
|
|
154
|
-
args.push("--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu");
|
|
155
|
-
args.push('--enable-automation=false');
|
|
156
|
-
args.push('--disable-dev-shm-usage');
|
|
157
|
-
let env = Object.assign(Object.assign({}, process.env), { DISPLAY: (_a = process.env.DISPLAY) !== null && _a !== void 0 ? _a : ":10.0" });
|
|
158
|
-
this.browser = yield puppeteer.default.launch({
|
|
159
|
-
slowMo: process.env.slowMo ? Number(process.env.slowMo) : 0,
|
|
160
|
-
executablePath: yield puppeteer.default.executablePath(),
|
|
161
|
-
args,
|
|
162
|
-
env,
|
|
163
|
-
ignoreDefaultArgs: ["--enable-automation"],
|
|
164
|
-
defaultViewport: process.env.ENVIRONMENT === 'LOCAL' ? null : {
|
|
165
|
-
width: config_1.config.screenWidth,
|
|
166
|
-
height: config_1.config.screenHeight
|
|
167
|
-
},
|
|
168
|
-
headless: process.env.ENVIRONMENT === 'LOCAL' ? (process.env.headless === 'true') : true
|
|
169
|
-
});
|
|
170
|
-
this.defaultPage = (yield this.browser.pages())[0];
|
|
171
|
-
yield AuxTA_1.default.extend_page_functions(this.defaultPage);
|
|
172
|
-
yield this.defaultPage.goto(config_1.config.baseURL, { waitUntil: 'networkidle0' });
|
|
173
|
-
yield this.defaultPage.waitForNetworkIdle();
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
close() {
|
|
177
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
-
if (this.browser) {
|
|
179
|
-
let pages = yield this.browser.pages();
|
|
180
|
-
yield Promise.all(pages.map((page) => page.close()));
|
|
181
|
-
yield this.browser.close();
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
initiateBrowser(consoleMessage, httpsMessage, debugStack) {
|
|
186
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
yield this.startBrowser();
|
|
188
|
-
yield this.attachListenersToAllTabs(consoleMessage, httpsMessage, debugStack);
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
logFail(consoleMessage) {
|
|
192
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
193
|
-
const pages = yield this.defaultPage.browser().pages();
|
|
194
|
-
consoleMessage.push('pages');
|
|
195
|
-
consoleMessage.push(pages.length);
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
run(event_1, callback_1) {
|
|
199
|
-
return __awaiter(this, arguments, void 0, function* (event, callback, featureName = 'Test feature', scenarioName = 'Test scenario', uploadModel) {
|
|
200
|
-
var _a, _b, _c, _d;
|
|
201
|
-
let close;
|
|
202
|
-
let debugStack = [];
|
|
203
|
-
try {
|
|
204
|
-
if (uploadModel === undefined) {
|
|
205
|
-
uploadModel = AuxTA_1.default.getUploadModel();
|
|
206
|
-
uploadModel.featureName = featureName;
|
|
207
|
-
uploadModel.scenarioName = scenarioName;
|
|
208
|
-
}
|
|
209
|
-
if (event.close === undefined)
|
|
210
|
-
close = Puppeteer.setupHeader(event, uploadModel);
|
|
211
|
-
let screenshotBuffer;
|
|
212
|
-
let errMessage;
|
|
213
|
-
let statusCode = 200;
|
|
214
|
-
let consoleMessage = [];
|
|
215
|
-
let httpsMessage = [];
|
|
216
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
217
|
-
try {
|
|
218
|
-
yield this.initiateBrowser(consoleMessage, httpsMessage, debugStack);
|
|
219
|
-
yield callback(event);
|
|
220
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
221
|
-
}
|
|
222
|
-
catch (err) {
|
|
223
|
-
console.log("Error message: \n", err);
|
|
224
|
-
if (process.env.ENVIRONMENT !== 'LOCAL') {
|
|
225
|
-
if (uploadModel.toRetry) {
|
|
226
|
-
log_service_1.default.clear();
|
|
227
|
-
log_service_1.default.clearTag();
|
|
228
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Retrying puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
229
|
-
try {
|
|
230
|
-
yield this.close();
|
|
231
|
-
yield this.initiateBrowser(consoleMessage, httpsMessage, debugStack);
|
|
232
|
-
yield callback(event);
|
|
233
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Finished puppeteer process from the 2nd try`, status_of_step_1.StatusOfStep.PASSED);
|
|
234
|
-
}
|
|
235
|
-
catch (err) {
|
|
236
|
-
this.logFail(consoleMessage);
|
|
237
|
-
errMessage = err;
|
|
238
|
-
statusCode = 500;
|
|
239
|
-
screenshotBuffer = yield (0, screenshot_helper_1.captureScreenshot)();
|
|
240
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Failed puppeteer process from the 2nd try`, status_of_step_1.StatusOfStep.FAILED);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
this.logFail(consoleMessage);
|
|
245
|
-
errMessage = err;
|
|
246
|
-
statusCode = 500;
|
|
247
|
-
screenshotBuffer = yield (0, screenshot_helper_1.captureScreenshot)();
|
|
248
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
let url = this.defaultPage.url();
|
|
253
|
-
if (close)
|
|
254
|
-
yield this.close();
|
|
255
|
-
let activeTabIndex = undefined;
|
|
256
|
-
try {
|
|
257
|
-
const _pagesForFinish = yield this.defaultPage.browser().pages();
|
|
258
|
-
if (_pagesForFinish && _pagesForFinish.length)
|
|
259
|
-
activeTabIndex = _pagesForFinish.length - 1;
|
|
260
|
-
}
|
|
261
|
-
catch (_e) { }
|
|
262
|
-
const tabLogs = this.getTabLogs();
|
|
263
|
-
const chosen = (activeTabIndex !== undefined && tabLogs && tabLogs[activeTabIndex]) ? tabLogs[activeTabIndex] : undefined;
|
|
264
|
-
const perTabConsole = (_a = chosen === null || chosen === void 0 ? void 0 : chosen.console) !== null && _a !== void 0 ? _a : consoleMessage;
|
|
265
|
-
const perTabHttps = (_b = chosen === null || chosen === void 0 ? void 0 : chosen.https) !== null && _b !== void 0 ? _b : httpsMessage;
|
|
266
|
-
const perTabUrl = (_c = chosen === null || chosen === void 0 ? void 0 : chosen.url) !== null && _c !== void 0 ? _c : url;
|
|
267
|
-
const perTabDebug = (_d = chosen === null || chosen === void 0 ? void 0 : chosen.debug) !== null && _d !== void 0 ? _d : debugStack;
|
|
268
|
-
return yield (0, report_hook_1.onTestEnd)(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
|
|
269
|
-
currentPageUrl: perTabUrl,
|
|
270
|
-
console: perTabConsole,
|
|
271
|
-
https: perTabHttps,
|
|
272
|
-
error: errMessage, debug: perTabDebug, byTab: this.getTabLogs()
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
catch (e) {
|
|
276
|
-
console.log("Lib error:", e);
|
|
277
|
-
}
|
|
278
|
-
finally {
|
|
279
|
-
log_service_1.default.clear();
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
runRPA(event, callback, uploadModel, close) {
|
|
284
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
285
|
-
let errMessage;
|
|
286
|
-
try {
|
|
287
|
-
if (uploadModel === undefined)
|
|
288
|
-
uploadModel = AuxTA_1.default.getUploadModel();
|
|
289
|
-
if (close === undefined) {
|
|
290
|
-
try {
|
|
291
|
-
if (event.close) {
|
|
292
|
-
close = event.close === "true";
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
close = true;
|
|
296
|
-
}
|
|
297
|
-
if (event.retries) {
|
|
298
|
-
uploadModel.retries = Number(event.retries);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
catch (e) {
|
|
302
|
-
close = true;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
let consoleStack = [];
|
|
306
|
-
let debugStack = [];
|
|
307
|
-
try {
|
|
308
|
-
yield log_service_1.default.push('When', log_service_1.default.tag, `Starting puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
309
|
-
yield this.startBrowser();
|
|
310
|
-
yield this.attachListenersToAllTabs(consoleStack, consoleStack, debugStack);
|
|
311
|
-
yield callback(event);
|
|
312
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Finished puppeteer process`, status_of_step_1.StatusOfStep.PASSED);
|
|
313
|
-
}
|
|
314
|
-
catch (err) {
|
|
315
|
-
console.log("Error message: \n", err);
|
|
316
|
-
let browser_start_retry = err.toString().includes("Failed to launch the browser process!");
|
|
317
|
-
if (browser_start_retry) {
|
|
318
|
-
yield (0, start_suite_helper_1.retrySuite)([], '', uploadModel.currentSuite, uploadModel.retries);
|
|
319
|
-
return { statusCode: 204 };
|
|
320
|
-
}
|
|
321
|
-
errMessage = err;
|
|
322
|
-
log_service_1.default.push('When', log_service_1.default.tag, `Finished puppeteer process`, status_of_step_1.StatusOfStep.FAILED);
|
|
323
|
-
return errMessage;
|
|
324
|
-
}
|
|
325
|
-
if (close)
|
|
326
|
-
yield this.close();
|
|
327
|
-
}
|
|
328
|
-
catch (e) {
|
|
329
|
-
console.log("Lib error:", e);
|
|
330
|
-
}
|
|
331
|
-
finally {
|
|
332
|
-
log_service_1.default.clear();
|
|
333
|
-
}
|
|
334
|
-
return { statusCode: 200 };
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
exports.Puppeteer = Puppeteer;
|
|
339
|
-
exports.default = new Puppeteer();
|