@camunda/e2e-test-suite 0.0.257 → 0.0.258
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/dist/fixtures/SM-8.10.d.ts +81 -0
- package/dist/fixtures/SM-8.10.js +184 -0
- package/dist/pages/SM-8.10/Authorization.d.ts +31 -0
- package/dist/pages/SM-8.10/Authorization.js +146 -0
- package/dist/pages/SM-8.10/ClusterDetailsPage.d.ts +8 -0
- package/dist/pages/SM-8.10/ClusterDetailsPage.js +28 -0
- package/dist/pages/SM-8.10/ClusterPage.d.ts +11 -0
- package/dist/pages/SM-8.10/ClusterPage.js +32 -0
- package/dist/pages/SM-8.10/ConnectorMarketplacePage.d.ts +16 -0
- package/dist/pages/SM-8.10/ConnectorMarketplacePage.js +52 -0
- package/dist/pages/SM-8.10/ConnectorSettingsPage.d.ts +40 -0
- package/dist/pages/SM-8.10/ConnectorSettingsPage.js +133 -0
- package/dist/pages/SM-8.10/ConnectorTemplatePage.d.ts +11 -0
- package/dist/pages/SM-8.10/ConnectorTemplatePage.js +34 -0
- package/dist/pages/SM-8.10/ConsoleHomePage.d.ts +11 -0
- package/dist/pages/SM-8.10/ConsoleHomePage.js +31 -0
- package/dist/pages/SM-8.10/ConsoleOrganizationPage.d.ts +22 -0
- package/dist/pages/SM-8.10/ConsoleOrganizationPage.js +68 -0
- package/dist/pages/SM-8.10/FormJsPage.d.ts +31 -0
- package/dist/pages/SM-8.10/FormJsPage.js +87 -0
- package/dist/pages/SM-8.10/HomePage.d.ts +20 -0
- package/dist/pages/SM-8.10/HomePage.js +49 -0
- package/dist/pages/SM-8.10/IdentityTenantPage.d.ts +52 -0
- package/dist/pages/SM-8.10/IdentityTenantPage.js +218 -0
- package/dist/pages/SM-8.10/IdentityUsersPage.d.ts +92 -0
- package/dist/pages/SM-8.10/IdentityUsersPage.js +473 -0
- package/dist/pages/SM-8.10/KeycloakAdminPage.d.ts +15 -0
- package/dist/pages/SM-8.10/KeycloakAdminPage.js +68 -0
- package/dist/pages/SM-8.10/KeycloakLoginPage.d.ts +11 -0
- package/dist/pages/SM-8.10/KeycloakLoginPage.js +25 -0
- package/dist/pages/SM-8.10/KeycloakUtils.d.ts +16 -0
- package/dist/pages/SM-8.10/KeycloakUtils.js +63 -0
- package/dist/pages/SM-8.10/LoginPage.d.ts +21 -0
- package/dist/pages/SM-8.10/LoginPage.js +100 -0
- package/dist/pages/SM-8.10/ManagementIdentityPage.d.ts +46 -0
- package/dist/pages/SM-8.10/ManagementIdentityPage.js +153 -0
- package/dist/pages/SM-8.10/ModelerCreatePage.d.ts +199 -0
- package/dist/pages/SM-8.10/ModelerCreatePage.js +1052 -0
- package/dist/pages/SM-8.10/ModelerHomePage.d.ts +44 -0
- package/dist/pages/SM-8.10/ModelerHomePage.js +179 -0
- package/dist/pages/SM-8.10/NavigationPage.d.ts +47 -0
- package/dist/pages/SM-8.10/NavigationPage.js +134 -0
- package/dist/pages/SM-8.10/OCIdentityAuthorizationsPage.d.ts +10 -0
- package/dist/pages/SM-8.10/OCIdentityAuthorizationsPage.js +35 -0
- package/dist/pages/SM-8.10/OCIdentityClusterVariablesPage.d.ts +20 -0
- package/dist/pages/SM-8.10/OCIdentityClusterVariablesPage.js +69 -0
- package/dist/pages/SM-8.10/OCIdentityGroupsPage.d.ts +39 -0
- package/dist/pages/SM-8.10/OCIdentityGroupsPage.js +154 -0
- package/dist/pages/SM-8.10/OCIdentityHomePage.d.ts +23 -0
- package/dist/pages/SM-8.10/OCIdentityHomePage.js +81 -0
- package/dist/pages/SM-8.10/OCIdentityMappingRulesPage.d.ts +23 -0
- package/dist/pages/SM-8.10/OCIdentityMappingRulesPage.js +110 -0
- package/dist/pages/SM-8.10/OCIdentityRolesPage.d.ts +55 -0
- package/dist/pages/SM-8.10/OCIdentityRolesPage.js +197 -0
- package/dist/pages/SM-8.10/OCTenantPage.d.ts +67 -0
- package/dist/pages/SM-8.10/OCTenantPage.js +280 -0
- package/dist/pages/SM-8.10/OperateHomePage.d.ts +24 -0
- package/dist/pages/SM-8.10/OperateHomePage.js +81 -0
- package/dist/pages/SM-8.10/OperateProcessInstancePage.d.ts +24 -0
- package/dist/pages/SM-8.10/OperateProcessInstancePage.js +170 -0
- package/dist/pages/SM-8.10/OperateProcessesPage.d.ts +32 -0
- package/dist/pages/SM-8.10/OperateProcessesPage.js +205 -0
- package/dist/pages/SM-8.10/OptimizeCollectionsPage.d.ts +17 -0
- package/dist/pages/SM-8.10/OptimizeCollectionsPage.js +66 -0
- package/dist/pages/SM-8.10/OptimizeDashboardPage.d.ts +14 -0
- package/dist/pages/SM-8.10/OptimizeDashboardPage.js +56 -0
- package/dist/pages/SM-8.10/OptimizeHomePage.d.ts +19 -0
- package/dist/pages/SM-8.10/OptimizeHomePage.js +64 -0
- package/dist/pages/SM-8.10/OptimizeReportPage.d.ts +50 -0
- package/dist/pages/SM-8.10/OptimizeReportPage.js +179 -0
- package/dist/pages/SM-8.10/PlayPage.d.ts +44 -0
- package/dist/pages/SM-8.10/PlayPage.js +235 -0
- package/dist/pages/SM-8.10/SettingsPage.d.ts +12 -0
- package/dist/pages/SM-8.10/SettingsPage.js +25 -0
- package/dist/pages/SM-8.10/TaskDetailsPage.d.ts +70 -0
- package/dist/pages/SM-8.10/TaskDetailsPage.js +266 -0
- package/dist/pages/SM-8.10/TaskPanelPage.d.ts +24 -0
- package/dist/pages/SM-8.10/TaskPanelPage.js +93 -0
- package/dist/pages/SM-8.10/TaskProcessesPage.d.ts +14 -0
- package/dist/pages/SM-8.10/TaskProcessesPage.js +53 -0
- package/dist/pages/SM-8.10/UtilitiesPage.d.ts +34 -0
- package/dist/pages/SM-8.10/UtilitiesPage.js +435 -0
- package/dist/pages/SM-8.10/optimizeReportUtils.d.ts +6 -0
- package/dist/pages/SM-8.10/optimizeReportUtils.js +42 -0
- package/dist/pages/SM-8.7/ModelerCreatePage.js +3 -0
- package/dist/pages/SM-8.7/PlayPage.d.ts +1 -0
- package/dist/pages/SM-8.7/PlayPage.js +4 -2
- package/dist/tests/SM-8.10/cluster-variables.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/cluster-variables.spec.js +190 -0
- package/dist/tests/SM-8.10/connectors-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/connectors-user-flows.spec.js +260 -0
- package/dist/tests/SM-8.10/console-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/console-user-flows.spec.js +88 -0
- package/dist/tests/SM-8.10/document-handling-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/document-handling-user-flows.spec.js +157 -0
- package/dist/tests/SM-8.10/hto-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/hto-user-flows.spec.js +408 -0
- package/dist/tests/SM-8.10/identity-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/identity-user-flows.spec.js +233 -0
- package/dist/tests/SM-8.10/license-key-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/license-key-user-flows.spec.js +523 -0
- package/dist/tests/SM-8.10/login.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/login.spec.js +24 -0
- package/dist/tests/SM-8.10/migration-path-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/migration-path-user-flows.spec.js +224 -0
- package/dist/tests/SM-8.10/mt-enabled-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/mt-enabled-user-flows.spec.js +584 -0
- package/dist/tests/SM-8.10/optimize-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/optimize-user-flows.spec.js +184 -0
- package/dist/tests/SM-8.10/play.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/play.spec.js +152 -0
- package/dist/tests/SM-8.10/rba-enabled-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/rba-enabled-user-flows.spec.js +715 -0
- package/dist/tests/SM-8.10/smoke-tests.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/smoke-tests.spec.js +163 -0
- package/dist/tests/SM-8.10/test-setup.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/test-setup.spec.js +24 -0
- package/dist/tests/SM-8.10/web-modeler-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.10/web-modeler-user-flows.spec.js +178 -0
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Page, Locator } from '@playwright/test';
|
|
2
|
+
declare class OCTenantPage {
|
|
3
|
+
private page;
|
|
4
|
+
readonly createTenantMainButton: Locator;
|
|
5
|
+
readonly enterTenantNameInput: Locator;
|
|
6
|
+
readonly enterTenantIdInput: Locator;
|
|
7
|
+
readonly createTenantSubButton: Locator;
|
|
8
|
+
readonly usersTab: Locator;
|
|
9
|
+
readonly assignUsersButton: Locator;
|
|
10
|
+
readonly usernameInput: Locator;
|
|
11
|
+
readonly assignUserFinalButton: Locator;
|
|
12
|
+
readonly removeUserButton: Locator;
|
|
13
|
+
readonly removeButton: Locator;
|
|
14
|
+
readonly openSidebarButton: Locator;
|
|
15
|
+
readonly logoutButton: Locator;
|
|
16
|
+
readonly assignedApplicationsTab: Locator;
|
|
17
|
+
readonly searchApplicationsInput: Locator;
|
|
18
|
+
readonly assignApplicationsButtonFinal: Locator;
|
|
19
|
+
readonly assignApplicationsButton: Locator;
|
|
20
|
+
readonly tenantDescriptionInput: Locator;
|
|
21
|
+
readonly modalCloseButton: Locator;
|
|
22
|
+
readonly rolesTab: Locator;
|
|
23
|
+
readonly assignRoleButton: Locator;
|
|
24
|
+
readonly roleIdSearchBox: Locator;
|
|
25
|
+
readonly assignRoleSubButton: Locator;
|
|
26
|
+
readonly cancelButton: Locator;
|
|
27
|
+
readonly gotItButton: Locator;
|
|
28
|
+
readonly row: (name: string) => Locator;
|
|
29
|
+
constructor(page: Page);
|
|
30
|
+
clickCreateTenantMainButton(): Promise<void>;
|
|
31
|
+
clickCreateTenantSubButton(): Promise<void>;
|
|
32
|
+
clickEnterTenantNameInput(): Promise<void>;
|
|
33
|
+
fillEnterTenantNameInput(tenantName: string): Promise<void>;
|
|
34
|
+
clickEnterTenantIdInput(): Promise<void>;
|
|
35
|
+
fillEnterTenantIdInput(tenantId: string): Promise<void>;
|
|
36
|
+
clickUsersTab(): Promise<void>;
|
|
37
|
+
clickAssignUsersButton(): Promise<void>;
|
|
38
|
+
clickUsernameInput(): Promise<void>;
|
|
39
|
+
fillUsernameInput(user: string): Promise<void>;
|
|
40
|
+
clickAssignUserFinalButton(): Promise<void>;
|
|
41
|
+
clickRemoveUserButton(): Promise<void>;
|
|
42
|
+
clickRemoveButton(): Promise<void>;
|
|
43
|
+
clickTenantDescriptionInput(): Promise<void>;
|
|
44
|
+
fillTenantDescriptionInput(description: string): Promise<void>;
|
|
45
|
+
createTenant(tenantName: string): Promise<void>;
|
|
46
|
+
assertTenantCreated(): Promise<void>;
|
|
47
|
+
clickCancelButton(): Promise<void>;
|
|
48
|
+
clickGotItButton(): Promise<void>;
|
|
49
|
+
clickTenant(tenantName: string): Promise<void>;
|
|
50
|
+
assignUserToTenant(user: string): Promise<void>;
|
|
51
|
+
removeUserFromTenant(tenantName: string): Promise<void>;
|
|
52
|
+
clickOpenSidebarButton(): Promise<void>;
|
|
53
|
+
clickLogoutButton(): Promise<void>;
|
|
54
|
+
assignClientToTenant(clientName: string): Promise<void>;
|
|
55
|
+
clickAssignedApplicationsTab(): Promise<void>;
|
|
56
|
+
clickSearchApplicationsInput(): Promise<void>;
|
|
57
|
+
fillSearchApplicationsInput(clientName: string): Promise<void>;
|
|
58
|
+
clickAssignApplicationsFinalButton(): Promise<void>;
|
|
59
|
+
clickAssignApplicationsButton(): Promise<void>;
|
|
60
|
+
clickRolesTab(): Promise<void>;
|
|
61
|
+
clickAssignRoleButton(): Promise<void>;
|
|
62
|
+
clickRoleIdSearchBox(): Promise<void>;
|
|
63
|
+
fillRoleIdSearchBox(roleId: string, roleIdentifier: string): Promise<void>;
|
|
64
|
+
clickAssignRoleSubButton(): Promise<void>;
|
|
65
|
+
assignRoleToTenant(roleId: string, roleIdentifier: string): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
export { OCTenantPage };
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OCTenantPage = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const sleep_1 = require("../../utils/sleep");
|
|
6
|
+
const findLocatorInPaginatedList_1 = require("../../utils/findLocatorInPaginatedList");
|
|
7
|
+
const expectTextWithPagination_1 = require("../../utils/assertionHelpers/expectTextWithPagination");
|
|
8
|
+
class OCTenantPage {
|
|
9
|
+
page;
|
|
10
|
+
createTenantMainButton;
|
|
11
|
+
enterTenantNameInput;
|
|
12
|
+
enterTenantIdInput;
|
|
13
|
+
createTenantSubButton;
|
|
14
|
+
usersTab;
|
|
15
|
+
assignUsersButton;
|
|
16
|
+
usernameInput;
|
|
17
|
+
assignUserFinalButton;
|
|
18
|
+
removeUserButton;
|
|
19
|
+
removeButton;
|
|
20
|
+
openSidebarButton;
|
|
21
|
+
logoutButton;
|
|
22
|
+
assignedApplicationsTab;
|
|
23
|
+
searchApplicationsInput;
|
|
24
|
+
assignApplicationsButtonFinal;
|
|
25
|
+
assignApplicationsButton;
|
|
26
|
+
tenantDescriptionInput;
|
|
27
|
+
modalCloseButton;
|
|
28
|
+
rolesTab;
|
|
29
|
+
assignRoleButton;
|
|
30
|
+
roleIdSearchBox;
|
|
31
|
+
assignRoleSubButton;
|
|
32
|
+
cancelButton;
|
|
33
|
+
gotItButton;
|
|
34
|
+
row;
|
|
35
|
+
constructor(page) {
|
|
36
|
+
this.page = page;
|
|
37
|
+
this.createTenantMainButton = page.getByRole('button', {
|
|
38
|
+
name: 'Create Tenant',
|
|
39
|
+
});
|
|
40
|
+
this.enterTenantNameInput = page.getByPlaceholder('Enter tenant name');
|
|
41
|
+
this.enterTenantIdInput = page.getByPlaceholder('Enter tenant ID');
|
|
42
|
+
this.createTenantSubButton = page
|
|
43
|
+
.getByLabel('Create new tenant')
|
|
44
|
+
.getByRole('button', { name: 'Create tenant' });
|
|
45
|
+
this.usersTab = page.getByRole('tab', { name: 'Users' });
|
|
46
|
+
this.assignUsersButton = page.getByRole('button', { name: 'Assign user' });
|
|
47
|
+
this.usernameInput = page.getByTitle('Username');
|
|
48
|
+
this.assignUserFinalButton = page
|
|
49
|
+
.getByLabel('Assign user')
|
|
50
|
+
.getByRole('button', { name: 'Assign user' });
|
|
51
|
+
this.removeUserButton = page.getByRole('button', {
|
|
52
|
+
name: 'danger Remove user',
|
|
53
|
+
});
|
|
54
|
+
this.removeButton = page.getByRole('button', { name: 'danger Remove' });
|
|
55
|
+
this.openSidebarButton = page.getByLabel('Open User Sidebar');
|
|
56
|
+
this.logoutButton = page.getByRole('button', { name: 'Log out' });
|
|
57
|
+
this.assignedApplicationsTab = page.getByRole('tab', {
|
|
58
|
+
name: 'Assigned applications',
|
|
59
|
+
});
|
|
60
|
+
this.searchApplicationsInput = page.getByPlaceholder('Search applications');
|
|
61
|
+
this.assignApplicationsButtonFinal = page
|
|
62
|
+
.getByLabel('Assign applications')
|
|
63
|
+
.getByRole('button', { name: 'Assign applications' });
|
|
64
|
+
this.assignApplicationsButton = page.getByRole('button', {
|
|
65
|
+
name: 'Assign applications',
|
|
66
|
+
});
|
|
67
|
+
this.tenantDescriptionInput = page.getByTitle('Description');
|
|
68
|
+
this.modalCloseButton = page
|
|
69
|
+
.getByRole('dialog')
|
|
70
|
+
.getByRole('button', { name: 'Close' });
|
|
71
|
+
this.rolesTab = page.getByRole('tab', { name: 'Roles' });
|
|
72
|
+
this.assignRoleButton = page.getByRole('button', { name: 'Assign role' });
|
|
73
|
+
this.roleIdSearchBox = page.getByRole('searchbox', {
|
|
74
|
+
name: 'Search by Role ID',
|
|
75
|
+
});
|
|
76
|
+
this.assignRoleSubButton = page
|
|
77
|
+
.getByLabel('Assign role')
|
|
78
|
+
.getByRole('button', { name: 'Assign role' });
|
|
79
|
+
this.cancelButton = page
|
|
80
|
+
.getByRole('dialog')
|
|
81
|
+
.getByRole('button', { name: 'Cancel' });
|
|
82
|
+
this.gotItButton = page.getByRole('button', { name: 'Got it' });
|
|
83
|
+
this.row = (name) => this.page.getByRole('row').filter({ hasText: name }).first();
|
|
84
|
+
}
|
|
85
|
+
async clickCreateTenantMainButton() {
|
|
86
|
+
await this.createTenantMainButton.click({ timeout: 60000 });
|
|
87
|
+
}
|
|
88
|
+
async clickCreateTenantSubButton() {
|
|
89
|
+
await this.createTenantSubButton.click({ timeout: 60000 });
|
|
90
|
+
}
|
|
91
|
+
async clickEnterTenantNameInput() {
|
|
92
|
+
await this.enterTenantNameInput.click();
|
|
93
|
+
}
|
|
94
|
+
async fillEnterTenantNameInput(tenantName) {
|
|
95
|
+
await this.enterTenantNameInput.fill(tenantName);
|
|
96
|
+
}
|
|
97
|
+
async clickEnterTenantIdInput() {
|
|
98
|
+
await this.enterTenantIdInput.click();
|
|
99
|
+
}
|
|
100
|
+
async fillEnterTenantIdInput(tenantId) {
|
|
101
|
+
await this.enterTenantIdInput.fill(tenantId);
|
|
102
|
+
}
|
|
103
|
+
async clickUsersTab() {
|
|
104
|
+
await this.usersTab.click({ timeout: 60000 });
|
|
105
|
+
}
|
|
106
|
+
async clickAssignUsersButton() {
|
|
107
|
+
await this.assignUsersButton.click();
|
|
108
|
+
}
|
|
109
|
+
async clickUsernameInput() {
|
|
110
|
+
await this.usernameInput.click();
|
|
111
|
+
}
|
|
112
|
+
async fillUsernameInput(user) {
|
|
113
|
+
await this.usernameInput.fill(user);
|
|
114
|
+
}
|
|
115
|
+
async clickAssignUserFinalButton() {
|
|
116
|
+
try {
|
|
117
|
+
await this.assignUserFinalButton.click();
|
|
118
|
+
await (0, test_1.expect)(this.page.getByRole('dialog')).not.toBeVisible();
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
if (await this.page.getByText('ALREADY_EXISTS').first().isVisible()) {
|
|
122
|
+
console.log('User is already assigned to tenant');
|
|
123
|
+
await this.clickCancelButton();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
throw new Error('Assigning user to tenant failed' + e);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async clickRemoveUserButton() {
|
|
131
|
+
await this.removeUserButton.click();
|
|
132
|
+
}
|
|
133
|
+
async clickRemoveButton() {
|
|
134
|
+
await this.removeButton.click();
|
|
135
|
+
}
|
|
136
|
+
async clickTenantDescriptionInput() {
|
|
137
|
+
await this.tenantDescriptionInput.click();
|
|
138
|
+
}
|
|
139
|
+
async fillTenantDescriptionInput(description) {
|
|
140
|
+
await this.tenantDescriptionInput.fill(description);
|
|
141
|
+
}
|
|
142
|
+
async createTenant(tenantName) {
|
|
143
|
+
await this.clickCreateTenantMainButton();
|
|
144
|
+
await this.clickEnterTenantNameInput();
|
|
145
|
+
await this.fillEnterTenantNameInput(tenantName);
|
|
146
|
+
await this.clickEnterTenantIdInput();
|
|
147
|
+
await this.fillEnterTenantIdInput(tenantName);
|
|
148
|
+
await this.clickTenantDescriptionInput();
|
|
149
|
+
await this.fillTenantDescriptionInput('This is a test');
|
|
150
|
+
await this.clickCreateTenantSubButton();
|
|
151
|
+
await this.assertTenantCreated();
|
|
152
|
+
await (0, sleep_1.sleep)(30000);
|
|
153
|
+
}
|
|
154
|
+
async assertTenantCreated() {
|
|
155
|
+
try {
|
|
156
|
+
await (0, test_1.expect)(this.page.getByText('successfully created')).toBeVisible({
|
|
157
|
+
timeout: 8000,
|
|
158
|
+
});
|
|
159
|
+
await this.clickGotItButton();
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (await this.page.getByText('ALREADY_EXISTS').first().isVisible()) {
|
|
163
|
+
await this.clickCancelButton();
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
throw new Error('Creating tenant failed' + error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async clickCancelButton() {
|
|
171
|
+
await this.cancelButton.click({ timeout: 30000 });
|
|
172
|
+
}
|
|
173
|
+
async clickGotItButton() {
|
|
174
|
+
await this.gotItButton.click({ timeout: 30000 });
|
|
175
|
+
}
|
|
176
|
+
async clickTenant(tenantName) {
|
|
177
|
+
const maxRetries = 10;
|
|
178
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
179
|
+
try {
|
|
180
|
+
await this.page.reload();
|
|
181
|
+
await (0, sleep_1.sleep)(10000);
|
|
182
|
+
const tenant = this.page.getByText(tenantName).first();
|
|
183
|
+
await (0, findLocatorInPaginatedList_1.findLocatorInPaginatedList)(this.page, tenant);
|
|
184
|
+
await tenant.click({
|
|
185
|
+
timeout: 30000,
|
|
186
|
+
});
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
console.warn(`Attempt ${attempt} to click tenant '${tenantName}' failed. Retrying...`, error);
|
|
191
|
+
if (attempt === maxRetries) {
|
|
192
|
+
throw new Error(`Failed to click tenant '${tenantName}' after ${maxRetries} attempts.`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async assignUserToTenant(user) {
|
|
198
|
+
await this.clickUsersTab();
|
|
199
|
+
await this.clickAssignUsersButton();
|
|
200
|
+
await this.clickUsernameInput();
|
|
201
|
+
await this.fillUsernameInput(user);
|
|
202
|
+
await this.clickAssignUserFinalButton();
|
|
203
|
+
}
|
|
204
|
+
async removeUserFromTenant(tenantName) {
|
|
205
|
+
await (0, expectTextWithPagination_1.expectTextWithPagination)(this.page, tenantName);
|
|
206
|
+
await this.page.getByText(tenantName).first().click();
|
|
207
|
+
await this.clickUsersTab();
|
|
208
|
+
await this.clickRemoveButton();
|
|
209
|
+
await this.clickRemoveUserButton();
|
|
210
|
+
await (0, test_1.expect)(this.page.getByText('Tenant member has been removed.')).toBeVisible({
|
|
211
|
+
timeout: 60000,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async clickOpenSidebarButton() {
|
|
215
|
+
await this.openSidebarButton.click({ timeout: 60000 });
|
|
216
|
+
}
|
|
217
|
+
async clickLogoutButton() {
|
|
218
|
+
await this.logoutButton.click({ timeout: 60000 });
|
|
219
|
+
}
|
|
220
|
+
async assignClientToTenant(clientName) {
|
|
221
|
+
await this.clickAssignedApplicationsTab();
|
|
222
|
+
if (await this.page.getByText(clientName, { exact: true }).isVisible()) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
await this.clickAssignApplicationsButton();
|
|
227
|
+
await this.clickSearchApplicationsInput();
|
|
228
|
+
await this.fillSearchApplicationsInput(clientName);
|
|
229
|
+
await this.page.getByText(clientName, { exact: true }).click();
|
|
230
|
+
await this.clickAssignApplicationsFinalButton();
|
|
231
|
+
await (0, test_1.expect)(this.page.getByText('Applications assigned')).toBeVisible({
|
|
232
|
+
timeout: 60000,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async clickAssignedApplicationsTab() {
|
|
237
|
+
await this.assignedApplicationsTab.click({ timeout: 60000 });
|
|
238
|
+
}
|
|
239
|
+
async clickSearchApplicationsInput() {
|
|
240
|
+
await this.searchApplicationsInput.click({ timeout: 60000 });
|
|
241
|
+
}
|
|
242
|
+
async fillSearchApplicationsInput(clientName) {
|
|
243
|
+
await this.searchApplicationsInput.fill(clientName);
|
|
244
|
+
}
|
|
245
|
+
async clickAssignApplicationsFinalButton() {
|
|
246
|
+
await this.assignApplicationsButtonFinal.click({ timeout: 60000 });
|
|
247
|
+
}
|
|
248
|
+
async clickAssignApplicationsButton() {
|
|
249
|
+
await this.assignApplicationsButton.click({ timeout: 60000 });
|
|
250
|
+
}
|
|
251
|
+
async clickRolesTab() {
|
|
252
|
+
await this.rolesTab.click();
|
|
253
|
+
}
|
|
254
|
+
async clickAssignRoleButton() {
|
|
255
|
+
await this.assignRoleButton.click();
|
|
256
|
+
}
|
|
257
|
+
async clickRoleIdSearchBox() {
|
|
258
|
+
await this.roleIdSearchBox.click();
|
|
259
|
+
}
|
|
260
|
+
async fillRoleIdSearchBox(roleId, roleIdentifier) {
|
|
261
|
+
await this.roleIdSearchBox.fill(roleId);
|
|
262
|
+
await this.page.getByText(roleIdentifier).click();
|
|
263
|
+
}
|
|
264
|
+
async clickAssignRoleSubButton() {
|
|
265
|
+
await this.assignRoleSubButton.click();
|
|
266
|
+
}
|
|
267
|
+
async assignRoleToTenant(roleId, roleIdentifier) {
|
|
268
|
+
await this.clickRolesTab();
|
|
269
|
+
await (0, sleep_1.sleep)(1000);
|
|
270
|
+
if (await this.row(roleId).isVisible()) {
|
|
271
|
+
console.log(`Role ${roleId} is already assigned to tenant`);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
await this.clickAssignRoleButton();
|
|
275
|
+
await this.clickRoleIdSearchBox();
|
|
276
|
+
await this.fillRoleIdSearchBox(roleId, roleIdentifier);
|
|
277
|
+
await this.clickAssignRoleSubButton();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.OCTenantPage = OCTenantPage;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Page, Locator } from '@playwright/test';
|
|
2
|
+
declare class OperateHomePage {
|
|
3
|
+
private page;
|
|
4
|
+
readonly operateBanner: Locator;
|
|
5
|
+
readonly processesTab: Locator;
|
|
6
|
+
readonly informationDialog: Locator;
|
|
7
|
+
readonly editVariableButton: Locator;
|
|
8
|
+
readonly variableValueInput: Locator;
|
|
9
|
+
readonly saveVariableButton: Locator;
|
|
10
|
+
readonly editVariableSpinner: Locator;
|
|
11
|
+
readonly licenseKeyTagNonProduction: Locator;
|
|
12
|
+
readonly licenseKeyTagProduction: Locator;
|
|
13
|
+
readonly processPageHeading: Locator;
|
|
14
|
+
constructor(page: Page);
|
|
15
|
+
clickProcessesTab(): Promise<void>;
|
|
16
|
+
closeInformationDialog(): Promise<void>;
|
|
17
|
+
clickEditVariableButton(variableName: string): Promise<void>;
|
|
18
|
+
clickVariableValueInput(): Promise<void>;
|
|
19
|
+
clearVariableValueInput(): Promise<void>;
|
|
20
|
+
fillVariableValueInput(value: string): Promise<void>;
|
|
21
|
+
clickSaveVariableButton(): Promise<void>;
|
|
22
|
+
openProcess(processName: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export { OperateHomePage };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperateHomePage = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const clickLocatorWithRetry_1 = require("../../utils/assertionHelpers/clickLocatorWithRetry");
|
|
6
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
7
|
+
const constants_1 = require("../../utils/constants");
|
|
8
|
+
class OperateHomePage {
|
|
9
|
+
page;
|
|
10
|
+
operateBanner;
|
|
11
|
+
processesTab;
|
|
12
|
+
informationDialog;
|
|
13
|
+
editVariableButton;
|
|
14
|
+
variableValueInput;
|
|
15
|
+
saveVariableButton;
|
|
16
|
+
editVariableSpinner;
|
|
17
|
+
licenseKeyTagNonProduction;
|
|
18
|
+
licenseKeyTagProduction;
|
|
19
|
+
processPageHeading;
|
|
20
|
+
constructor(page) {
|
|
21
|
+
this.page = page;
|
|
22
|
+
this.operateBanner = page.getByRole('link', { name: 'Camunda logo Operate' });
|
|
23
|
+
this.processesTab = page.getByRole('link', {
|
|
24
|
+
name: 'Processes',
|
|
25
|
+
exact: true,
|
|
26
|
+
});
|
|
27
|
+
this.informationDialog = page.getByRole('button', {
|
|
28
|
+
name: 'Close this dialog',
|
|
29
|
+
});
|
|
30
|
+
this.editVariableButton = page.getByTestId('edit-variable-button');
|
|
31
|
+
this.variableValueInput = page.getByTestId('edit-variable-value');
|
|
32
|
+
this.saveVariableButton = page.getByLabel('Save variable');
|
|
33
|
+
this.editVariableSpinner = page
|
|
34
|
+
.getByTestId('variable-operation-spinner')
|
|
35
|
+
.locator('circle')
|
|
36
|
+
.nth(1);
|
|
37
|
+
this.licenseKeyTagNonProduction = page
|
|
38
|
+
.getByText('Non-production license')
|
|
39
|
+
.first();
|
|
40
|
+
this.licenseKeyTagProduction = page.getByText('Production license').first();
|
|
41
|
+
this.processPageHeading = page
|
|
42
|
+
.getByTestId('expanded-panel')
|
|
43
|
+
.getByRole('heading', { name: 'Process' });
|
|
44
|
+
}
|
|
45
|
+
async clickProcessesTab() {
|
|
46
|
+
await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.processesTab, {
|
|
47
|
+
totalTimeout: 20000,
|
|
48
|
+
});
|
|
49
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.processPageHeading, {
|
|
50
|
+
preAction: async () => {
|
|
51
|
+
await (0, test_1.expect)(this.processesTab).toBeVisible({
|
|
52
|
+
timeout: constants_1._1_SECOND_IN_MS * 4,
|
|
53
|
+
});
|
|
54
|
+
await this.processesTab.click({ timeout: constants_1._1_SECOND_IN_MS * 4 });
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async closeInformationDialog() {
|
|
59
|
+
await this.informationDialog.click();
|
|
60
|
+
}
|
|
61
|
+
async clickEditVariableButton(variableName) {
|
|
62
|
+
const editVariableButton = 'Edit variable ' + variableName;
|
|
63
|
+
await this.page.getByLabel(editVariableButton).click();
|
|
64
|
+
}
|
|
65
|
+
async clickVariableValueInput() {
|
|
66
|
+
await this.variableValueInput.click();
|
|
67
|
+
}
|
|
68
|
+
async clearVariableValueInput() {
|
|
69
|
+
await this.variableValueInput.clear();
|
|
70
|
+
}
|
|
71
|
+
async fillVariableValueInput(value) {
|
|
72
|
+
await this.variableValueInput.fill(value);
|
|
73
|
+
}
|
|
74
|
+
async clickSaveVariableButton() {
|
|
75
|
+
await this.saveVariableButton.click();
|
|
76
|
+
}
|
|
77
|
+
async openProcess(processName) {
|
|
78
|
+
await this.page.getByText(processName).click();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.OperateHomePage = OperateHomePage;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Page, Locator } from '@playwright/test';
|
|
2
|
+
declare class OperateProcessInstancePage {
|
|
3
|
+
private page;
|
|
4
|
+
readonly diagram: Locator;
|
|
5
|
+
readonly completedIcon: Locator;
|
|
6
|
+
readonly diagramSpinner: Locator;
|
|
7
|
+
readonly activeIcon: Locator;
|
|
8
|
+
readonly incidentIcon: Locator;
|
|
9
|
+
constructor(page: Page);
|
|
10
|
+
connectorResultVariableName(name: string): Promise<Locator>;
|
|
11
|
+
connectorResultVariableValue(variableName: string): Promise<Locator>;
|
|
12
|
+
completedIconAssertion(): Promise<void>;
|
|
13
|
+
activeIconAssertion(): Promise<void>;
|
|
14
|
+
activeUserTaskIconVisibleAssertion(taskName: string): Promise<void>;
|
|
15
|
+
activeUserTaskIconNotVisibleAssertion(taskName: string): Promise<void>;
|
|
16
|
+
tenantNameAssertion(name: string): Promise<void>;
|
|
17
|
+
incidentIconAssertion(): Promise<void>;
|
|
18
|
+
assertEitherIncidentOrActiveIconVisible(): Promise<string>;
|
|
19
|
+
assertEitherIncidentOrCompletedIconVisible(): Promise<string>;
|
|
20
|
+
assertProcessCompleteStatusWithRetry(timeout?: number, maxRetries?: number): Promise<void>;
|
|
21
|
+
assertProcessVariableContainsText(variableName: string, text: string): Promise<void>;
|
|
22
|
+
assertActiveTokenIsPresent(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export { OperateProcessInstancePage };
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperateProcessInstancePage = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const sleep_1 = require("../../utils/sleep");
|
|
6
|
+
class OperateProcessInstancePage {
|
|
7
|
+
page;
|
|
8
|
+
diagram;
|
|
9
|
+
completedIcon;
|
|
10
|
+
diagramSpinner;
|
|
11
|
+
activeIcon;
|
|
12
|
+
incidentIcon;
|
|
13
|
+
constructor(page) {
|
|
14
|
+
this.page = page;
|
|
15
|
+
this.diagram = page.getByTestId('diagram');
|
|
16
|
+
this.completedIcon = page
|
|
17
|
+
.getByTestId('instance-header')
|
|
18
|
+
.getByTestId('COMPLETED-icon');
|
|
19
|
+
this.diagramSpinner = page.getByTestId('diagram-spinner');
|
|
20
|
+
this.activeIcon = page
|
|
21
|
+
.getByTestId('instance-header')
|
|
22
|
+
.getByTestId('ACTIVE-icon');
|
|
23
|
+
this.incidentIcon = page
|
|
24
|
+
.getByTestId('instance-header')
|
|
25
|
+
.getByTestId('INCIDENT-icon');
|
|
26
|
+
}
|
|
27
|
+
async connectorResultVariableName(name) {
|
|
28
|
+
return await this.page.getByTestId(name);
|
|
29
|
+
}
|
|
30
|
+
async connectorResultVariableValue(variableName) {
|
|
31
|
+
return await this.page.getByTestId(variableName).locator('td').last();
|
|
32
|
+
}
|
|
33
|
+
async completedIconAssertion() {
|
|
34
|
+
let retryCount = 0;
|
|
35
|
+
const maxRetries = 3;
|
|
36
|
+
while (retryCount < maxRetries) {
|
|
37
|
+
try {
|
|
38
|
+
await (0, test_1.expect)(this.completedIcon).toBeVisible({
|
|
39
|
+
timeout: 90000,
|
|
40
|
+
});
|
|
41
|
+
return; // Exit the function if the expectation is met
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// If the active icon isn't found, reload the page and try again
|
|
45
|
+
retryCount++;
|
|
46
|
+
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
47
|
+
await this.page.reload();
|
|
48
|
+
await (0, sleep_1.sleep)(10000);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
|
|
52
|
+
}
|
|
53
|
+
async activeIconAssertion() {
|
|
54
|
+
let retryCount = 0;
|
|
55
|
+
const maxRetries = 3;
|
|
56
|
+
while (retryCount < maxRetries) {
|
|
57
|
+
try {
|
|
58
|
+
await (0, test_1.expect)(this.activeIcon).toBeVisible({
|
|
59
|
+
timeout: 90000,
|
|
60
|
+
});
|
|
61
|
+
return; // Exit the function if the expectation is met
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
// If the active icon isn't found, reload the page and try again
|
|
65
|
+
retryCount++;
|
|
66
|
+
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
67
|
+
await this.page.reload();
|
|
68
|
+
await (0, sleep_1.sleep)(10000);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
|
|
72
|
+
}
|
|
73
|
+
async activeUserTaskIconVisibleAssertion(taskName) {
|
|
74
|
+
let retryCount = 0;
|
|
75
|
+
const maxRetries = 3;
|
|
76
|
+
while (retryCount < maxRetries) {
|
|
77
|
+
try {
|
|
78
|
+
await (0, test_1.expect)(this.page.getByTestId(taskName)).toBeVisible({
|
|
79
|
+
timeout: 90000,
|
|
80
|
+
});
|
|
81
|
+
return; // Exit the function if the expectation is met
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// If the active icon isn't found, reload the page and try again
|
|
85
|
+
retryCount++;
|
|
86
|
+
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
87
|
+
await this.page.reload();
|
|
88
|
+
await (0, sleep_1.sleep)(10000);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
|
|
92
|
+
}
|
|
93
|
+
async activeUserTaskIconNotVisibleAssertion(taskName) {
|
|
94
|
+
let retryCount = 0;
|
|
95
|
+
const maxRetries = 3;
|
|
96
|
+
while (retryCount < maxRetries) {
|
|
97
|
+
try {
|
|
98
|
+
await (0, test_1.expect)(this.page.getByTestId(taskName)).not.toBeVisible({
|
|
99
|
+
timeout: 90000,
|
|
100
|
+
});
|
|
101
|
+
return; // Exit the function if the expectation is met
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
// If the active icon is found, reload the page and try again
|
|
105
|
+
retryCount++;
|
|
106
|
+
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
107
|
+
await this.page.reload();
|
|
108
|
+
await (0, sleep_1.sleep)(10000);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
throw new Error(`Active icon visible after ${maxRetries} attempts.`);
|
|
112
|
+
}
|
|
113
|
+
async tenantNameAssertion(name) {
|
|
114
|
+
await (0, test_1.expect)(this.page.getByRole('cell', { name: name, exact: true })).toBeVisible({ timeout: 60000 });
|
|
115
|
+
}
|
|
116
|
+
async incidentIconAssertion() {
|
|
117
|
+
await (0, test_1.expect)(this.incidentIcon).toBeVisible({ timeout: 90000 });
|
|
118
|
+
}
|
|
119
|
+
async assertEitherIncidentOrActiveIconVisible() {
|
|
120
|
+
return Promise.race([
|
|
121
|
+
this.incidentIcon.waitFor({ timeout: 90000 }).then(() => 'incident'),
|
|
122
|
+
this.activeIcon.waitFor({ timeout: 90000 }).then(() => 'active'),
|
|
123
|
+
]);
|
|
124
|
+
}
|
|
125
|
+
async assertEitherIncidentOrCompletedIconVisible() {
|
|
126
|
+
return Promise.race([
|
|
127
|
+
this.incidentIcon.waitFor({ timeout: 90000 }).then(() => 'incident'),
|
|
128
|
+
this.completedIcon.waitFor({ timeout: 90000 }).then(() => 'completed'),
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
async assertProcessCompleteStatusWithRetry(timeout = 60000, maxRetries = 10) {
|
|
132
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
133
|
+
try {
|
|
134
|
+
await (0, test_1.expect)(this.completedIcon).toBeVisible({
|
|
135
|
+
timeout: timeout,
|
|
136
|
+
});
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (attempt < maxRetries - 1) {
|
|
141
|
+
console.warn(`Process complete status attempt ${attempt + 1} failed. Retrying...`);
|
|
142
|
+
await this.page.reload();
|
|
143
|
+
await (0, sleep_1.sleep)(5000);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
throw new Error(`Assertion failed after ${maxRetries} attempts`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async assertProcessVariableContainsText(variableName, text) {
|
|
152
|
+
const maxRetries = 3;
|
|
153
|
+
for (let retries = 0; retries < maxRetries; retries++) {
|
|
154
|
+
try {
|
|
155
|
+
await (0, test_1.expect)(this.page.getByTestId(`variable-${variableName}`)).toContainText(text, { timeout: 30000 });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.log(`Failed to assert variable ${variableName}` + error);
|
|
160
|
+
await this.page.reload();
|
|
161
|
+
await (0, sleep_1.sleep)(10000);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
throw new Error(`Failed to assert variable ${variableName} after ${maxRetries} attempts.`);
|
|
165
|
+
}
|
|
166
|
+
async assertActiveTokenIsPresent() {
|
|
167
|
+
await (0, test_1.expect)(this.activeIcon).toBeVisible({ timeout: 60000 });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.OperateProcessInstancePage = OperateProcessInstancePage;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Page, Locator } from '@playwright/test';
|
|
2
|
+
declare class OperateProcessesPage {
|
|
3
|
+
private page;
|
|
4
|
+
readonly processResultCount: Locator;
|
|
5
|
+
readonly processActiveCheckbox: Locator;
|
|
6
|
+
readonly processCompletedCheckbox: Locator;
|
|
7
|
+
readonly processRunningInstancesCheckbox: Locator;
|
|
8
|
+
readonly processIncidentsCheckbox: Locator;
|
|
9
|
+
readonly processPageHeading: Locator;
|
|
10
|
+
readonly noMatchingInstancesMessage: Locator;
|
|
11
|
+
readonly processFinishedInstancesCheckbox: Locator;
|
|
12
|
+
readonly moreFiltersButton: Locator;
|
|
13
|
+
readonly processInstanceKeyTextBox: Locator;
|
|
14
|
+
constructor(page: Page);
|
|
15
|
+
private checkCheckbox;
|
|
16
|
+
private uncheckCheckbox;
|
|
17
|
+
private uncheckCompletedCheckbox;
|
|
18
|
+
private uncheckActiveCheckbox;
|
|
19
|
+
private toggleActiveCheckboxOn;
|
|
20
|
+
private toggleCompletedCheckbox;
|
|
21
|
+
private checkTableForProcess;
|
|
22
|
+
clickProcessActiveCheckbox(): Promise<void>;
|
|
23
|
+
clickProcessCompletedCheckbox(): Promise<void>;
|
|
24
|
+
clickProcessIncidentsCheckbox(): Promise<void>;
|
|
25
|
+
clickRunningProcessInstancesCheckbox(): Promise<void>;
|
|
26
|
+
clickFinishedProcessInstancesCheckbox(): Promise<void>;
|
|
27
|
+
clickProcessInstanceLink(processName: string, type?: 'active' | 'completed'): Promise<void>;
|
|
28
|
+
clickProcessInstanceLinkWithPartialNameMatch(processName: string): Promise<void>;
|
|
29
|
+
private getMoreFilterValueLocator;
|
|
30
|
+
applyMoreFilters(filter: string, value: string): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export { OperateProcessesPage };
|