@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,243 +1,252 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import log from "../../auxta/services/log.service";
11
- import puppeteer from "../../puppeteer/puppeteer";
12
- import { StatusOfStep } from "../../auxta/enums/status-of.step";
13
- import { StepStatus } from "../../AuxTA";
14
- import { ExtendDefaultPage } from "./extend-default-page";
15
- import { KnownDevices } from "puppeteer";
16
- import { AuxGoogleAuth } from "./AuxGoogleAuth";
17
- import { atob } from "buffer";
18
- export class FunctionHelper extends ExtendDefaultPage {
19
- log(keyword, name, status) {
20
- log.push(keyword, name, status);
21
- }
22
- suggest(name) {
23
- log.addSuggestion(name);
24
- }
25
- getEscapedText(text) {
26
- const splitedQuotes = text.replace(/'/g, `', "'", '`);
27
- return `concat('${splitedQuotes}', '')`;
28
- }
29
- clickByText(selector, text, dotOrText = '.', options = {}, page = puppeteer.defaultPage, time = this.defaultTimeout, log_message = true) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- const message = `I clicked on the '${text}' '${selector}'`;
32
- try {
33
- const [linkHandlers] = yield page.$x(`//${selector}[contains(${dotOrText},"${text}")]`);
34
- if (linkHandlers) {
35
- yield linkHandlers.click(options);
36
- log.push('Then', message, StatusOfStep.PASSED);
37
- }
38
- }
39
- catch (e) {
40
- if (log_message) {
41
- log.push('And', `${message}, but it didn't appear in ${time / 1000} seconds.`, StatusOfStep.FAILED);
42
- }
43
- throw new Error(message);
44
- }
45
- if (log_message) {
46
- log.push('And', message, StatusOfStep.PASSED);
47
- }
48
- });
49
- }
50
- clickByTextWithClass(class_selector, class_name, selector, text, dotOrText = '.', page = puppeteer.defaultPage) {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- const message = `I click on the '${text}' '${selector}'`;
53
- try {
54
- const [linkHandlers] = yield page.$x(`//${class_selector}[contains(@class,${this.getEscapedText(class_name)})]//${selector}[contains(${dotOrText},"${text}")]`);
55
- if (linkHandlers) {
56
- yield linkHandlers.click();
57
- log.push('Then', message, StatusOfStep.PASSED);
58
- return;
59
- }
60
- }
61
- catch (e) {
62
- }
63
- log.push('Then', message, StatusOfStep.FAILED);
64
- throw new Error(message);
65
- });
66
- }
67
- waitForSelectorWithText(selector, text, dotOrText = '.', page = puppeteer.defaultPage) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- const message = `I check for '${text}' on the current page`;
70
- try {
71
- yield page.waitForSelector(selector, {
72
- timeout: this.defaultTimeout
73
- });
74
- const linkHandlers = yield page.$x(`//${selector}[contains(${dotOrText},"${text}")]`);
75
- if (linkHandlers.length > 0) {
76
- log.push('And', message, StatusOfStep.PASSED);
77
- return true;
78
- }
79
- }
80
- catch (e) {
81
- }
82
- log.push('And', message, StatusOfStep.FAILED);
83
- throw new Error(message);
84
- });
85
- }
86
- timeout(timeout = this.defaultTimeout, page = puppeteer.defaultPage) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- yield page.waitForTimeout(timeout);
89
- });
90
- }
91
- waitForSelector(option, selector, time = this.defaultTimeout, page = puppeteer.defaultPage, log_message = true) {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- const message = `I checked for the '${selector}' element to be ${option}`;
94
- try {
95
- yield page.waitForSelector(selector, {
96
- [option]: true,
97
- timeout: time
98
- });
99
- }
100
- catch (e) {
101
- if (log_message) {
102
- log.push('And', `${message}, but it didn't appear in ${time / 1000} seconds.`, StatusOfStep.FAILED);
103
- }
104
- throw new Error(message);
105
- }
106
- if (log_message) {
107
- log.push('And', message, StatusOfStep.PASSED);
108
- }
109
- });
110
- }
111
- urlContains(selector, page = puppeteer.defaultPage) {
112
- return __awaiter(this, void 0, void 0, function* () {
113
- const url = page.url();
114
- let message = `I am on the ${selector} page`;
115
- if (!url.includes(selector)) {
116
- log.push('And', message, StatusOfStep.FAILED);
117
- throw new Error(message);
118
- }
119
- log.push('And', message, StatusOfStep.PASSED);
120
- });
121
- }
122
- pressEnter(page = puppeteer.defaultPage) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- yield page.keyboard.press('Enter');
125
- });
126
- }
127
- emulate(phone_name, page = puppeteer.defaultPage) {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- const phone = KnownDevices[phone_name];
130
- yield page.emulate(phone);
131
- });
132
- }
133
- restartBrowser() {
134
- return __awaiter(this, void 0, void 0, function* () {
135
- yield puppeteer.close();
136
- yield puppeteer.startBrowser();
137
- });
138
- }
139
- clickAndWaitForPageToBeCreated(selector, page = puppeteer.defaultPage) {
140
- return __awaiter(this, void 0, void 0, function* () {
141
- const nav = new Promise(res => page.browser().on('targetcreated', res));
142
- yield page.click(selector);
143
- yield nav;
144
- });
145
- }
146
- closeLastPage(page = puppeteer.defaultPage) {
147
- return __awaiter(this, void 0, void 0, function* () {
148
- const pages = yield page.browser().pages();
149
- yield pages[pages.length - 1].close();
150
- });
151
- }
152
- microsoftLogin(button, email, password) {
153
- var _a;
154
- return __awaiter(this, void 0, void 0, function* () {
155
- const email_input = 'input[type="email"]';
156
- const password_input = 'input[type="password"]';
157
- const next_button = 'input[value="Next"]';
158
- const sign_in_button = 'input[value="Sign in"]';
159
- const no_button = 'input.ext-secondary';
160
- yield this.clickAndWaitForPageToBeCreated(button);
161
- const pages = yield puppeteer.defaultPage.browser().pages();
162
- const loginPage = pages[pages.length - 1];
163
- yield this.extend_page_functions(loginPage);
164
- yield loginPage.waitForNetworkIdle();
165
- yield this.waitForSelector('visible', next_button, 60000, loginPage);
166
- yield loginPage.type(email_input, email);
167
- yield loginPage.keyboard.press('Enter');
168
- yield loginPage.waitForNetworkIdle();
169
- yield this.waitForSelector('visible', sign_in_button, 60000, loginPage);
170
- yield this.waitForSelector('visible', password_input, 6000, loginPage);
171
- try {
172
- (_a = (yield loginPage.$(password_input))) === null || _a === void 0 ? void 0 : _a.type(password);
173
- yield this.log('Then', `I type password into the ${password_input}`, StepStatus.PASSED);
174
- }
175
- catch (e) {
176
- yield this.log('Then', `I type password into the ${password_input}`, StepStatus.FAILED);
177
- throw new Error(`I type password into the ${password_input}`);
178
- }
179
- yield this.timeout(3000);
180
- yield loginPage.keyboard.press('Enter');
181
- yield this.waitForSelector('visible', no_button, 60000, loginPage);
182
- yield loginPage.keyboard.press('Enter');
183
- yield loginPage.waitForNetworkIdle();
184
- });
185
- }
186
- clickInMail(from_name, from_email, subject, body) {
187
- return __awaiter(this, void 0, void 0, function* () {
188
- yield AuxGoogleAuth.setup();
189
- const res = yield AuxGoogleAuth.gmailClient.users.messages.list({
190
- userId: "me",
191
- maxResults: 3
192
- });
193
- const messagesIds = res.data.messages;
194
- if (!messagesIds || messagesIds.length === 0) {
195
- throw new Error('No messagesIds found.');
196
- }
197
- let timeoutCount = 12000;
198
- yield this.timeout(12000);
199
- while (timeoutCount <= 60000) {
200
- for (const messageId of messagesIds) {
201
- if (messageId.id) {
202
- const gmailResponse = yield AuxGoogleAuth.gmailClient.users.messages.get({
203
- userId: "me",
204
- id: messageId.id.toString(),
205
- format: 'FULL'
206
- });
207
- if (gmailResponse.data.payload) {
208
- const message_sender = this.getHeader('from', gmailResponse.data.payload.headers);
209
- const message_subject = this.getHeader('subject', gmailResponse.data.payload.headers);
210
- const message_body = this.getBody(from_name, from_email, subject, gmailResponse);
211
- if (message_sender.includes(from_email) && message_sender.includes(from_name.toLocaleLowerCase()) &&
212
- message_subject.includes(subject.toLocaleLowerCase()) && message_body.includes(body.toLocaleLowerCase())) {
213
- yield this.log('Then', `Email from: ${from_name} ${from_email} with subject: ${subject} and body: ${body} is found`, StepStatus.PASSED);
214
- return true;
215
- }
216
- }
217
- break;
218
- }
219
- }
220
- yield this.timeout(12000);
221
- timeoutCount += 12000;
222
- }
223
- yield this.log('Then', `Email from: ${from_name} ${from_email} with subject: ${subject} and body: ${body} is found`, StepStatus.FAILED);
224
- });
225
- }
226
- getHeader(value, headers) {
227
- for (const header of headers) {
228
- if (header.name.toLocaleLowerCase() === value.toLocaleLowerCase()) {
229
- return header.value.toLocaleLowerCase();
230
- }
231
- }
232
- }
233
- getBody(from_name, from_email, subject, gmailResponse) {
234
- const body = gmailResponse.data.payload.parts[0].body.data;
235
- if (body) {
236
- return atob(body).toLocaleLowerCase();
237
- }
238
- else {
239
- throw new Error(`Email from: ${from_name} ${from_email} with subject: ${subject} body is empty`);
240
- }
241
- }
242
- }
243
- export default new FunctionHelper();
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import log from "../../auxta/services/log.service";
11
+ import puppeteer from "../../puppeteer/puppeteer";
12
+ import { StatusOfStep } from "../../auxta/enums/status-of.step";
13
+ import { StepStatus } from "../../AuxTA";
14
+ import { ExtendDefaultPage } from "./extend-default-page";
15
+ import { KnownDevices } from "puppeteer";
16
+ import { AuxGoogleAuth } from "./AuxGoogleAuth";
17
+ import { atob } from "buffer";
18
+ export class FunctionHelper extends ExtendDefaultPage {
19
+ log(keyword, name, status) {
20
+ log.push(keyword, name, status);
21
+ }
22
+ suggest(name) {
23
+ log.addSuggestion(name);
24
+ }
25
+ getEscapedText(text) {
26
+ const splitedQuotes = text.replace(/'/g, `', "'", '`);
27
+ return `concat('${splitedQuotes}', '')`;
28
+ }
29
+ clickByText(selector, text, dotOrText = '.', options = {}, page = puppeteer.defaultPage, time = this.defaultTimeout, log_message = true) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ const message = `I clicked on the '${text}' '${selector}'`;
32
+ try {
33
+ const [linkHandlers] = yield page.$x(`//${selector}[contains(${dotOrText},"${text}")]`);
34
+ if (linkHandlers) {
35
+ yield linkHandlers.click(options);
36
+ log.push('Then', message, StatusOfStep.PASSED);
37
+ }
38
+ }
39
+ catch (e) {
40
+ if (log_message) {
41
+ log.push('And', `${message}, but it didn't appear in ${time / 1000} seconds.`, StatusOfStep.FAILED);
42
+ }
43
+ throw new Error(message);
44
+ }
45
+ if (log_message) {
46
+ log.push('And', message, StatusOfStep.PASSED);
47
+ }
48
+ });
49
+ }
50
+ clickByTextWithClass(class_selector, class_name, selector, text, dotOrText = '.', page = puppeteer.defaultPage) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const message = `I click on the '${text}' '${selector}'`;
53
+ try {
54
+ const [linkHandlers] = yield page.$x(`//${class_selector}[contains(@class,${this.getEscapedText(class_name)})]//${selector}[contains(${dotOrText},"${text}")]`);
55
+ if (linkHandlers) {
56
+ yield linkHandlers.click();
57
+ log.push('Then', message, StatusOfStep.PASSED);
58
+ return;
59
+ }
60
+ }
61
+ catch (e) {
62
+ }
63
+ log.push('Then', message, StatusOfStep.FAILED);
64
+ throw new Error(message);
65
+ });
66
+ }
67
+ waitForSelectorWithText(selector, text, dotOrText = '.', page = puppeteer.defaultPage) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const message = `I check for '${text}' on the current page`;
70
+ try {
71
+ yield page.waitForSelector(selector, {
72
+ timeout: this.defaultTimeout
73
+ });
74
+ const linkHandlers = yield page.$x(`//${selector}[contains(${dotOrText},"${text}")]`);
75
+ if (linkHandlers.length > 0) {
76
+ log.push('And', message, StatusOfStep.PASSED);
77
+ return true;
78
+ }
79
+ }
80
+ catch (e) {
81
+ }
82
+ log.push('And', message, StatusOfStep.FAILED);
83
+ throw new Error(message);
84
+ });
85
+ }
86
+ timeout(timeout = this.defaultTimeout, page = puppeteer.defaultPage) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ yield page.waitForTimeout(timeout);
89
+ });
90
+ }
91
+ waitForSelector(option, selector, time = this.defaultTimeout, page = puppeteer.defaultPage, log_message = true) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const message = `I checked for the '${selector}' element to be ${option}`;
94
+ try {
95
+ yield page.waitForSelector(selector, {
96
+ [option]: true,
97
+ timeout: time
98
+ });
99
+ }
100
+ catch (e) {
101
+ if (log_message) {
102
+ log.push('And', `${message}, but it didn't appear in ${time / 1000} seconds.`, StatusOfStep.FAILED);
103
+ }
104
+ throw new Error(message);
105
+ }
106
+ if (log_message) {
107
+ log.push('And', message, StatusOfStep.PASSED);
108
+ }
109
+ });
110
+ }
111
+ urlContains(selector, page = puppeteer.defaultPage) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const url = page.url();
114
+ let message = `I am on the ${selector} page`;
115
+ if (!url.includes(selector)) {
116
+ log.push('And', message, StatusOfStep.FAILED);
117
+ throw new Error(message);
118
+ }
119
+ log.push('And', message, StatusOfStep.PASSED);
120
+ });
121
+ }
122
+ pressEnter(page = puppeteer.defaultPage) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ yield page.keyboard.press('Enter');
125
+ });
126
+ }
127
+ emulate(phone_name, page = puppeteer.defaultPage) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ const phone = KnownDevices[phone_name];
130
+ yield page.emulate(phone);
131
+ });
132
+ }
133
+ restartBrowser() {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ yield puppeteer.close();
136
+ yield puppeteer.startBrowser();
137
+ });
138
+ }
139
+ clickAndWaitForPageToBeCreated(selector, page = puppeteer.defaultPage) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ const nav = new Promise(res => page.browser().on('targetcreated', res));
142
+ yield page.click(selector);
143
+ yield nav;
144
+ });
145
+ }
146
+ closeLastPage(page = puppeteer.defaultPage) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ const pages = yield page.browser().pages();
149
+ yield pages[pages.length - 1].close();
150
+ });
151
+ }
152
+ microsoftLogin(button, email, password) {
153
+ var _a;
154
+ return __awaiter(this, void 0, void 0, function* () {
155
+ const email_input = 'input[type="email"]';
156
+ const password_input = 'input[type="password"]';
157
+ const next_button = 'input[value="Next"]';
158
+ const sign_in_button = 'input[value="Sign in"]';
159
+ const no_button = 'input.ext-secondary';
160
+ yield this.clickAndWaitForPageToBeCreated(button);
161
+ const pages = yield puppeteer.defaultPage.browser().pages();
162
+ const loginPage = pages[pages.length - 1];
163
+ yield this.extend_page_functions(loginPage);
164
+ yield loginPage.waitForNetworkIdle();
165
+ yield this.waitForSelector('visible', next_button, 60000, loginPage);
166
+ yield loginPage.type(email_input, email);
167
+ yield loginPage.keyboard.press('Enter');
168
+ yield loginPage.waitForNetworkIdle();
169
+ let isWorkOrPersonalVisible = yield puppeteer.defaultPage.$('div.table');
170
+ if (!!isWorkOrPersonalVisible) {
171
+ yield (yield puppeteer.defaultPage.$$('div.table'))[0].click();
172
+ console.log('Then', 'I clicked Work or school account', StepStatus.PASSED);
173
+ yield puppeteer.defaultPage.waitForNetworkIdle();
174
+ }
175
+ else {
176
+ yield puppeteer.defaultPage.waitForNetworkIdle();
177
+ }
178
+ yield this.waitForSelector('visible', sign_in_button, 60000, loginPage);
179
+ yield this.waitForSelector('visible', password_input, 6000, loginPage);
180
+ try {
181
+ (_a = (yield loginPage.$(password_input))) === null || _a === void 0 ? void 0 : _a.type(password);
182
+ yield this.log('Then', `I type password into the ${password_input}`, StepStatus.PASSED);
183
+ }
184
+ catch (e) {
185
+ yield this.log('Then', `I type password into the ${password_input}`, StepStatus.FAILED);
186
+ throw new Error(`I type password into the ${password_input}`);
187
+ }
188
+ yield this.timeout(3000);
189
+ yield loginPage.keyboard.press('Enter');
190
+ yield this.waitForSelector('visible', no_button, 60000, loginPage);
191
+ yield loginPage.keyboard.press('Enter');
192
+ yield loginPage.waitForNetworkIdle();
193
+ });
194
+ }
195
+ clickInMail(from_name, from_email, subject, body) {
196
+ return __awaiter(this, void 0, void 0, function* () {
197
+ yield AuxGoogleAuth.setup();
198
+ const res = yield AuxGoogleAuth.gmailClient.users.messages.list({
199
+ userId: "me",
200
+ maxResults: 3
201
+ });
202
+ const messagesIds = res.data.messages;
203
+ if (!messagesIds || messagesIds.length === 0) {
204
+ throw new Error('No messagesIds found.');
205
+ }
206
+ let timeoutCount = 12000;
207
+ yield this.timeout(12000);
208
+ while (timeoutCount <= 60000) {
209
+ for (const messageId of messagesIds) {
210
+ if (messageId.id) {
211
+ const gmailResponse = yield AuxGoogleAuth.gmailClient.users.messages.get({
212
+ userId: "me",
213
+ id: messageId.id.toString(),
214
+ format: 'FULL'
215
+ });
216
+ if (gmailResponse.data.payload) {
217
+ const message_sender = this.getHeader('from', gmailResponse.data.payload.headers);
218
+ const message_subject = this.getHeader('subject', gmailResponse.data.payload.headers);
219
+ const message_body = this.getBody(from_name, from_email, subject, gmailResponse);
220
+ if (message_sender.includes(from_email) && message_sender.includes(from_name.toLocaleLowerCase()) &&
221
+ message_subject.includes(subject.toLocaleLowerCase()) && message_body.includes(body.toLocaleLowerCase())) {
222
+ yield this.log('Then', `Email from: ${from_name} ${from_email} with subject: ${subject} and body: ${body} is found`, StepStatus.PASSED);
223
+ return true;
224
+ }
225
+ }
226
+ break;
227
+ }
228
+ }
229
+ yield this.timeout(12000);
230
+ timeoutCount += 12000;
231
+ }
232
+ yield this.log('Then', `Email from: ${from_name} ${from_email} with subject: ${subject} and body: ${body} is found`, StepStatus.FAILED);
233
+ });
234
+ }
235
+ getHeader(value, headers) {
236
+ for (const header of headers) {
237
+ if (header.name.toLocaleLowerCase() === value.toLocaleLowerCase()) {
238
+ return header.value.toLocaleLowerCase();
239
+ }
240
+ }
241
+ }
242
+ getBody(from_name, from_email, subject, gmailResponse) {
243
+ const body = gmailResponse.data.payload.parts[0].body.data;
244
+ if (body) {
245
+ return atob(body).toLocaleLowerCase();
246
+ }
247
+ else {
248
+ throw new Error(`Email from: ${from_name} ${from_email} with subject: ${subject} body is empty`);
249
+ }
250
+ }
251
+ }
252
+ export default new FunctionHelper();
@@ -1,6 +1,6 @@
1
- export declare class ExtendDefaultPage {
2
- readonly defaultTimeout: number;
3
- extend_page_functions(page: any, time?: number): Promise<any>;
4
- }
5
- declare const _default: ExtendDefaultPage;
6
- export default _default;
1
+ export declare class ExtendDefaultPage {
2
+ readonly defaultTimeout: number;
3
+ extend_page_functions(page: any, time?: number): Promise<any>;
4
+ }
5
+ declare const _default: ExtendDefaultPage;
6
+ export default _default;