@camunda/e2e-test-suite 0.0.714 → 0.0.715
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/.github/c8_versions.json +0 -3
- package/README.md +0 -6
- package/dist/utils/clusterVersions.d.ts +0 -1
- package/dist/utils/clusterVersions.js +0 -1
- package/package.json +1 -1
- package/dist/fixtures/8.6.d.ts +0 -63
- package/dist/fixtures/8.6.js +0 -162
- package/dist/fixtures/SM-8.6.d.ts +0 -63
- package/dist/fixtures/SM-8.6.js +0 -149
- package/dist/fixtures/c8Run-8.6.d.ts +0 -20
- package/dist/fixtures/c8Run-8.6.js +0 -56
- package/dist/pages/8.6/AppsPage.d.ts +0 -33
- package/dist/pages/8.6/AppsPage.js +0 -337
- package/dist/pages/8.6/ClientCredentialsDetailsPage.d.ts +0 -12
- package/dist/pages/8.6/ClientCredentialsDetailsPage.js +0 -36
- package/dist/pages/8.6/ClusterDetailsPage.d.ts +0 -75
- package/dist/pages/8.6/ClusterDetailsPage.js +0 -443
- package/dist/pages/8.6/ClusterPage.d.ts +0 -59
- package/dist/pages/8.6/ClusterPage.js +0 -320
- package/dist/pages/8.6/ClusterSecretsPage.d.ts +0 -28
- package/dist/pages/8.6/ClusterSecretsPage.js +0 -134
- package/dist/pages/8.6/ConnectorMarketplacePage.d.ts +0 -19
- package/dist/pages/8.6/ConnectorMarketplacePage.js +0 -60
- package/dist/pages/8.6/ConnectorSettingsPage.d.ts +0 -38
- package/dist/pages/8.6/ConnectorSettingsPage.js +0 -133
- package/dist/pages/8.6/ConnectorTemplatePage.d.ts +0 -11
- package/dist/pages/8.6/ConnectorTemplatePage.js +0 -34
- package/dist/pages/8.6/ConsoleOrganizationPage.d.ts +0 -87
- package/dist/pages/8.6/ConsoleOrganizationPage.js +0 -495
- package/dist/pages/8.6/FormJsPage.d.ts +0 -30
- package/dist/pages/8.6/FormJsPage.js +0 -112
- package/dist/pages/8.6/HomePage.d.ts +0 -27
- package/dist/pages/8.6/HomePage.js +0 -101
- package/dist/pages/8.6/LoginPage.d.ts +0 -30
- package/dist/pages/8.6/LoginPage.js +0 -85
- package/dist/pages/8.6/ModelerCreatePage.d.ts +0 -211
- package/dist/pages/8.6/ModelerCreatePage.js +0 -1125
- package/dist/pages/8.6/ModelerHomePage.d.ts +0 -48
- package/dist/pages/8.6/ModelerHomePage.js +0 -213
- package/dist/pages/8.6/ModelerUserInvitePage.d.ts +0 -28
- package/dist/pages/8.6/ModelerUserInvitePage.js +0 -106
- package/dist/pages/8.6/OperateHomePage.d.ts +0 -21
- package/dist/pages/8.6/OperateHomePage.js +0 -57
- package/dist/pages/8.6/OperateProcessInstancePage.d.ts +0 -17
- package/dist/pages/8.6/OperateProcessInstancePage.js +0 -58
- package/dist/pages/8.6/OperateProcessesPage.d.ts +0 -21
- package/dist/pages/8.6/OperateProcessesPage.js +0 -77
- package/dist/pages/8.6/OptimizeCollectionsPage.d.ts +0 -15
- package/dist/pages/8.6/OptimizeCollectionsPage.js +0 -44
- package/dist/pages/8.6/OptimizeDashboardPage.d.ts +0 -11
- package/dist/pages/8.6/OptimizeDashboardPage.js +0 -65
- package/dist/pages/8.6/OptimizeHomePage.d.ts +0 -12
- package/dist/pages/8.6/OptimizeHomePage.js +0 -32
- package/dist/pages/8.6/OptimizeReportPage.d.ts +0 -48
- package/dist/pages/8.6/OptimizeReportPage.js +0 -163
- package/dist/pages/8.6/PlayPage.d.ts +0 -14
- package/dist/pages/8.6/PlayPage.js +0 -66
- package/dist/pages/8.6/SettingsPage.d.ts +0 -10
- package/dist/pages/8.6/SettingsPage.js +0 -43
- package/dist/pages/8.6/SignUpPage.d.ts +0 -43
- package/dist/pages/8.6/SignUpPage.js +0 -136
- package/dist/pages/8.6/TaskDetailsPage.d.ts +0 -66
- package/dist/pages/8.6/TaskDetailsPage.js +0 -214
- package/dist/pages/8.6/TaskPanelPage.d.ts +0 -18
- package/dist/pages/8.6/TaskPanelPage.js +0 -54
- package/dist/pages/8.6/TaskProcessesPage.d.ts +0 -11
- package/dist/pages/8.6/TaskProcessesPage.js +0 -35
- package/dist/pages/8.6/UtilitiesPage.d.ts +0 -38
- package/dist/pages/8.6/UtilitiesPage.js +0 -328
- package/dist/pages/SM-8.6/ConnectorMarketplacePage.d.ts +0 -16
- package/dist/pages/SM-8.6/ConnectorMarketplacePage.js +0 -48
- package/dist/pages/SM-8.6/ConnectorSettingsPage.d.ts +0 -28
- package/dist/pages/SM-8.6/ConnectorSettingsPage.js +0 -82
- package/dist/pages/SM-8.6/ConnectorTemplatePage.d.ts +0 -11
- package/dist/pages/SM-8.6/ConnectorTemplatePage.js +0 -34
- package/dist/pages/SM-8.6/ConsoleHomePage.d.ts +0 -9
- package/dist/pages/SM-8.6/ConsoleHomePage.js +0 -22
- package/dist/pages/SM-8.6/ConsoleOrganizationPage.d.ts +0 -22
- package/dist/pages/SM-8.6/ConsoleOrganizationPage.js +0 -68
- package/dist/pages/SM-8.6/FormJsPage.d.ts +0 -13
- package/dist/pages/SM-8.6/FormJsPage.js +0 -30
- package/dist/pages/SM-8.6/HomePage.d.ts +0 -20
- package/dist/pages/SM-8.6/HomePage.js +0 -49
- package/dist/pages/SM-8.6/IdentityPage.d.ts +0 -67
- package/dist/pages/SM-8.6/IdentityPage.js +0 -266
- package/dist/pages/SM-8.6/IdentityTenantPage.d.ts +0 -50
- package/dist/pages/SM-8.6/IdentityTenantPage.js +0 -196
- package/dist/pages/SM-8.6/IdentityUsersPage.d.ts +0 -90
- package/dist/pages/SM-8.6/IdentityUsersPage.js +0 -505
- package/dist/pages/SM-8.6/KeycloakAdminPage.d.ts +0 -15
- package/dist/pages/SM-8.6/KeycloakAdminPage.js +0 -56
- package/dist/pages/SM-8.6/KeycloakLoginPage.d.ts +0 -11
- package/dist/pages/SM-8.6/KeycloakLoginPage.js +0 -25
- package/dist/pages/SM-8.6/KeycloakUtils.d.ts +0 -15
- package/dist/pages/SM-8.6/KeycloakUtils.js +0 -58
- package/dist/pages/SM-8.6/LoginPage.d.ts +0 -22
- package/dist/pages/SM-8.6/LoginPage.js +0 -123
- package/dist/pages/SM-8.6/ModelerCreatePage.d.ts +0 -167
- package/dist/pages/SM-8.6/ModelerCreatePage.js +0 -852
- package/dist/pages/SM-8.6/ModelerHomePage.d.ts +0 -41
- package/dist/pages/SM-8.6/ModelerHomePage.js +0 -150
- package/dist/pages/SM-8.6/NavigationPage.d.ts +0 -42
- package/dist/pages/SM-8.6/NavigationPage.js +0 -119
- package/dist/pages/SM-8.6/OperateHomePage.d.ts +0 -23
- package/dist/pages/SM-8.6/OperateHomePage.js +0 -65
- package/dist/pages/SM-8.6/OperateProcessInstancePage.d.ts +0 -22
- package/dist/pages/SM-8.6/OperateProcessInstancePage.js +0 -139
- package/dist/pages/SM-8.6/OperateProcessesPage.d.ts +0 -33
- package/dist/pages/SM-8.6/OperateProcessesPage.js +0 -166
- package/dist/pages/SM-8.6/OptimizeCollectionsPage.d.ts +0 -15
- package/dist/pages/SM-8.6/OptimizeCollectionsPage.js +0 -44
- package/dist/pages/SM-8.6/OptimizeDashboardPage.d.ts +0 -14
- package/dist/pages/SM-8.6/OptimizeDashboardPage.js +0 -56
- package/dist/pages/SM-8.6/OptimizeHomePage.d.ts +0 -19
- package/dist/pages/SM-8.6/OptimizeHomePage.js +0 -62
- package/dist/pages/SM-8.6/OptimizeReportPage.d.ts +0 -50
- package/dist/pages/SM-8.6/OptimizeReportPage.js +0 -162
- package/dist/pages/SM-8.6/PlayPage.d.ts +0 -19
- package/dist/pages/SM-8.6/PlayPage.js +0 -103
- package/dist/pages/SM-8.6/SettingsPage.d.ts +0 -10
- package/dist/pages/SM-8.6/SettingsPage.js +0 -20
- package/dist/pages/SM-8.6/TaskDetailsPage.d.ts +0 -64
- package/dist/pages/SM-8.6/TaskDetailsPage.js +0 -240
- package/dist/pages/SM-8.6/TaskPanelPage.d.ts +0 -22
- package/dist/pages/SM-8.6/TaskPanelPage.js +0 -68
- package/dist/pages/SM-8.6/TaskProcessesPage.d.ts +0 -11
- package/dist/pages/SM-8.6/TaskProcessesPage.js +0 -31
- package/dist/pages/SM-8.6/UtlitiesPage.d.ts +0 -21
- package/dist/pages/SM-8.6/UtlitiesPage.js +0 -207
- package/dist/pages/SM-8.6/optimizeReportUtils.d.ts +0 -6
- package/dist/pages/SM-8.6/optimizeReportUtils.js +0 -42
- package/dist/pages/c8Run-8.6/OperateHomePage.d.ts +0 -20
- package/dist/pages/c8Run-8.6/OperateHomePage.js +0 -52
- package/dist/pages/c8Run-8.6/OperateLoginPage.d.ts +0 -14
- package/dist/pages/c8Run-8.6/OperateLoginPage.js +0 -37
- package/dist/pages/c8Run-8.6/OperateProcessInstancePage.d.ts +0 -17
- package/dist/pages/c8Run-8.6/OperateProcessInstancePage.js +0 -76
- package/dist/pages/c8Run-8.6/OperateProcessesPage.d.ts +0 -20
- package/dist/pages/c8Run-8.6/OperateProcessesPage.js +0 -84
- package/dist/pages/c8Run-8.6/TaskDetailsPage.d.ts +0 -65
- package/dist/pages/c8Run-8.6/TaskDetailsPage.js +0 -219
- package/dist/pages/c8Run-8.6/TaskListLoginPage.d.ts +0 -14
- package/dist/pages/c8Run-8.6/TaskListLoginPage.js +0 -37
- package/dist/pages/c8Run-8.6/TaskPanelPage.d.ts +0 -23
- package/dist/pages/c8Run-8.6/TaskPanelPage.js +0 -76
- package/dist/pages/c8Run-8.6/UtilitiesPage.d.ts +0 -6
- package/dist/pages/c8Run-8.6/UtilitiesPage.js +0 -45
- package/dist/tests/8.6/connectors-user-flows.spec.d.ts +0 -1
- package/dist/tests/8.6/connectors-user-flows.spec.js +0 -435
- package/dist/tests/8.6/console-user-flows.spec.d.ts +0 -1
- package/dist/tests/8.6/console-user-flows.spec.js +0 -193
- package/dist/tests/8.6/hto-user-flows.spec.d.ts +0 -1
- package/dist/tests/8.6/hto-user-flows.spec.js +0 -365
- package/dist/tests/8.6/login.spec.d.ts +0 -1
- package/dist/tests/8.6/login.spec.js +0 -27
- package/dist/tests/8.6/navigation.spec.d.ts +0 -1
- package/dist/tests/8.6/navigation.spec.js +0 -57
- package/dist/tests/8.6/operate-access-flow.spec.d.ts +0 -1
- package/dist/tests/8.6/operate-access-flow.spec.js +0 -57
- package/dist/tests/8.6/optimize-user-flows.spec.d.ts +0 -1
- package/dist/tests/8.6/optimize-user-flows.spec.js +0 -231
- package/dist/tests/8.6/play.spec.d.ts +0 -1
- package/dist/tests/8.6/play.spec.js +0 -94
- package/dist/tests/8.6/rba-enabled-user-flows.spec.d.ts +0 -1
- package/dist/tests/8.6/rba-enabled-user-flows.spec.js +0 -288
- package/dist/tests/8.6/smoke-tests.spec.d.ts +0 -1
- package/dist/tests/8.6/smoke-tests.spec.js +0 -188
- package/dist/tests/8.6/test-setup.spec.d.ts +0 -1
- package/dist/tests/8.6/test-setup.spec.js +0 -68
- package/dist/tests/8.6/web-modeler-user-flows.spec.d.ts +0 -1
- package/dist/tests/8.6/web-modeler-user-flows.spec.js +0 -692
- package/dist/tests/SM-8.6/connectors-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/connectors-user-flows.spec.js +0 -247
- package/dist/tests/SM-8.6/console-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/console-user-flows.spec.js +0 -55
- package/dist/tests/SM-8.6/hto-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/hto-user-flows.spec.js +0 -393
- package/dist/tests/SM-8.6/license-key-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/license-key-user-flows.spec.js +0 -462
- package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.js +0 -500
- package/dist/tests/SM-8.6/optimize-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/optimize-user-flows.spec.js +0 -186
- package/dist/tests/SM-8.6/play.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/play.spec.js +0 -87
- package/dist/tests/SM-8.6/rba-enabled-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/rba-enabled-user-flows.spec.js +0 -242
- package/dist/tests/SM-8.6/smoke-tests.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/smoke-tests.spec.js +0 -158
- package/dist/tests/SM-8.6/test-setup.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/test-setup.spec.js +0 -134
- package/dist/tests/SM-8.6/web-modeler-user-flows.spec.d.ts +0 -1
- package/dist/tests/SM-8.6/web-modeler-user-flows.spec.js +0 -126
- package/dist/tests/c8Run-8.6/api-tests.spec.d.ts +0 -1
- package/dist/tests/c8Run-8.6/api-tests.spec.js +0 -67
- package/dist/tests/c8Run-8.6/connectors-user-flows.spec.d.ts +0 -1
- package/dist/tests/c8Run-8.6/connectors-user-flows.spec.js +0 -119
- package/dist/tests/c8Run-8.6/hto-user-flows.spec.d.ts +0 -1
- package/dist/tests/c8Run-8.6/hto-user-flows.spec.js +0 -199
- package/dist/tests/c8Run-8.6/login.spec.d.ts +0 -1
- package/dist/tests/c8Run-8.6/login.spec.js +0 -22
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Page, Locator } from '@playwright/test';
|
|
2
|
-
declare class ModelerHomePage {
|
|
3
|
-
private page;
|
|
4
|
-
private defaultFolderName;
|
|
5
|
-
readonly modelerPageBanner: Locator;
|
|
6
|
-
readonly createNewProjectButton: Locator;
|
|
7
|
-
readonly projectNameInput: Locator;
|
|
8
|
-
readonly chooseBpmnTemplateButton: Locator;
|
|
9
|
-
readonly diagramTypeDropdown: Locator;
|
|
10
|
-
readonly bpmnTemplateOption: Locator;
|
|
11
|
-
readonly formTemplateOption: Locator;
|
|
12
|
-
readonly projectBreadcrumb: Locator;
|
|
13
|
-
readonly openOrganizationsButton: Locator;
|
|
14
|
-
readonly manageButton: Locator;
|
|
15
|
-
readonly crossComponentProjectFolder: Locator;
|
|
16
|
-
readonly homeBreadcrumb: Locator;
|
|
17
|
-
readonly formNameInput: Locator;
|
|
18
|
-
readonly rows: Locator;
|
|
19
|
-
readonly licenseKeyTagNonProduction: Locator;
|
|
20
|
-
readonly licenseKeyTagNonCommercial: Locator;
|
|
21
|
-
readonly licenseKeyTagProduction: Locator;
|
|
22
|
-
readonly licenseKeyTagCommercial: Locator;
|
|
23
|
-
readonly uploadFilesButton: Locator;
|
|
24
|
-
constructor(page: Page);
|
|
25
|
-
clickCreateNewProjectButton(): Promise<void>;
|
|
26
|
-
enterNewProjectName(name: string): Promise<void>;
|
|
27
|
-
createCrossComponentProjectFolder(): Promise<void>;
|
|
28
|
-
clickCrossComponentProjectFolder(): Promise<void>;
|
|
29
|
-
clickProcessDiagram(name: string): Promise<void>;
|
|
30
|
-
clickHomeBreadcrumb(): Promise<void>;
|
|
31
|
-
clickChooseBpmnTemplateButton(): Promise<void>;
|
|
32
|
-
clickDiagramTypeDropdown(): Promise<void>;
|
|
33
|
-
clickBpmnTemplateOption(): Promise<void>;
|
|
34
|
-
clickFormOption(): Promise<void>;
|
|
35
|
-
enterFormName(name: string): Promise<void>;
|
|
36
|
-
clickProjectBreadcrumb(): Promise<void>;
|
|
37
|
-
clickOpenOrganizationsButton(): Promise<void>;
|
|
38
|
-
clickManageButton(): Promise<void>;
|
|
39
|
-
clickUploadFilesButton(): Promise<void>;
|
|
40
|
-
}
|
|
41
|
-
export { ModelerHomePage };
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModelerHomePage = void 0;
|
|
4
|
-
const test_1 = require("@playwright/test");
|
|
5
|
-
const sleep_1 = require("../../utils/sleep");
|
|
6
|
-
class ModelerHomePage {
|
|
7
|
-
page;
|
|
8
|
-
defaultFolderName = 'Cross Component Test Project';
|
|
9
|
-
modelerPageBanner;
|
|
10
|
-
createNewProjectButton;
|
|
11
|
-
projectNameInput;
|
|
12
|
-
chooseBpmnTemplateButton;
|
|
13
|
-
diagramTypeDropdown;
|
|
14
|
-
bpmnTemplateOption;
|
|
15
|
-
formTemplateOption;
|
|
16
|
-
projectBreadcrumb;
|
|
17
|
-
openOrganizationsButton;
|
|
18
|
-
manageButton;
|
|
19
|
-
crossComponentProjectFolder;
|
|
20
|
-
homeBreadcrumb;
|
|
21
|
-
formNameInput;
|
|
22
|
-
rows;
|
|
23
|
-
licenseKeyTagNonProduction;
|
|
24
|
-
licenseKeyTagNonCommercial;
|
|
25
|
-
licenseKeyTagProduction;
|
|
26
|
-
licenseKeyTagCommercial;
|
|
27
|
-
uploadFilesButton;
|
|
28
|
-
constructor(page) {
|
|
29
|
-
this.page = page;
|
|
30
|
-
this.modelerPageBanner = page
|
|
31
|
-
.locator('a')
|
|
32
|
-
.filter({ hasText: 'Camunda logoModeler' });
|
|
33
|
-
this.createNewProjectButton = page.getByRole('button', {
|
|
34
|
-
name: 'New project',
|
|
35
|
-
});
|
|
36
|
-
this.projectNameInput = page.locator('[data-test="editable-input"]');
|
|
37
|
-
this.chooseBpmnTemplateButton = page.getByRole('button', {
|
|
38
|
-
name: 'Choose BPMN template',
|
|
39
|
-
});
|
|
40
|
-
this.diagramTypeDropdown = page.locator('[data-test="diagram-dropdown"]');
|
|
41
|
-
this.bpmnTemplateOption = page
|
|
42
|
-
.locator('[data-test="create-bpmn-diagram"]')
|
|
43
|
-
.getByText('BPMN Diagram');
|
|
44
|
-
this.formTemplateOption = page
|
|
45
|
-
.locator('[data-test="create-form"]')
|
|
46
|
-
.getByText('Form');
|
|
47
|
-
this.projectBreadcrumb = page.locator('[data-test="breadcrumb-project"]');
|
|
48
|
-
this.openOrganizationsButton = page.getByLabel('Open Organizations');
|
|
49
|
-
this.manageButton = page.getByRole('button', { name: 'Manage' });
|
|
50
|
-
this.crossComponentProjectFolder = page.getByTitle(this.defaultFolderName);
|
|
51
|
-
this.homeBreadcrumb = page.locator('[data-test="breadcrumb-home"]');
|
|
52
|
-
this.formNameInput = page.locator('[data-test="editable-input"]');
|
|
53
|
-
this.rows = page.getByRole('row');
|
|
54
|
-
this.licenseKeyTagNonProduction = page
|
|
55
|
-
.getByText('Non-production license')
|
|
56
|
-
.first();
|
|
57
|
-
this.licenseKeyTagNonCommercial = page.getByText('Non-commercial license');
|
|
58
|
-
this.licenseKeyTagProduction = page.getByText('Production license').first();
|
|
59
|
-
this.licenseKeyTagCommercial = page.getByText('Commercial license');
|
|
60
|
-
this.uploadFilesButton = page.getByRole('menuitem', { name: 'Upload files' });
|
|
61
|
-
}
|
|
62
|
-
async clickCreateNewProjectButton() {
|
|
63
|
-
await this.createNewProjectButton.click({ timeout: 60000 });
|
|
64
|
-
}
|
|
65
|
-
async enterNewProjectName(name) {
|
|
66
|
-
await this.projectNameInput.click({ timeout: 60000 });
|
|
67
|
-
await this.projectNameInput.fill(name);
|
|
68
|
-
await this.projectNameInput.press('Enter');
|
|
69
|
-
}
|
|
70
|
-
async createCrossComponentProjectFolder() {
|
|
71
|
-
await (0, sleep_1.sleep)(10000);
|
|
72
|
-
if (await this.crossComponentProjectFolder.isVisible()) {
|
|
73
|
-
console.log('Cross Component Project folder already exists. Clicking into it');
|
|
74
|
-
await this.clickCrossComponentProjectFolder();
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
await this.clickCreateNewProjectButton();
|
|
78
|
-
await this.enterNewProjectName(this.defaultFolderName);
|
|
79
|
-
await (0, sleep_1.sleep)(5000);
|
|
80
|
-
}
|
|
81
|
-
async clickCrossComponentProjectFolder() {
|
|
82
|
-
let attempts = 0;
|
|
83
|
-
const maxAttempts = 3;
|
|
84
|
-
const timeout = 60000;
|
|
85
|
-
while (attempts < maxAttempts) {
|
|
86
|
-
try {
|
|
87
|
-
await (0, test_1.expect)(this.crossComponentProjectFolder).toBeVisible({ timeout });
|
|
88
|
-
await this.crossComponentProjectFolder.click();
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
attempts++;
|
|
93
|
-
if (attempts < maxAttempts) {
|
|
94
|
-
console.log(`Attempt ${attempts} failed. Reloading page and retrying...`);
|
|
95
|
-
await this.page.reload();
|
|
96
|
-
await (0, sleep_1.sleep)(10000);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
throw new Error('Failed to click crossComponentProjectFolder after 3 attempts.');
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async clickProcessDiagram(name) {
|
|
105
|
-
const process = this.rows.filter({ hasText: name }).getByTitle(name).first();
|
|
106
|
-
await (0, test_1.expect)(process).toBeVisible({ timeout: 90000 });
|
|
107
|
-
await process.click();
|
|
108
|
-
}
|
|
109
|
-
async clickHomeBreadcrumb() {
|
|
110
|
-
try {
|
|
111
|
-
await this.homeBreadcrumb.click();
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
await this.page.getByText('Home', { exact: true }).first().click();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
async clickChooseBpmnTemplateButton() {
|
|
118
|
-
await this.chooseBpmnTemplateButton.click();
|
|
119
|
-
}
|
|
120
|
-
async clickDiagramTypeDropdown() {
|
|
121
|
-
await (0, test_1.expect)(this.diagramTypeDropdown).toBeVisible({
|
|
122
|
-
timeout: 60000,
|
|
123
|
-
});
|
|
124
|
-
await this.diagramTypeDropdown.click();
|
|
125
|
-
}
|
|
126
|
-
async clickBpmnTemplateOption() {
|
|
127
|
-
await this.bpmnTemplateOption.click();
|
|
128
|
-
}
|
|
129
|
-
async clickFormOption() {
|
|
130
|
-
await this.formTemplateOption.click();
|
|
131
|
-
}
|
|
132
|
-
async enterFormName(name) {
|
|
133
|
-
await this.formNameInput.click({ timeout: 60000 });
|
|
134
|
-
await this.formNameInput.fill(name);
|
|
135
|
-
await this.formNameInput.press('Enter');
|
|
136
|
-
}
|
|
137
|
-
async clickProjectBreadcrumb() {
|
|
138
|
-
await this.projectBreadcrumb.click();
|
|
139
|
-
}
|
|
140
|
-
async clickOpenOrganizationsButton() {
|
|
141
|
-
await this.openOrganizationsButton.click({ timeout: 30000 });
|
|
142
|
-
}
|
|
143
|
-
async clickManageButton() {
|
|
144
|
-
await this.manageButton.click({ timeout: 30000 });
|
|
145
|
-
}
|
|
146
|
-
async clickUploadFilesButton() {
|
|
147
|
-
await this.uploadFilesButton.click({ timeout: 60000 });
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
exports.ModelerHomePage = ModelerHomePage;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Locator, Page } from '@playwright/test';
|
|
2
|
-
declare class NavigationPage {
|
|
3
|
-
private page;
|
|
4
|
-
readonly modelerPageBanner: Locator;
|
|
5
|
-
readonly operatePageBanner: Locator;
|
|
6
|
-
readonly tasklistPageBanner: Locator;
|
|
7
|
-
readonly optimizePageBanner: Locator;
|
|
8
|
-
readonly identityPageBanner: Locator;
|
|
9
|
-
readonly consolePageBanner: Locator;
|
|
10
|
-
readonly keyboardPageBanner: Locator;
|
|
11
|
-
constructor(page: Page);
|
|
12
|
-
goTo(url: string, banner: Locator, sleepTimeout?: number, { username, password, }?: {
|
|
13
|
-
username?: string;
|
|
14
|
-
password?: string;
|
|
15
|
-
}, maxRetries?: number): Promise<void>;
|
|
16
|
-
goToModeler(sleepTimeout?: number, credentials?: {
|
|
17
|
-
username: string;
|
|
18
|
-
password: string;
|
|
19
|
-
}): Promise<void>;
|
|
20
|
-
goToTasklist(sleepTimeout?: number, credentials?: {
|
|
21
|
-
username: string;
|
|
22
|
-
password: string;
|
|
23
|
-
}): Promise<void>;
|
|
24
|
-
goToOperate(sleepTimeout?: number, credentials?: {
|
|
25
|
-
username: string;
|
|
26
|
-
password: string;
|
|
27
|
-
}): Promise<void>;
|
|
28
|
-
goToOptimize(sleepTimeout?: number, credentials?: {
|
|
29
|
-
username: string;
|
|
30
|
-
password: string;
|
|
31
|
-
}): Promise<void>;
|
|
32
|
-
goToKeycloak(): Promise<void>;
|
|
33
|
-
goToIdentity(sleepTimeout?: number, credentials?: {
|
|
34
|
-
username: string;
|
|
35
|
-
password: string;
|
|
36
|
-
}): Promise<void>;
|
|
37
|
-
goToConsole(sleepTimeout?: number, credentials?: {
|
|
38
|
-
username: string;
|
|
39
|
-
password: string;
|
|
40
|
-
}): Promise<void>;
|
|
41
|
-
}
|
|
42
|
-
export { NavigationPage };
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NavigationPage = void 0;
|
|
4
|
-
const test_1 = require("@playwright/test");
|
|
5
|
-
const LoginPage_1 = require("./LoginPage");
|
|
6
|
-
const sleep_1 = require("../../utils/sleep");
|
|
7
|
-
const constants_1 = require("../../utils/constants");
|
|
8
|
-
class NavigationPage {
|
|
9
|
-
page;
|
|
10
|
-
modelerPageBanner;
|
|
11
|
-
operatePageBanner;
|
|
12
|
-
tasklistPageBanner;
|
|
13
|
-
optimizePageBanner;
|
|
14
|
-
identityPageBanner;
|
|
15
|
-
consolePageBanner;
|
|
16
|
-
keyboardPageBanner;
|
|
17
|
-
constructor(page) {
|
|
18
|
-
this.page = page;
|
|
19
|
-
this.operatePageBanner = page.getByRole('link', {
|
|
20
|
-
name: 'Camunda logo Operate',
|
|
21
|
-
});
|
|
22
|
-
this.modelerPageBanner = page
|
|
23
|
-
.locator('a')
|
|
24
|
-
.filter({ hasText: 'Camunda logoModeler' });
|
|
25
|
-
this.tasklistPageBanner = page.getByRole('link', {
|
|
26
|
-
name: 'Camunda logo Tasklist',
|
|
27
|
-
});
|
|
28
|
-
this.optimizePageBanner = page.getByRole('link', {
|
|
29
|
-
name: 'Camunda logo Optimize',
|
|
30
|
-
});
|
|
31
|
-
this.identityPageBanner = page.getByRole('link', {
|
|
32
|
-
name: 'Camunda logo Identity',
|
|
33
|
-
});
|
|
34
|
-
this.consolePageBanner = page.getByRole('link', {
|
|
35
|
-
name: 'Camunda logo Console',
|
|
36
|
-
});
|
|
37
|
-
this.keyboardPageBanner = page.locator('#keycloak-bg');
|
|
38
|
-
}
|
|
39
|
-
async goTo(url, banner, sleepTimeout, { username = 'demo', password = process.env.DISTRO_QA_E2E_TESTS_IDENTITY_FIRSTUSER_PASSWORD ??
|
|
40
|
-
'demo', } = {}, maxRetries = 3) {
|
|
41
|
-
const startTime = Date.now();
|
|
42
|
-
let timeout = constants_1._1_SECOND_IN_MS * 1;
|
|
43
|
-
if (url === '/modeler') {
|
|
44
|
-
timeout = constants_1._1_SECOND_IN_MS * 10;
|
|
45
|
-
}
|
|
46
|
-
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
47
|
-
try {
|
|
48
|
-
if (sleepTimeout) {
|
|
49
|
-
await (0, sleep_1.sleep)(sleepTimeout);
|
|
50
|
-
}
|
|
51
|
-
await this.page.goto(url, {
|
|
52
|
-
timeout: 60000,
|
|
53
|
-
waitUntil: 'domcontentloaded',
|
|
54
|
-
});
|
|
55
|
-
const loginPage = new LoginPage_1.LoginPage(this.page);
|
|
56
|
-
const loginSelector = loginPage.usernameInput;
|
|
57
|
-
await (0, test_1.expect)(banner.or(loginSelector)).toBeVisible({ timeout: 60000 });
|
|
58
|
-
const isBannerVisible = await banner.isVisible();
|
|
59
|
-
if (isBannerVisible) {
|
|
60
|
-
try {
|
|
61
|
-
await (0, test_1.expect)(loginSelector).toBeVisible({ timeout: 5000 });
|
|
62
|
-
await loginPage.login(username, password);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// The login selector did NOT appear. The banner is real. We are on the correct page.
|
|
66
|
-
// The navigation was successful, so we can just return.
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
await loginPage.login(username, password);
|
|
71
|
-
}
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
const now = new Date();
|
|
76
|
-
const elapsed = Date.now() - startTime;
|
|
77
|
-
if (attempt < maxRetries - 1) {
|
|
78
|
-
await (0, sleep_1.sleep)(5000);
|
|
79
|
-
if (!this.page.isClosed()) {
|
|
80
|
-
try {
|
|
81
|
-
await this.page.waitForLoadState('load', { timeout: timeout });
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
const now2 = new Date();
|
|
85
|
-
const elapsed2 = Date.now() - startTime;
|
|
86
|
-
console.warn(`[${now2.toISOString()}] (+${elapsed2}ms) [NavigationPage] Load state timeout or error: ${error}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
console.error(`[${now.toISOString()}] (+${elapsed}ms) [NavigationPage] Login (${url}) failed after ${maxRetries} attempts`);
|
|
92
|
-
throw new Error(`Login (${url}) failed after ${maxRetries} attempts`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async goToModeler(sleepTimeout, credentials) {
|
|
98
|
-
await this.goTo('/modeler', this.modelerPageBanner, sleepTimeout, credentials);
|
|
99
|
-
}
|
|
100
|
-
async goToTasklist(sleepTimeout, credentials) {
|
|
101
|
-
await this.goTo('/tasklist', this.tasklistPageBanner, sleepTimeout, credentials);
|
|
102
|
-
}
|
|
103
|
-
async goToOperate(sleepTimeout, credentials) {
|
|
104
|
-
await this.goTo('/operate', this.operatePageBanner, sleepTimeout, credentials);
|
|
105
|
-
}
|
|
106
|
-
async goToOptimize(sleepTimeout, credentials) {
|
|
107
|
-
await this.goTo('/optimize', this.optimizePageBanner, sleepTimeout, credentials);
|
|
108
|
-
}
|
|
109
|
-
async goToKeycloak() {
|
|
110
|
-
await this.page.goto('/auth');
|
|
111
|
-
}
|
|
112
|
-
async goToIdentity(sleepTimeout, credentials) {
|
|
113
|
-
await this.goTo('/identity', this.identityPageBanner, sleepTimeout, credentials);
|
|
114
|
-
}
|
|
115
|
-
async goToConsole(sleepTimeout, credentials) {
|
|
116
|
-
await this.goTo('/console', this.consolePageBanner, sleepTimeout, credentials);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
exports.NavigationPage = NavigationPage;
|
|
@@ -1,23 +0,0 @@
|
|
|
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
|
-
constructor(page: Page);
|
|
14
|
-
clickProcessesTab(): Promise<void>;
|
|
15
|
-
closeInformationDialog(): Promise<void>;
|
|
16
|
-
clickEditVariableButton(variableName: string): Promise<void>;
|
|
17
|
-
clickVariableValueInput(): Promise<void>;
|
|
18
|
-
clearVariableValueInput(): Promise<void>;
|
|
19
|
-
fillVariableValueInput(value: string): Promise<void>;
|
|
20
|
-
clickSaveVariableButton(): Promise<void>;
|
|
21
|
-
openProcess(processName: string): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
export { OperateHomePage };
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OperateHomePage = void 0;
|
|
4
|
-
const test_1 = require("@playwright/test");
|
|
5
|
-
class OperateHomePage {
|
|
6
|
-
page;
|
|
7
|
-
operateBanner;
|
|
8
|
-
processesTab;
|
|
9
|
-
informationDialog;
|
|
10
|
-
editVariableButton;
|
|
11
|
-
variableValueInput;
|
|
12
|
-
saveVariableButton;
|
|
13
|
-
editVariableSpinner;
|
|
14
|
-
licenseKeyTagNonProduction;
|
|
15
|
-
licenseKeyTagProduction;
|
|
16
|
-
constructor(page) {
|
|
17
|
-
this.page = page;
|
|
18
|
-
this.operateBanner = page.getByRole('link', { name: 'Camunda logo Operate' });
|
|
19
|
-
this.processesTab = page.getByRole('link', {
|
|
20
|
-
name: 'Processes',
|
|
21
|
-
exact: true,
|
|
22
|
-
});
|
|
23
|
-
this.informationDialog = page.getByRole('button', {
|
|
24
|
-
name: 'Close this dialog',
|
|
25
|
-
});
|
|
26
|
-
this.editVariableButton = page.getByTestId('edit-variable-button');
|
|
27
|
-
this.variableValueInput = page.getByTestId('edit-variable-value');
|
|
28
|
-
this.saveVariableButton = page.getByLabel('Save variable');
|
|
29
|
-
this.editVariableSpinner = page
|
|
30
|
-
.getByTestId('variable-operation-spinner')
|
|
31
|
-
.locator('circle')
|
|
32
|
-
.nth(1);
|
|
33
|
-
this.licenseKeyTagNonProduction = page
|
|
34
|
-
.getByText('Non-production license')
|
|
35
|
-
.first();
|
|
36
|
-
this.licenseKeyTagProduction = page.getByText('Production license').first();
|
|
37
|
-
}
|
|
38
|
-
async clickProcessesTab() {
|
|
39
|
-
await (0, test_1.expect)(this.processesTab).toBeVisible({ timeout: 120000 });
|
|
40
|
-
await this.processesTab.click();
|
|
41
|
-
}
|
|
42
|
-
async closeInformationDialog() {
|
|
43
|
-
await this.informationDialog.click();
|
|
44
|
-
}
|
|
45
|
-
async clickEditVariableButton(variableName) {
|
|
46
|
-
const editVariableButton = 'Edit variable ' + variableName;
|
|
47
|
-
await this.page.getByLabel(editVariableButton).click();
|
|
48
|
-
}
|
|
49
|
-
async clickVariableValueInput() {
|
|
50
|
-
await this.variableValueInput.click();
|
|
51
|
-
}
|
|
52
|
-
async clearVariableValueInput() {
|
|
53
|
-
await this.variableValueInput.clear();
|
|
54
|
-
}
|
|
55
|
-
async fillVariableValueInput(value) {
|
|
56
|
-
await this.variableValueInput.fill(value);
|
|
57
|
-
}
|
|
58
|
-
async clickSaveVariableButton() {
|
|
59
|
-
await this.saveVariableButton.click();
|
|
60
|
-
}
|
|
61
|
-
async openProcess(processName) {
|
|
62
|
-
await this.page.getByText(processName).click();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.OperateHomePage = OperateHomePage;
|
|
@@ -1,22 +0,0 @@
|
|
|
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
|
-
incidentIconAssertion(): Promise<void>;
|
|
13
|
-
assertEitherIncidentOrActiveIconVisible(): Promise<string>;
|
|
14
|
-
assertEitherIncidentOrCompletedIconVisible(): Promise<string>;
|
|
15
|
-
completedIconAssertion(): Promise<void>;
|
|
16
|
-
activeIconAssertion(): Promise<void>;
|
|
17
|
-
activeUserTaskIconVisibleAssertion(taskName: string): Promise<void>;
|
|
18
|
-
activeUserTaskIconNotVisibleAssertion(taskName: string): Promise<void>;
|
|
19
|
-
tenantNameAssertion(name: string): Promise<void>;
|
|
20
|
-
assertTextVisible(text: string): Promise<void>;
|
|
21
|
-
}
|
|
22
|
-
export { OperateProcessInstancePage };
|
|
@@ -1,139 +0,0 @@
|
|
|
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 incidentIconAssertion() {
|
|
34
|
-
await (0, test_1.expect)(this.incidentIcon).toBeVisible({ timeout: 90000 });
|
|
35
|
-
}
|
|
36
|
-
async assertEitherIncidentOrActiveIconVisible() {
|
|
37
|
-
return Promise.race([
|
|
38
|
-
this.incidentIcon.waitFor({ timeout: 90000 }).then(() => 'incident'),
|
|
39
|
-
this.activeIcon.waitFor({ timeout: 90000 }).then(() => 'active'),
|
|
40
|
-
]);
|
|
41
|
-
}
|
|
42
|
-
async assertEitherIncidentOrCompletedIconVisible() {
|
|
43
|
-
return Promise.race([
|
|
44
|
-
this.incidentIcon.waitFor({ timeout: 90000 }).then(() => 'incident'),
|
|
45
|
-
this.completedIcon.waitFor({ timeout: 90000 }).then(() => 'completed'),
|
|
46
|
-
]);
|
|
47
|
-
}
|
|
48
|
-
async completedIconAssertion() {
|
|
49
|
-
let retryCount = 0;
|
|
50
|
-
const maxRetries = 3;
|
|
51
|
-
while (retryCount < maxRetries) {
|
|
52
|
-
try {
|
|
53
|
-
await (0, test_1.expect)(this.completedIcon).toBeVisible({
|
|
54
|
-
timeout: 90000,
|
|
55
|
-
});
|
|
56
|
-
return; // Exit the function if the expectation is met
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
// If the active icon isn't found, reload the page and try again
|
|
60
|
-
retryCount++;
|
|
61
|
-
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
62
|
-
await this.page.reload();
|
|
63
|
-
await (0, sleep_1.sleep)(10000);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
|
|
67
|
-
}
|
|
68
|
-
async activeIconAssertion() {
|
|
69
|
-
let retryCount = 0;
|
|
70
|
-
const maxRetries = 3;
|
|
71
|
-
while (retryCount < maxRetries) {
|
|
72
|
-
try {
|
|
73
|
-
await (0, test_1.expect)(this.activeIcon).toBeVisible({
|
|
74
|
-
timeout: 90000,
|
|
75
|
-
});
|
|
76
|
-
return; // Exit the function if the expectation is met
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
// If the active icon isn't found, reload the page and try again
|
|
80
|
-
retryCount++;
|
|
81
|
-
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
82
|
-
await this.page.reload();
|
|
83
|
-
await (0, sleep_1.sleep)(10000);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
|
|
87
|
-
}
|
|
88
|
-
async activeUserTaskIconVisibleAssertion(taskName) {
|
|
89
|
-
let retryCount = 0;
|
|
90
|
-
const maxRetries = 30;
|
|
91
|
-
while (retryCount < maxRetries) {
|
|
92
|
-
try {
|
|
93
|
-
await (0, test_1.expect)(this.page.getByTestId(taskName)).toBeVisible({
|
|
94
|
-
timeout: 5000,
|
|
95
|
-
});
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
retryCount++;
|
|
100
|
-
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
101
|
-
await this.page.reload();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
throw new Error(`Active icon not visible after ${maxRetries} attempts.`);
|
|
105
|
-
}
|
|
106
|
-
async activeUserTaskIconNotVisibleAssertion(taskName) {
|
|
107
|
-
let retryCount = 0;
|
|
108
|
-
const maxRetries = 30;
|
|
109
|
-
while (retryCount < maxRetries) {
|
|
110
|
-
try {
|
|
111
|
-
await (0, test_1.expect)(this.page.getByTestId(taskName)).not.toBeVisible({
|
|
112
|
-
timeout: 1000,
|
|
113
|
-
});
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
retryCount++;
|
|
118
|
-
console.log(`Attempt ${retryCount} failed. Retrying...`);
|
|
119
|
-
await this.page.reload();
|
|
120
|
-
await this.page.waitForLoadState('domcontentloaded');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
throw new Error(`Active icon visible after ${maxRetries} attempts.`);
|
|
124
|
-
}
|
|
125
|
-
async tenantNameAssertion(name) {
|
|
126
|
-
await (0, test_1.expect)(this.page.getByRole('cell', { name: name, exact: true })).toBeVisible({ timeout: 60000 });
|
|
127
|
-
}
|
|
128
|
-
async assertTextVisible(text) {
|
|
129
|
-
await (0, sleep_1.sleep)(2000); // moving too fast here means the text is not displayed.. clicking the row would fix this but there is no testId on the row so that would be flaky
|
|
130
|
-
await this.page.reload();
|
|
131
|
-
await (0, test_1.expect)(this.page.getByTestId('variables-list')).toBeVisible({
|
|
132
|
-
timeout: 30000,
|
|
133
|
-
});
|
|
134
|
-
await (0, test_1.expect)(this.page.getByText(text)).toBeVisible({
|
|
135
|
-
timeout: 60000,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
exports.OperateProcessInstancePage = OperateProcessInstancePage;
|
|
@@ -1,33 +0,0 @@
|
|
|
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 tenantDropdown: Locator;
|
|
13
|
-
readonly tenantDropdownOption: (name: string) => Locator;
|
|
14
|
-
readonly tenantComboBox: Locator;
|
|
15
|
-
constructor(page: Page);
|
|
16
|
-
private checkCheckbox;
|
|
17
|
-
private uncheckCheckbox;
|
|
18
|
-
clickProcessActiveCheckbox(): Promise<void>;
|
|
19
|
-
private uncheckActiveCheckbox;
|
|
20
|
-
clickProcessCompletedCheckbox(): Promise<void>;
|
|
21
|
-
private uncheckCompletedCheckbox;
|
|
22
|
-
clickProcessIncidentsCheckbox(): Promise<void>;
|
|
23
|
-
clickRunningProcessInstancesCheckbox(): Promise<void>;
|
|
24
|
-
clickFinishedProcessInstancesCheckbox(): Promise<void>;
|
|
25
|
-
private toggleActiveCheckboxOn;
|
|
26
|
-
private toggleCompletedCheckbox;
|
|
27
|
-
selectTenant(tenant: string): Promise<void>;
|
|
28
|
-
clickTenantDropdown(): Promise<void>;
|
|
29
|
-
clickTenantDropdownOption(tenant?: string): Promise<void>;
|
|
30
|
-
private checkTableForProcess;
|
|
31
|
-
clickProcessInstanceLink(processName: string, type?: 'active' | 'completed'): Promise<void>;
|
|
32
|
-
}
|
|
33
|
-
export { OperateProcessesPage };
|