@thinkwise/testwise 0.2.20 → 0.2.62
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/Testwise.ts +2 -0
- package/artifact-builder/SelectorBuilder.ts +2 -2
- package/artifact-builder/SubjectComponentGenerator.ts +21 -12
- package/artifact-builder/SubjectGenerator.ts +24 -8
- package/components/action-bar/ActionBar.ts +7 -7
- package/components/action-bar/CustomActionBar.ts +0 -5
- package/components/cardlist/Cardlist.ts +3 -3
- package/components/chart/Chart.ts +3 -3
- package/components/combined-filter/CombinedFilter.ts +3 -3
- package/components/cube-view-bar/CubeViewBar.ts +3 -3
- package/components/filter/ExcelStyleFilterPopup.ts +29 -0
- package/components/filter/ExcelStyleFilterPopupObjects.ts +20 -0
- package/components/filter/FilterForm.ts +3 -3
- package/components/filter/FilterPopup.ts +187 -0
- package/components/filter/FilterPopupObjects.ts +63 -0
- package/components/filter/ManagePrefilterPopup.ts +44 -0
- package/components/filter/ManagePrefilterPopupObjects.ts +28 -0
- package/components/form/Form.ts +3 -3
- package/components/grid/Grid.ts +15 -119
- package/components/grid/GridObjects.ts +0 -4
- package/components/index.ts +4 -0
- package/components/maps/Maps.ts +3 -3
- package/components/menu/ListBarMenuComponent.ts +11 -0
- package/components/menu/ListBarMenuComponentObjects.ts +6 -0
- package/components/pivot-grid/PivotGrid.ts +3 -3
- package/components/pivot-grid/PivotGridFieldList.ts +3 -3
- package/components/pop-up/AllRowsPopUp.ts +29 -0
- package/components/pop-up/AllRowsPopUpObjects.ts +22 -0
- package/components/prefilter-list/PrefilterList.ts +3 -3
- package/components/preview/Preview.ts +3 -3
- package/components/report-bar/ReportBar.ts +3 -3
- package/components/report-tiles/ReportTiles.ts +3 -3
- package/components/scheduler/Scheduler.ts +3 -3
- package/components/splitter/Splitter.ts +3 -3
- package/components/tab/BaseTab.ts +3 -3
- package/components/tab/DetailTabPage.ts +4 -4
- package/components/tab/Tab.ts +4 -4
- package/components/task/TaskBar.ts +3 -3
- package/components/task/TaskTiles.ts +3 -3
- package/components/topbar/TopBar.ts +2 -0
- package/components/tree-view/TreeView.ts +3 -3
- package/controls/DateControl.ts +6 -6
- package/controls/DateControlObjects.ts +0 -0
- package/controls/FormComboBox.ts +7 -7
- package/controls/FormComboBoxObjects.ts +0 -0
- package/controls/GridColumnControl.ts +68 -0
- package/controls/GridColumnControlObjects.ts +20 -0
- package/controls/InputFieldControl.ts +6 -6
- package/controls/InputFieldControlObjects.ts +0 -0
- package/controls/LookupDropdown.ts +58 -16
- package/controls/index.ts +1 -0
- package/dist/Testwise.d.ts +1 -0
- package/dist/Testwise.js +1 -0
- package/dist/Testwise.js.map +1 -1
- package/dist/artifact-builder/SelectorBuilder.d.ts +1 -1
- package/dist/artifact-builder/SelectorBuilder.js +2 -2
- package/dist/artifact-builder/SelectorBuilder.js.map +1 -1
- package/dist/artifact-builder/SubjectComponentGenerator.js +18 -12
- package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectGenerator.d.ts +1 -0
- package/dist/artifact-builder/SubjectGenerator.js +20 -8
- package/dist/artifact-builder/SubjectGenerator.js.map +1 -1
- package/dist/components/action-bar/ActionBar.d.ts +2 -2
- package/dist/components/action-bar/ActionBar.js +7 -7
- package/dist/components/action-bar/ActionBar.js.map +1 -1
- package/dist/components/action-bar/CustomActionBar.d.ts +0 -2
- package/dist/components/action-bar/CustomActionBar.js +0 -3
- package/dist/components/action-bar/CustomActionBar.js.map +1 -1
- package/dist/components/cardlist/Cardlist.d.ts +2 -2
- package/dist/components/cardlist/Cardlist.js +2 -2
- package/dist/components/cardlist/Cardlist.js.map +1 -1
- package/dist/components/chart/Chart.d.ts +2 -2
- package/dist/components/chart/Chart.js +2 -2
- package/dist/components/chart/Chart.js.map +1 -1
- package/dist/components/combined-filter/CombinedFilter.d.ts +2 -2
- package/dist/components/combined-filter/CombinedFilter.js +2 -2
- package/dist/components/combined-filter/CombinedFilter.js.map +1 -1
- package/dist/components/cube-view-bar/CubeViewBar.d.ts +2 -2
- package/dist/components/cube-view-bar/CubeViewBar.js +2 -2
- package/dist/components/cube-view-bar/CubeViewBar.js.map +1 -1
- package/dist/components/filter/ExcelStyleFilterPopup.d.ts +9 -0
- package/dist/components/filter/ExcelStyleFilterPopup.js +22 -0
- package/dist/components/filter/ExcelStyleFilterPopup.js.map +1 -0
- package/dist/components/filter/ExcelStyleFilterPopupObjects.d.ts +9 -0
- package/dist/components/filter/ExcelStyleFilterPopupObjects.js +13 -0
- package/dist/components/filter/ExcelStyleFilterPopupObjects.js.map +1 -0
- package/dist/components/filter/FilterForm.d.ts +2 -2
- package/dist/components/filter/FilterForm.js +2 -2
- package/dist/components/filter/FilterForm.js.map +1 -1
- package/dist/components/filter/FilterPopup.d.ts +41 -0
- package/dist/components/filter/FilterPopup.js +126 -0
- package/dist/components/filter/FilterPopup.js.map +1 -0
- package/dist/components/filter/FilterPopupObjects.d.ts +29 -0
- package/dist/components/filter/FilterPopupObjects.js +30 -0
- package/dist/components/filter/FilterPopupObjects.js.map +1 -0
- package/dist/components/filter/ManagePrefilterPopup.d.ts +14 -0
- package/dist/components/filter/ManagePrefilterPopup.js +33 -0
- package/dist/components/filter/ManagePrefilterPopup.js.map +1 -0
- package/dist/components/filter/ManagePrefilterPopupObjects.d.ts +11 -0
- package/dist/components/filter/ManagePrefilterPopupObjects.js +19 -0
- package/dist/components/filter/ManagePrefilterPopupObjects.js.map +1 -0
- package/dist/components/form/Form.d.ts +2 -2
- package/dist/components/form/Form.js +2 -2
- package/dist/components/form/Form.js.map +1 -1
- package/dist/components/grid/Grid.d.ts +4 -36
- package/dist/components/grid/Grid.js +14 -102
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/GridObjects.d.ts +0 -2
- package/dist/components/grid/GridObjects.js +0 -2
- package/dist/components/grid/GridObjects.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/maps/Maps.d.ts +2 -2
- package/dist/components/maps/Maps.js +2 -2
- package/dist/components/maps/Maps.js.map +1 -1
- package/dist/components/menu/ListBarMenuComponent.d.ts +6 -0
- package/dist/components/menu/ListBarMenuComponent.js +10 -0
- package/dist/components/menu/ListBarMenuComponent.js.map +1 -1
- package/dist/components/menu/ListBarMenuComponentObjects.d.ts +2 -0
- package/dist/components/menu/ListBarMenuComponentObjects.js +2 -0
- package/dist/components/menu/ListBarMenuComponentObjects.js.map +1 -1
- package/dist/components/pivot-grid/PivotGrid.d.ts +2 -2
- package/dist/components/pivot-grid/PivotGrid.js +2 -2
- package/dist/components/pivot-grid/PivotGrid.js.map +1 -1
- package/dist/components/pivot-grid/PivotGridFieldList.d.ts +2 -2
- package/dist/components/pivot-grid/PivotGridFieldList.js +2 -2
- package/dist/components/pivot-grid/PivotGridFieldList.js.map +1 -1
- package/dist/components/pop-up/AllRowsPopUp.d.ts +12 -0
- package/dist/components/pop-up/AllRowsPopUp.js +19 -0
- package/dist/components/pop-up/AllRowsPopUp.js.map +1 -0
- package/dist/components/pop-up/AllRowsPopUpObjects.d.ts +11 -0
- package/dist/components/pop-up/AllRowsPopUpObjects.js +13 -0
- package/dist/components/pop-up/AllRowsPopUpObjects.js.map +1 -0
- package/dist/components/prefilter-list/PrefilterList.d.ts +2 -2
- package/dist/components/prefilter-list/PrefilterList.js +2 -2
- package/dist/components/prefilter-list/PrefilterList.js.map +1 -1
- package/dist/components/preview/Preview.d.ts +2 -2
- package/dist/components/preview/Preview.js +2 -2
- package/dist/components/preview/Preview.js.map +1 -1
- package/dist/components/report-bar/ReportBar.d.ts +2 -2
- package/dist/components/report-bar/ReportBar.js +2 -2
- package/dist/components/report-bar/ReportBar.js.map +1 -1
- package/dist/components/report-tiles/ReportTiles.d.ts +2 -2
- package/dist/components/report-tiles/ReportTiles.js +2 -2
- package/dist/components/report-tiles/ReportTiles.js.map +1 -1
- package/dist/components/scheduler/Scheduler.d.ts +2 -2
- package/dist/components/scheduler/Scheduler.js +2 -2
- package/dist/components/scheduler/Scheduler.js.map +1 -1
- package/dist/components/splitter/Splitter.d.ts +2 -2
- package/dist/components/splitter/Splitter.js +2 -2
- package/dist/components/splitter/Splitter.js.map +1 -1
- package/dist/components/tab/BaseTab.d.ts +2 -2
- package/dist/components/tab/BaseTab.js +2 -2
- package/dist/components/tab/BaseTab.js.map +1 -1
- package/dist/components/tab/DetailTabPage.d.ts +2 -2
- package/dist/components/tab/DetailTabPage.js +3 -3
- package/dist/components/tab/DetailTabPage.js.map +1 -1
- package/dist/components/tab/Tab.d.ts +2 -2
- package/dist/components/tab/Tab.js +3 -3
- package/dist/components/tab/Tab.js.map +1 -1
- package/dist/components/task/TaskBar.d.ts +2 -2
- package/dist/components/task/TaskBar.js +2 -2
- package/dist/components/task/TaskBar.js.map +1 -1
- package/dist/components/task/TaskTiles.d.ts +2 -2
- package/dist/components/task/TaskTiles.js +2 -2
- package/dist/components/task/TaskTiles.js.map +1 -1
- package/dist/components/topbar/TopBar.d.ts +1 -0
- package/dist/components/topbar/TopBar.js +1 -0
- package/dist/components/topbar/TopBar.js.map +1 -1
- package/dist/components/tree-view/TreeView.d.ts +2 -2
- package/dist/components/tree-view/TreeView.js +2 -2
- package/dist/components/tree-view/TreeView.js.map +1 -1
- package/dist/controls/DateControl.d.ts +3 -3
- package/dist/controls/DateControl.js +5 -5
- package/dist/controls/DateControl.js.map +1 -1
- package/dist/controls/DateControlObjects.d.ts +1 -0
- package/dist/controls/DateControlObjects.js +2 -0
- package/dist/controls/DateControlObjects.js.map +1 -0
- package/dist/controls/FormComboBox.d.ts +2 -2
- package/dist/controls/FormComboBox.js +6 -6
- package/dist/controls/FormComboBox.js.map +1 -1
- package/dist/controls/FormComboBoxObjects.d.ts +1 -0
- package/dist/controls/FormComboBoxObjects.js +2 -0
- package/dist/controls/FormComboBoxObjects.js.map +1 -0
- package/dist/controls/GridColumnControl.d.ts +10 -0
- package/dist/controls/GridColumnControl.js +43 -0
- package/dist/controls/GridColumnControl.js.map +1 -0
- package/dist/controls/GridColumnControlObjects.d.ts +9 -0
- package/dist/controls/GridColumnControlObjects.js +13 -0
- package/dist/controls/GridColumnControlObjects.js.map +1 -0
- package/dist/controls/InputFieldControl.d.ts +3 -3
- package/dist/controls/InputFieldControl.js +5 -5
- package/dist/controls/InputFieldControl.js.map +1 -1
- package/dist/controls/InputFieldControlObjects.d.ts +1 -0
- package/dist/controls/InputFieldControlObjects.js +2 -0
- package/dist/controls/InputFieldControlObjects.js.map +1 -0
- package/dist/controls/LookupDropdown.d.ts +6 -1
- package/dist/controls/LookupDropdown.js +42 -13
- package/dist/controls/LookupDropdown.js.map +1 -1
- package/dist/controls/index.d.ts +1 -0
- package/dist/controls/index.js +1 -0
- package/dist/controls/index.js.map +1 -1
- package/dist/enums/ElementTypes.d.ts +1 -1
- package/dist/enums/ElementTypes.js +1 -1
- package/dist/enums/ElementTypes.js.map +1 -1
- package/dist/helpers/FlightTracker.d.ts +7 -0
- package/dist/helpers/FlightTracker.js +63 -11
- package/dist/helpers/FlightTracker.js.map +1 -1
- package/dist/helpers/LoginHelper.d.ts +11 -3
- package/dist/helpers/LoginHelper.js +59 -13
- package/dist/helpers/LoginHelper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/page-extensions/GlobalComponents.d.ts +2 -1
- package/dist/page-extensions/GlobalComponents.js +2 -1
- package/dist/page-extensions/GlobalComponents.js.map +1 -1
- package/dist/page-overrides/ClickOverride.d.ts +1 -0
- package/dist/page-overrides/ClickOverride.js +57 -46
- package/dist/page-overrides/ClickOverride.js.map +1 -1
- package/dist/types/Universal.d.ts +1 -0
- package/enums/ElementTypes.ts +1 -1
- package/helpers/FlightTracker.ts +71 -11
- package/helpers/LoginHelper.ts +79 -21
- package/index.ts +1 -1
- package/package.json +6 -5
- package/page-extensions/GlobalComponents.ts +3 -0
- package/page-overrides/ClickOverride.ts +69 -64
- package/types/Universal.ts +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Locator } from '@playwright/test';
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
2
|
import { FlightTracker } from '../helpers/FlightTracker.js';
|
|
3
3
|
import { testwiseConfig } from '../services/ConfigBuilder.js';
|
|
4
4
|
import type { Test } from '../types/Test.js';
|
|
@@ -9,26 +9,41 @@ const continueOnError = testwiseConfig().get<boolean>('featureSettings.InflightR
|
|
|
9
9
|
|
|
10
10
|
export class ClickOverride {
|
|
11
11
|
private _test: Test;
|
|
12
|
+
private _page: Page | null = null;
|
|
12
13
|
private flightTracker: FlightTracker = new FlightTracker();
|
|
13
14
|
|
|
14
15
|
constructor(test: Test) {
|
|
15
16
|
this._test = test.extend({
|
|
16
17
|
page: async ({ page }, use) => {
|
|
18
|
+
this._page = page;
|
|
19
|
+
|
|
20
|
+
const isTrackable = (url: string, resourceType: string) => {
|
|
21
|
+
const lowerUrl = url.toLowerCase();
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
resourceType === 'xhr' &&
|
|
25
|
+
!lowerUrl.includes('/detect_change(') &&
|
|
26
|
+
!lowerUrl.includes('/set_gui_start_use_log_session') &&
|
|
27
|
+
!lowerUrl.includes('download_icon') &&
|
|
28
|
+
!lowerUrl.includes('download_list_bar_grp_icon') &&
|
|
29
|
+
!lowerUrl.includes('/badge()')
|
|
30
|
+
);
|
|
31
|
+
};
|
|
32
|
+
|
|
17
33
|
const overrideClickMethod = (locator: Locator): Locator => {
|
|
18
34
|
const originalClickMethod = locator.click.bind(locator);
|
|
19
35
|
|
|
20
36
|
page.on('request', (request) => {
|
|
21
|
-
if (request.
|
|
37
|
+
if (isTrackable(request.url(), request.resourceType())) {
|
|
22
38
|
this.flightTracker.requestsInFlight++;
|
|
23
39
|
}
|
|
24
40
|
});
|
|
25
41
|
|
|
26
42
|
page.on('response', (response) => {
|
|
27
|
-
if (response.request().
|
|
43
|
+
if (isTrackable(response.request().url(), response.request().resourceType())) {
|
|
28
44
|
if (this.flightTracker.requestsInFlight > 0) {
|
|
29
45
|
this.flightTracker.requestsInFlight--;
|
|
30
46
|
}
|
|
31
|
-
|
|
32
47
|
if (this.flightTracker.requestsInFlight === 0) {
|
|
33
48
|
this.flightTracker.eventEmitter.emit('idle');
|
|
34
49
|
}
|
|
@@ -42,75 +57,65 @@ export class ClickOverride {
|
|
|
42
57
|
await this.flightTracker.waitToContinue();
|
|
43
58
|
} catch (error) {
|
|
44
59
|
console.warn('Exception while waiting for inflight requests to finish:', error);
|
|
45
|
-
|
|
60
|
+
if (this._page) {
|
|
61
|
+
const inflightRequests = await this._page.evaluate(() => {
|
|
62
|
+
return performance
|
|
63
|
+
.getEntriesByType('resource')
|
|
64
|
+
.filter((entry) => {
|
|
65
|
+
const res = entry as PerformanceResourceTiming;
|
|
66
|
+
return (
|
|
67
|
+
res.initiatorType === 'xmlhttprequest' &&
|
|
68
|
+
!res.name.includes('/detect_change(') &&
|
|
69
|
+
!res.name.includes('/set_gui_start_use_log_session')
|
|
70
|
+
);
|
|
71
|
+
})
|
|
72
|
+
.map((entry) => (entry as PerformanceResourceTiming).name);
|
|
73
|
+
});
|
|
74
|
+
console.debug('Current inflight XHR requests:', inflightRequests);
|
|
75
|
+
}
|
|
46
76
|
if (!continueOnError) throw error;
|
|
47
77
|
}
|
|
48
78
|
}
|
|
79
|
+
return;
|
|
49
80
|
};
|
|
50
81
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const originalGetByLabelMethod = locator.getByLabel.bind(locator);
|
|
69
|
-
locator.getByLabel = (...args) => overrideClickMethod(originalGetByLabelMethod(...args));
|
|
70
|
-
|
|
71
|
-
const originalGetByRoleMethod = locator.getByRole.bind(locator);
|
|
72
|
-
locator.getByRole = (...args) => overrideClickMethod(originalGetByRoleMethod(...args));
|
|
73
|
-
|
|
74
|
-
const originalGetByPlaceholderMethod = locator.getByPlaceholder.bind(locator);
|
|
75
|
-
locator.getByPlaceholder = (...args) => overrideClickMethod(originalGetByPlaceholderMethod(...args));
|
|
76
|
-
|
|
77
|
-
const originalGetByTitleMethod = locator.getByTitle.bind(locator);
|
|
78
|
-
locator.getByTitle = (...args) => overrideClickMethod(originalGetByTitleMethod(...args));
|
|
82
|
+
const locatorMethods = [
|
|
83
|
+
'locator',
|
|
84
|
+
'filter',
|
|
85
|
+
'getByText',
|
|
86
|
+
'getByTestId',
|
|
87
|
+
'getByAltText',
|
|
88
|
+
'getByLabel',
|
|
89
|
+
'getByRole',
|
|
90
|
+
'getByPlaceholder',
|
|
91
|
+
'getByTitle'
|
|
92
|
+
] as const;
|
|
93
|
+
|
|
94
|
+
for (const method of locatorMethods) {
|
|
95
|
+
const original = (locator[method] as (...args: unknown[]) => Locator).bind(locator);
|
|
96
|
+
(locator as unknown as Record<string, (...args: unknown[]) => Locator>)[method] = (...args: unknown[]) =>
|
|
97
|
+
overrideClickMethod(original(...args));
|
|
98
|
+
}
|
|
79
99
|
|
|
80
100
|
return locator;
|
|
81
101
|
};
|
|
82
102
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
// Override the getByRole.click method
|
|
100
|
-
const originalGetByRole = page.getByRole.bind(page);
|
|
101
|
-
page.getByRole = (...args) => overrideClickMethod(originalGetByRole(...args));
|
|
102
|
-
|
|
103
|
-
// Override the getByPlaceholder.click method
|
|
104
|
-
const originalGetByPlaceholder = page.getByPlaceholder.bind(page);
|
|
105
|
-
page.getByPlaceholder = (...args) => overrideClickMethod(originalGetByPlaceholder(...args));
|
|
106
|
-
|
|
107
|
-
// Override the getByText.click method
|
|
108
|
-
const originalGetByText = page.getByText.bind(page);
|
|
109
|
-
page.getByText = (...args) => overrideClickMethod(originalGetByText(...args));
|
|
110
|
-
|
|
111
|
-
// Override the getByTitle.click method
|
|
112
|
-
const originalGetByTitle = page.getByTitle.bind(page);
|
|
113
|
-
page.getByTitle = (...args) => overrideClickMethod(originalGetByTitle(...args));
|
|
103
|
+
const rootMethods = [
|
|
104
|
+
'locator',
|
|
105
|
+
'getByTestId',
|
|
106
|
+
'getByAltText',
|
|
107
|
+
'getByLabel',
|
|
108
|
+
'getByRole',
|
|
109
|
+
'getByPlaceholder',
|
|
110
|
+
'getByText',
|
|
111
|
+
'getByTitle'
|
|
112
|
+
] as const;
|
|
113
|
+
|
|
114
|
+
for (const method of rootMethods) {
|
|
115
|
+
const original = (page[method] as (...args: unknown[]) => Locator).bind(page);
|
|
116
|
+
(page as unknown as Record<string, (...args: unknown[]) => Locator>)[method] = (...args: unknown[]) =>
|
|
117
|
+
overrideClickMethod(original(...args));
|
|
118
|
+
}
|
|
114
119
|
|
|
115
120
|
await use(page);
|
|
116
121
|
}
|