@anddone/coretestautomation 1.0.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 (72) hide show
  1. package/.github/workflows/npm-release.yml +102 -0
  2. package/dist/api/base.api.d.ts +32 -0
  3. package/dist/api/base.api.d.ts.map +1 -0
  4. package/dist/api/base.api.js +7 -0
  5. package/dist/api/base.api.js.map +1 -0
  6. package/dist/api/headers.d.ts +6 -0
  7. package/dist/api/headers.d.ts.map +1 -0
  8. package/dist/api/headers.js +23 -0
  9. package/dist/api/headers.js.map +1 -0
  10. package/dist/index.d.ts +13 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +29 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/pages/basepage.d.ts +6 -0
  15. package/dist/pages/basepage.d.ts.map +1 -0
  16. package/dist/pages/basepage.js +10 -0
  17. package/dist/pages/basepage.js.map +1 -0
  18. package/dist/testData/api.data.json +6 -0
  19. package/dist/utils/apiUtils.d.ts +123 -0
  20. package/dist/utils/apiUtils.d.ts.map +1 -0
  21. package/dist/utils/apiUtils.js +264 -0
  22. package/dist/utils/apiUtils.js.map +1 -0
  23. package/dist/utils/assertionUtils.d.ts +223 -0
  24. package/dist/utils/assertionUtils.d.ts.map +1 -0
  25. package/dist/utils/assertionUtils.js +400 -0
  26. package/dist/utils/assertionUtils.js.map +1 -0
  27. package/dist/utils/commonUtils.d.ts +590 -0
  28. package/dist/utils/commonUtils.d.ts.map +1 -0
  29. package/dist/utils/commonUtils.js +1292 -0
  30. package/dist/utils/commonUtils.js.map +1 -0
  31. package/dist/utils/fakerStaticData.d.ts +16 -0
  32. package/dist/utils/fakerStaticData.d.ts.map +1 -0
  33. package/dist/utils/fakerStaticData.js +88 -0
  34. package/dist/utils/fakerStaticData.js.map +1 -0
  35. package/dist/utils/fileCommonUtils.d.ts +22 -0
  36. package/dist/utils/fileCommonUtils.d.ts.map +1 -0
  37. package/dist/utils/fileCommonUtils.js +243 -0
  38. package/dist/utils/fileCommonUtils.js.map +1 -0
  39. package/dist/utils/generationUtils.d.ts +424 -0
  40. package/dist/utils/generationUtils.d.ts.map +1 -0
  41. package/dist/utils/generationUtils.js +869 -0
  42. package/dist/utils/generationUtils.js.map +1 -0
  43. package/dist/utils/pageUtils.d.ts +90 -0
  44. package/dist/utils/pageUtils.d.ts.map +1 -0
  45. package/dist/utils/pageUtils.js +214 -0
  46. package/dist/utils/pageUtils.js.map +1 -0
  47. package/dist/utils/tableUtils.d.ts +304 -0
  48. package/dist/utils/tableUtils.d.ts.map +1 -0
  49. package/dist/utils/tableUtils.js +555 -0
  50. package/dist/utils/tableUtils.js.map +1 -0
  51. package/dist/utils/validationUtils.d.ts +80 -0
  52. package/dist/utils/validationUtils.d.ts.map +1 -0
  53. package/dist/utils/validationUtils.js +172 -0
  54. package/dist/utils/validationUtils.js.map +1 -0
  55. package/package.json +23 -0
  56. package/playwright.config.ts +79 -0
  57. package/src/api/base.api.ts +39 -0
  58. package/src/api/headers.ts +17 -0
  59. package/src/index.ts +12 -0
  60. package/src/pages/basepage.ts +11 -0
  61. package/src/testData/api.data.json +6 -0
  62. package/src/types/pdf-parse.d.ts +6 -0
  63. package/src/utils/apiUtils.ts +307 -0
  64. package/src/utils/assertionUtils.ts +455 -0
  65. package/src/utils/commonUtils.ts +1544 -0
  66. package/src/utils/fakerStaticData.ts +91 -0
  67. package/src/utils/fileCommonUtils.ts +239 -0
  68. package/src/utils/generationUtils.ts +929 -0
  69. package/src/utils/pageUtils.ts +224 -0
  70. package/src/utils/tableUtils.ts +715 -0
  71. package/src/utils/validationUtils.ts +179 -0
  72. package/tsconfig.json +19 -0
@@ -0,0 +1,555 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TableUtils = void 0;
4
+ const commonUtils_1 = require("./commonUtils");
5
+ class TableUtils extends commonUtils_1.CommonUtils {
6
+ /**
7
+ * Resolves options by applying defaults.
8
+ *
9
+ * @param options - User-provided options
10
+ * @param defaults - Default values for the options
11
+ * @returns Complete options object with defaults applied
12
+ */
13
+ static resolveTableOptions(options = {}, defaults) {
14
+ return { ...defaults, ...options };
15
+ }
16
+ /**
17
+ * Gets the text values of table headers.
18
+ *
19
+ * @param table - Locator of the table element
20
+ * @param options - Optional configuration for header locators and timeout
21
+ *
22
+ * @example
23
+ * const headers = await CommonUtils.getTableHeaders(table);
24
+ *
25
+ * @example
26
+ * const headers = await CommonUtils.getTableHeaders(table, {
27
+ * headerExpression: 'thead tr th',
28
+ * timeout: 5000
29
+ * });
30
+ *
31
+ * @returns Array of trimmed header texts, or empty array if not found
32
+ */
33
+ static async getTableHeaders(table, options = {}) {
34
+ const { headerExpression = 'tr th', timeout = 15000 } = this.resolveTableOptions(options, {});
35
+ try {
36
+ const headers = table.locator(headerExpression);
37
+ await this.waitForVisible(headers.first(), { timeout });
38
+ const count = await headers.count();
39
+ const results = [];
40
+ for (let i = 0; i < count; i++) {
41
+ results.push((await headers.nth(i).innerText()).trim());
42
+ }
43
+ return results;
44
+ }
45
+ catch (error) {
46
+ console.warn('⚠ Unable to get table headers:', error.message);
47
+ return [];
48
+ }
49
+ }
50
+ /**
51
+ * Returns the zero-based index of a column based on the column header name.
52
+ *
53
+ * If the column header is not found or an error occurs, `-1` is returned.
54
+ * @param table - Locator pointing to the table element
55
+ * @param columnName - Visible header text to search for
56
+ * @param options - Optional configuration for header locators and timeout
57
+ *
58
+ * @example
59
+ * const headers = await CommonUtils.getColumnIndex(table,'columnName');
60
+ *
61
+ * @example
62
+ * const headers = await CommonUtils.getColumnIndex(table,
63
+ * 'columnName',{ headerExpression: 'thead tr th',
64
+ * timeout: 5000
65
+ * });
66
+ * @returns Promise<number> - Zero-based column index if found, otherwise -1
67
+ */
68
+ static async getColumnIndex(table, columnName, options = {}) {
69
+ const { headerExpression = "tr th" } = this.resolveTableOptions(options, {});
70
+ try {
71
+ const headers = table.locator(headerExpression);
72
+ await this.waitForVisible(headers.first());
73
+ const count = await headers.count();
74
+ for (let i = 0; i < count; i++) {
75
+ const header = headers.nth(i);
76
+ const headerText = (await header.innerText()).trim();
77
+ if (headerText === columnName.trim()) {
78
+ return i;
79
+ }
80
+ }
81
+ return -1;
82
+ }
83
+ catch (error) {
84
+ return -1;
85
+ }
86
+ }
87
+ /**
88
+ * Gets the text value of a specific cell by row and column index.
89
+ *
90
+ * @param table - Locator representing the table
91
+ * @param rowIndex - 1 - based index of the row
92
+ * @param columnIndex - 0 -based index of the column
93
+ * @param options - Optional table settings
94
+ * @param options.rowLocator - Locator for table rows (default: '//tr[contains(@class,"row")]')
95
+ * @param options.cellLocator - Locator for table cells (default: 'td')
96
+ * @param options.timeout - Maximum wait time for elements (default: 15000)
97
+ *
98
+ * @returns Cell value as string or empty string if not found
99
+ *
100
+ * @example
101
+ * const value = await CommonUtils.getCellValueByIndex(table, 2, 1);
102
+ *
103
+ * @example
104
+ * const value = await CommonUtils.getCellValueByIndex(table, 2, 1, {
105
+ * rowLocator: '//tbody/tr',
106
+ * cellLocator: 'td',
107
+ * timeout: 8000
108
+ * });
109
+ */
110
+ static async getCellValueByIndex(table, rowIndex, columnIndex, options = {}) {
111
+ const { rowLocator = '//tr[contains(@class,"row")]', cellLocator = 'td', timeout = 15000 } = this.resolveTableOptions(options, {});
112
+ try {
113
+ if (rowIndex < 1) {
114
+ console.error(`Row index must be >= 1. Received: ${rowIndex}`);
115
+ return '';
116
+ }
117
+ if (columnIndex < 0) {
118
+ console.error(`Column index must be >= 0. Received: ${columnIndex}`);
119
+ return '';
120
+ }
121
+ const rows = table.locator(rowLocator);
122
+ await this.waitForVisible(rows.first(), { timeout });
123
+ const rowCount = await rows.count();
124
+ if (rowIndex > rowCount) {
125
+ console.error(`Row index ${rowIndex} exceeds total rows ${rowCount}`);
126
+ return '';
127
+ }
128
+ const row = rows.nth(rowIndex - 1);
129
+ const cells = row.locator(cellLocator);
130
+ const cellCount = await cells.count();
131
+ if (columnIndex >= cellCount) {
132
+ console.error(`Column index ${columnIndex} exceeds total columns ${cellCount}`);
133
+ return '';
134
+ }
135
+ const cell = cells.nth(columnIndex);
136
+ const value = (await cell.innerText()).trim();
137
+ return value;
138
+ }
139
+ catch (error) {
140
+ console.error(`⚠ Failed to get cell value at row ${rowIndex}, column ${columnIndex}: ${error.message}`);
141
+ return '';
142
+ }
143
+ }
144
+ /**
145
+ * Retrieves all cell values from a specific column of a table using a zero-based column index.
146
+ *
147
+ * If the column index is invalid (< 0), or if an error occurs,
148
+ * an empty array is returned.
149
+ *
150
+ * @param table - Locator pointing to the table element
151
+ * @param columnIndex - Zero-based index of the column
152
+ * @param options - Optional table settings
153
+ * @param options.rowLocator - Selector for table rows (default: '//tr[contains(@class,"row")]')
154
+ * @param options.cellLocator - Selector for cells inside a row (default: 'td')
155
+ * @param options.timeout - Maximum wait time for the elements (default: 15000)
156
+ *
157
+ * @returns Promise<string[]> - Array of cell values from the specified column
158
+ *
159
+ * @example
160
+ * const values = await CommonUtils.getColumnValuesByIndex(table, 1);
161
+ *
162
+ * @example
163
+ * const values = await CommonUtils.getColumnValuesByIndex(table, 2, {
164
+ * rowLocator: '//tbody/tr',
165
+ * cellLocator: 'td',
166
+ * timeout: 8000
167
+ * });
168
+ */
169
+ static async getColumnValuesByIndex(table, columnIndex, options = {}) {
170
+ const { rowLocator = '//tr[contains(@class,"row")]', cellLocator = 'td', timeout = 15000 } = this.resolveTableOptions(options, {});
171
+ const values = [];
172
+ if (columnIndex < 0)
173
+ return values;
174
+ try {
175
+ const rows = table.locator(rowLocator);
176
+ await this.waitForVisible(rows.first(), { timeout });
177
+ const rowCount = await rows.count();
178
+ for (let i = 0; i < rowCount; i++) {
179
+ const row = rows.nth(i);
180
+ const cells = row.locator(cellLocator);
181
+ const cellCount = await cells.count();
182
+ if (cellCount <= columnIndex)
183
+ continue;
184
+ const cell = cells.nth(columnIndex);
185
+ const value = (await cell.innerText()).trim();
186
+ values.push(value);
187
+ }
188
+ }
189
+ catch (error) {
190
+ console.warn(`⚠ Failed to get column values for column index ${columnIndex}: ${error.message}`);
191
+ return [];
192
+ }
193
+ return values;
194
+ }
195
+ /**
196
+ * Returns all cell values from a table for the given column header.
197
+ *
198
+ * If the header is not found, an empty array is returned.
199
+ *
200
+ * @param table - Locator for the table element
201
+ * @param columnName - Exact column header text to search
202
+ * @param options - Optional table settings
203
+ * @param options.headerExpression - Locator for headers (default: 'tr th')
204
+ * @param options.rowLocator - Locator for rows (default: '//tr[contains(@class,"row")]')
205
+ * @param options.cellLocator - Locator for cells (default: 'td')
206
+ * @param options.timeout - Maximum wait time for elements (default: 15000)
207
+ *
208
+ * @returns Promise<string[]> - Array of cell values under the specified column
209
+ *
210
+ * @example
211
+ * const values = await CommonUtils.getColumnValuesByHeader(table, 'Name');
212
+ *
213
+ * @example
214
+ * const values = await CommonUtils.getColumnValuesByHeader(table, 'Name', {
215
+ * headerExpression: 'thead tr th',
216
+ * rowLocator: '//tbody/tr',
217
+ * cellLocator: 'td',
218
+ * timeout: 8000
219
+ * });
220
+ */
221
+ static async getColumnValuesByHeader(table, columnName, options = {}) {
222
+ const { headerExpression = 'tr th', rowLocator = '//tr[contains(@class,"row")]', cellLocator = 'td', timeout = 15000 } = this.resolveTableOptions(options, {});
223
+ try {
224
+ // Get the column index for the header
225
+ const columnIndex = await this.getColumnIndex(table, columnName, { headerExpression, timeout });
226
+ if (columnIndex === -1) {
227
+ console.error(`⚠ Column header not found: "${columnName}"`);
228
+ return [];
229
+ }
230
+ // Return all cell values from that column
231
+ return await this.getColumnValuesByIndex(table, columnIndex, { rowLocator, cellLocator, timeout });
232
+ }
233
+ catch (error) {
234
+ console.error(`⚠ Failed to get column values for header "${columnName}": ${error.message}`);
235
+ return [];
236
+ }
237
+ }
238
+ /**
239
+ * Clicks a table row based on its row index (1-based).
240
+ *
241
+ * The row index is **1-based** for ease of use:
242
+ * - 1 → first row
243
+ * - 2 → second row
244
+ *
245
+ * If the index is invalid or out of range, an error is logged
246
+ * and the action is safely skipped.
247
+ *
248
+ * @param page - Playwright Page object
249
+ * @param table - Locator pointing to the table element
250
+ * @param rowIndex - Row index to click on (1-based)
251
+ * @param options - Optional table settings
252
+ * @param options.rowLocator - Selector used to locate rows (default: '//tr[contains(@class,"row")]')
253
+ * @param options.timeout - Maximum wait time for elements (default: 15000)
254
+ *
255
+ * @example
256
+ * await CommonUtils.clickOnTableRowByIndex(page, table, 1);
257
+ *
258
+ * @example
259
+ * await CommonUtils.clickOnTableRowByIndex(page, table, 2, {
260
+ * rowLocator: '//tbody/tr',
261
+ * timeout: 8000
262
+ * });
263
+ */
264
+ static async clickOnTableRowByIndex(table, rowIndex, options = {}) {
265
+ const { rowLocator = '//tr[contains(@class,"row")]', timeout = 15000 } = this.resolveTableOptions(options, {});
266
+ try {
267
+ if (rowIndex < 1) {
268
+ console.error(`⚠ Row index must be >= 1. Received: ${rowIndex}`);
269
+ return;
270
+ }
271
+ const rows = table.locator(rowLocator);
272
+ await this.waitForVisible(rows.first(), { timeout });
273
+ const rowCount = await rows.count();
274
+ if (rowIndex > rowCount) {
275
+ console.error(`⚠ Row index ${rowIndex} is out of range. Total rows available: ${rowCount}`);
276
+ return;
277
+ }
278
+ const row = rows.nth(rowIndex - 1);
279
+ await this.click(row, { timeout });
280
+ }
281
+ catch (error) {
282
+ console.error(`⚠ Failed to click table row at index ${rowIndex}: ${error.message}`);
283
+ }
284
+ }
285
+ /**
286
+ * Clicks a table column header based on the given column name.
287
+ *
288
+ * @param table - Locator pointing to the table element
289
+ * @param columnName - Visible column header name to click
290
+ * @param options - Optional table settings
291
+ * @param options.headerExpression - Locator expression for table headers
292
+ * (default: 'tr th button')
293
+ * @param options.timeout - Maximum wait time for elements (default: 15000)
294
+ *
295
+ * @returns Locator of the clicked header or null if not found
296
+ *
297
+ * @example
298
+ * await CommonUtils.clickOnTableColumnHeader(table, 'Name');
299
+ *
300
+ * @example
301
+ * await CommonUtils.clickOnTableColumnHeader(table, 'Amount', {
302
+ * headerExpression: 'thead tr th',
303
+ * timeout: 8000
304
+ * });
305
+ */
306
+ static async clickOnTableColumnHeader(table, columnName, options = {}) {
307
+ const { headerExpression = 'tr th button', timeout = 15000 } = this.resolveTableOptions(options, {});
308
+ try {
309
+ if (!columnName || columnName.trim() === '') {
310
+ console.error('⚠ Column name must be a non-empty string');
311
+ return null;
312
+ }
313
+ const headers = table.locator(headerExpression);
314
+ await this.waitForVisible(headers.first(), { timeout });
315
+ const count = await headers.count();
316
+ for (let i = 0; i < count; i++) {
317
+ const header = headers.nth(i);
318
+ const text = (await header.innerText())
319
+ .replace(/\s+/g, ' ')
320
+ .replace(/\u00A0/g, ' ')
321
+ .trim();
322
+ if (text.toLowerCase().includes(columnName.toLowerCase())) {
323
+ await header.scrollIntoViewIfNeeded();
324
+ await this.click(header, { timeout });
325
+ return header;
326
+ }
327
+ }
328
+ console.error(`⚠ Column header "${columnName}" not found`);
329
+ return null;
330
+ }
331
+ catch (error) {
332
+ console.error(`⚠ Failed to click column header "${columnName}": ${error.message}`);
333
+ return null;
334
+ }
335
+ }
336
+ /**
337
+ * Clicks a specific table cell using row and column indexes.
338
+ *
339
+ * Indexes are **1-based**:
340
+ * - rowIndex: 1 → first row
341
+ * - columnIndex: 1 → first column
342
+ *
343
+ * @param table - Locator for the table element
344
+ * @param rowIndex - 1-based index of the row to click
345
+ * @param columnIndex - 1-based index of the column to click
346
+ * @param options - Optional table settings
347
+ * @param options.rowLocator - Locator for table rows
348
+ * (default: '//tr[contains(@class,"row")]')
349
+ * @param options.cellLocator - Locator for table cells (default: 'td')
350
+ * @param options.timeout - Maximum wait time (default: 15000)
351
+ *
352
+ * @example
353
+ * await CommonUtils.clickTableCell(table, 2, 3);
354
+ *
355
+ * @example
356
+ * await CommonUtils.clickTableCell(table, 1, 1, {
357
+ * rowLocator: '//tbody/tr',
358
+ * cellLocator: 'td',
359
+ * timeout: 8000
360
+ * });
361
+ */
362
+ static async clickTableCell(table, rowIndex, columnIndex, options = {}) {
363
+ const { rowLocator = '//tr[contains(@class,"row")]', cellLocator = 'td', timeout = 15000 } = this.resolveTableOptions(options, {});
364
+ try {
365
+ if (rowIndex < 1 || columnIndex < 1) {
366
+ console.error(`⚠ Row and column indexes must be >= 1`);
367
+ return;
368
+ }
369
+ const rows = table.locator(rowLocator);
370
+ await this.waitForVisible(rows.first(), { timeout });
371
+ const row = rows.nth(rowIndex - 1);
372
+ const cell = row.locator(cellLocator).nth(columnIndex - 1);
373
+ await cell.scrollIntoViewIfNeeded();
374
+ await this.click(cell, { timeout });
375
+ }
376
+ catch (err) {
377
+ console.error(`⚠ clickTableCell failed at row ${rowIndex}, column ${columnIndex}: ${err.message}`);
378
+ }
379
+ }
380
+ /**
381
+ * Clicks the ellipsis (actions) button in the specified table row.
382
+ *
383
+ * Row index is **1-based**:
384
+ * - 1 → first row
385
+ * - 2 → second row
386
+ *
387
+ * If the row index is invalid, ellipsis is not found,
388
+ * or any error occurs, the action is skipped safely.
389
+ *
390
+ * @param table - Table locator
391
+ * @param rowIndex - 1-based row index
392
+ * @param options - Optional table settings
393
+ * @param options.ellipsisLocator - Selector for the ellipsis button
394
+ * (default: 'button#detailsDropdown')
395
+ * @param options.rowLocator - Selector for table rows
396
+ * (default: '//tr[contains(@class,"row")]')
397
+ * @param options.timeout - Maximum wait time (default: 15000)
398
+ *
399
+ * @returns true if clicked successfully, otherwise false
400
+ *
401
+ * @example
402
+ * const clicked = await CommonUtils.clickEllipsisByRowIndex(table, 1);
403
+ *
404
+ * @example
405
+ * const clicked = await CommonUtils.clickEllipsisByRowIndex(table, 2, {
406
+ * ellipsisLocator: 'button.more-actions',
407
+ * rowLocator: '//tbody/tr',
408
+ * timeout: 8000
409
+ * });
410
+ */
411
+ static async clickEllipsisByRowIndex(table, rowIndex, options = {}) {
412
+ const { ellipsisLocator = 'button#detailsDropdown', rowLocator = '//tr[contains(@class,"row")]', timeout = 15000 } = this.resolveTableOptions(options, {});
413
+ try {
414
+ if (rowIndex < 1) {
415
+ console.error('⚠ Row index must be >= 1');
416
+ return false;
417
+ }
418
+ const rows = table.locator(rowLocator);
419
+ await this.waitForVisible(rows.first(), { timeout });
420
+ const row = rows.nth(rowIndex - 1);
421
+ await row.scrollIntoViewIfNeeded();
422
+ const ellipsis = row.locator(ellipsisLocator);
423
+ if (await ellipsis.count() === 0) {
424
+ console.warn('⚠ Ellipsis button not found in the specified row');
425
+ return false;
426
+ }
427
+ await this.click(ellipsis.first(), { timeout });
428
+ return true;
429
+ }
430
+ catch (error) {
431
+ console.error(`⚠ Failed to click ellipsis at row ${rowIndex}: ${error.message}`);
432
+ return false;
433
+ }
434
+ }
435
+ /**
436
+ * Clicks the ellipsis for a given table row and selects
437
+ * a filter/action option from the displayed options list.
438
+ *
439
+ * @param table - Locator representing the table element
440
+ * @param rowIndex - 1-based index of the row
441
+ * @param optionsList - Locator representing the list of filter options
442
+ * @param optionText - Visible text of the option to select
443
+ * @param options - Optional table/action configuration
444
+ */
445
+ static async clickEllipsisAndSelectFilterOption(table, rowIndex, optionsList, optionText, options = {}) {
446
+ const { timeout = 15000 } = this.resolveTableOptions(options, {});
447
+ const ellipsisClicked = await this.clickEllipsisByRowIndex(table, rowIndex, options);
448
+ if (!ellipsisClicked) {
449
+ console.warn('⚠ Unable to click ellipsis');
450
+ return false;
451
+ }
452
+ return await this.clickOnFilterOptionFromList(optionsList, optionText, { timeout });
453
+ }
454
+ /**
455
+ * Clicks the Apply button inside a visible dropdown container.
456
+ *
457
+ * @param filterPopupBox - Locator representing the dropdown container
458
+ * @param options - TableOptions options (timeout, description, applyButtonLocator -
459
+ * default- a.filter-button.apply)
460
+ * @returns boolean - true if clicked successfully, otherwise false
461
+ */
462
+ static async clickApplyButton(filterPopupBox, options = {}) {
463
+ const { timeout = 15000, description = 'Apply button', applyButtonLocator = 'a.filter-button.apply' } = this.resolveTableOptions(options, { timeout: 15000 });
464
+ try {
465
+ const applyButton = filterPopupBox.locator(applyButtonLocator);
466
+ await this.click(applyButton, { timeout, description });
467
+ return true;
468
+ }
469
+ catch (error) {
470
+ console.error(`⚠ Failed to click ${description}: ${error.message}`);
471
+ return false;
472
+ }
473
+ }
474
+ /**
475
+ * Clicks the "Clear" button inside a dropdown container.
476
+ *
477
+ * @param filterPopupBox - Locator representing the dropdown container
478
+ * @param options - TableOptions options (timeout, description, clearButtonLocator)
479
+ * @returns boolean - true if clicked successfully, otherwise false
480
+ */
481
+ static async clickClearButton(filterPopupBox, options = {}) {
482
+ const { timeout = 15000, description = 'Clear button', clearButtonLocator = 'a.filter-button.clear' } = this.resolveTableOptions(options, { timeout: 15000 });
483
+ try {
484
+ const clearButton = filterPopupBox.locator(clearButtonLocator);
485
+ await this.waitForVisible(clearButton);
486
+ await this.click(clearButton, { timeout, description });
487
+ return true;
488
+ }
489
+ catch (error) {
490
+ console.error(`⚠ Failed to click ${description}: ${error.message}`);
491
+ return false;
492
+ }
493
+ }
494
+ /**
495
+ * Enters a "From" date into the date filter input inside a dropdown.
496
+ *
497
+ * @param filterPopupBox - Locator for the filter dropdown/popup
498
+ * @param fromDate - Date string to enter into the input
499
+ * @param options - Optional settings from TableOptions:
500
+ * - dateInputLocator: custom locator for the "From" date input (defualt - input#inputFromDate)
501
+ */
502
+ static async enterFromDate(filterPopupBox, fromDate, options = {}) {
503
+ const { timeout = 15000, description = 'From Date Input', dateInputLocator = 'input#inputFromDate' } = this.resolveTableOptions(options, { timeout: 15000 });
504
+ try {
505
+ const fromInput = filterPopupBox.locator(dateInputLocator).first();
506
+ await this.waitForVisible(fromInput, { timeout });
507
+ await this.fill(fromInput, fromDate, { timeout, description });
508
+ }
509
+ catch (error) {
510
+ console.error(`⚠ Failed to enter From Date "${fromDate}": ${error.message}`);
511
+ }
512
+ }
513
+ /**
514
+ * Enters a "To" date into the date filter input inside a dropdown.
515
+ * *
516
+ * @param filterPopupBox - Locator for the filter dropdown/popup
517
+ * @param toDate - Date string to enter into the input
518
+ * @param options - Optional settings from TableOptions:
519
+ * - dateInputLocator: custom locator for the "To" date input (defualt - input#inputToDate)
520
+ */
521
+ static async enterToDate(filterPopupBox, toDate, options = {}) {
522
+ const { timeout = 15000, description = 'To Date Input', dateInputLocator = 'input#inputToDate' } = this.resolveTableOptions(options, { timeout: 15000 });
523
+ try {
524
+ const toInput = filterPopupBox.locator(dateInputLocator).first();
525
+ await this.waitForVisible(toInput, { timeout });
526
+ await this.fill(toInput, toDate, { timeout, description });
527
+ }
528
+ catch (error) {
529
+ console.error(`⚠ Failed to enter To Date "${toDate}": ${error.message}`);
530
+ }
531
+ }
532
+ /**
533
+ * Enters a value into an input field inside a filter/dropdown container.
534
+ *
535
+ * @param filterPopupBox - Locator for the dropdown/filter container
536
+ * @param value - Text value to enter
537
+ * @param options - Optional TableOptions:
538
+ * - inputLocator: selector for the input field (default: 'input')
539
+ * - timeout: max wait time (default: 15000)
540
+ * - description: description used in logs (default: 'Filter Input')
541
+ */
542
+ static async enterInputValue(filterPopupBox, value, options = {}) {
543
+ const { inputLocator = 'input', timeout = 15000, description = 'Filter Input' } = this.resolveTableOptions(options, { timeout: 15000 });
544
+ try {
545
+ const input = filterPopupBox.locator(inputLocator).first();
546
+ await this.waitForVisible(input, { timeout });
547
+ await this.fill(input, value, { timeout, description });
548
+ }
549
+ catch (error) {
550
+ console.error(`⚠ Failed to enter value "${value}" in ${description}: ${error.message}`);
551
+ }
552
+ }
553
+ }
554
+ exports.TableUtils = TableUtils;
555
+ //# sourceMappingURL=tableUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableUtils.js","sourceRoot":"","sources":["../../src/utils/tableUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ export declare class ValidationUtils {
2
+ /**
3
+ * Checks whether a Date object is valid.
4
+ *
5
+ * @param date Date object
6
+ * @returns true if valid Date, false otherwise
7
+ */
8
+ static isValidDate(date: Date): boolean;
9
+ /**
10
+ * Checks whether two dates fall on the same calendar day.
11
+ *
12
+ * @param date1 First date
13
+ * @param date2 Second date
14
+ * @returns True if date1 is before date2
15
+ */
16
+ static isBefore(date1: Date, date2: Date): boolean;
17
+ /**
18
+ * Checks whether two dates fall on the same calendar day.
19
+ *
20
+ * @param date1 First date
21
+ * @param date2 Second date
22
+ * @returns True if date1 is after date2
23
+ */
24
+ static isAfter(date1: Date, date2: Date): boolean;
25
+ /**
26
+ * Checks whether two dates fall on the same calendar day.
27
+ *
28
+ * @param date1 First date
29
+ * @param date2 Second date
30
+ * @returns True if both dates are on the same day
31
+ */
32
+ static isSameDay(date1: Date, date2: Date): boolean;
33
+ /**
34
+ * Checks whether a list of dates is in ascending order (oldest → newest).
35
+ *
36
+ * @param dates Array of Date objects
37
+ * @returns true if dates are in ascending order
38
+ */
39
+ static isAscendingDateList(dates: Date[]): boolean;
40
+ /**
41
+ * Checks whether a list of dates is in descending order (newest → oldest).
42
+ *
43
+ * @param dates Array of Date objects
44
+ * @returns true if dates are in descending order
45
+ */
46
+ static isDescendingDateList(dates: Date[]): boolean;
47
+ /**
48
+ * Checks whether a date string strictly matches the given date format.
49
+ *
50
+ * @param dateStr input date string
51
+ * @param formatStr expected date format
52
+ * @returns true if date matches the format exactly, false otherwise
53
+ *
54
+ * Example:
55
+ * doesDateMatchFormat("02/10/2003", "dd/MM/yyyy") → true
56
+ * doesDateMatchFormat("2/10/2003", "dd/MM/yyyy") → false
57
+ */
58
+ static isDateMatchFormat(dateStr: string, formatStr: string): boolean;
59
+ /**
60
+ * Checks whether a string matches a given regular expression.
61
+ *
62
+ * @param value Input string to test
63
+ * @param pattern Regular expression pattern
64
+ * @returns true if pattern matches, otherwise false
65
+ *
66
+ * Example:
67
+ * matchRegex("test@example.com", /^[^\s@]+@[^\s@]+\.[^\s@]+$/) → true
68
+ */
69
+ static isMatchedRegex(value: string, pattern: RegExp): boolean;
70
+ /**
71
+ * Validates whether the actual transaction/payment ID matches
72
+ * the expected partially visible and hidden (masked) pattern.
73
+ * @since 27-01-2026
74
+ * @param actualId String (Full transaction/payment ID)
75
+ * @param expectedId String (Expected masked transaction/payment ID)
76
+ * @returns true if the masked actual ID matches the expected ID, otherwise false
77
+ */
78
+ static isTransactionIdMatchingPartialVisibleHiddenPattern(actualId: string, expectedId: string): boolean;
79
+ }
80
+ //# sourceMappingURL=validationUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationUtils.d.ts","sourceRoot":"","sources":["../../src/utils/validationUtils.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IACxB;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAQvC;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO;IAQlD;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO;IAQjD;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO;IAcnD;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO;IAiBlD;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO;IAkBnD;;;;;;;;;;OAUG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAgBrE;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAU9D;;;;;;;KAOC;IACH,MAAM,CAAC,kDAAkD,CACvD,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO;CAKX"}