@camunda/e2e-test-suite 0.0.1442 → 0.0.1444
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 +1 -0
- package/README.md +2 -0
- package/dist/fixtures/SM-8.11.d.ts +77 -0
- package/dist/fixtures/SM-8.11.js +176 -0
- package/dist/pages/8.7/ModelerCreatePage.js +21 -0
- package/dist/pages/SM-8.11/Authorization.d.ts +39 -0
- package/dist/pages/SM-8.11/Authorization.js +349 -0
- package/dist/pages/SM-8.11/ClusterDetailsPage.d.ts +8 -0
- package/dist/pages/SM-8.11/ClusterDetailsPage.js +65 -0
- package/dist/pages/SM-8.11/ClusterPage.d.ts +11 -0
- package/dist/pages/SM-8.11/ClusterPage.js +37 -0
- package/dist/pages/SM-8.11/ConnectorMarketplacePage.d.ts +27 -0
- package/dist/pages/SM-8.11/ConnectorMarketplacePage.js +187 -0
- package/dist/pages/SM-8.11/ConnectorSettingsPage.d.ts +41 -0
- package/dist/pages/SM-8.11/ConnectorSettingsPage.js +153 -0
- package/dist/pages/SM-8.11/ConnectorTemplatePage.d.ts +11 -0
- package/dist/pages/SM-8.11/ConnectorTemplatePage.js +34 -0
- package/dist/pages/SM-8.11/FormJsPage.d.ts +33 -0
- package/dist/pages/SM-8.11/FormJsPage.js +109 -0
- package/dist/pages/SM-8.11/HomePage.d.ts +20 -0
- package/dist/pages/SM-8.11/HomePage.js +49 -0
- package/dist/pages/SM-8.11/IdentityTenantPage.d.ts +53 -0
- package/dist/pages/SM-8.11/IdentityTenantPage.js +264 -0
- package/dist/pages/SM-8.11/IdentityUsersPage.d.ts +92 -0
- package/dist/pages/SM-8.11/IdentityUsersPage.js +485 -0
- package/dist/pages/SM-8.11/KeycloakAdminPage.d.ts +17 -0
- package/dist/pages/SM-8.11/KeycloakAdminPage.js +78 -0
- package/dist/pages/SM-8.11/KeycloakLoginPage.d.ts +12 -0
- package/dist/pages/SM-8.11/KeycloakLoginPage.js +32 -0
- package/dist/pages/SM-8.11/KeycloakUtils.d.ts +17 -0
- package/dist/pages/SM-8.11/KeycloakUtils.js +94 -0
- package/dist/pages/SM-8.11/LoginPage.d.ts +21 -0
- package/dist/pages/SM-8.11/LoginPage.js +112 -0
- package/dist/pages/SM-8.11/ManagementIdentityPage.d.ts +44 -0
- package/dist/pages/SM-8.11/ManagementIdentityPage.js +176 -0
- package/dist/pages/SM-8.11/ModelerCreatePage.d.ts +238 -0
- package/dist/pages/SM-8.11/ModelerCreatePage.js +1950 -0
- package/dist/pages/SM-8.11/ModelerHomePage.d.ts +97 -0
- package/dist/pages/SM-8.11/ModelerHomePage.js +956 -0
- package/dist/pages/SM-8.11/NavigationPage.d.ts +58 -0
- package/dist/pages/SM-8.11/NavigationPage.js +389 -0
- package/dist/pages/SM-8.11/OCIdentityAuthorizationsPage.d.ts +10 -0
- package/dist/pages/SM-8.11/OCIdentityAuthorizationsPage.js +22 -0
- package/dist/pages/SM-8.11/OCIdentityClusterVariablesPage.d.ts +22 -0
- package/dist/pages/SM-8.11/OCIdentityClusterVariablesPage.js +120 -0
- package/dist/pages/SM-8.11/OCIdentityGroupsPage.d.ts +39 -0
- package/dist/pages/SM-8.11/OCIdentityGroupsPage.js +154 -0
- package/dist/pages/SM-8.11/OCIdentityHomePage.d.ts +23 -0
- package/dist/pages/SM-8.11/OCIdentityHomePage.js +115 -0
- package/dist/pages/SM-8.11/OCIdentityMappingRulesPage.d.ts +23 -0
- package/dist/pages/SM-8.11/OCIdentityMappingRulesPage.js +116 -0
- package/dist/pages/SM-8.11/OCIdentityRolesPage.d.ts +61 -0
- package/dist/pages/SM-8.11/OCIdentityRolesPage.js +433 -0
- package/dist/pages/SM-8.11/OCTenantPage.d.ts +73 -0
- package/dist/pages/SM-8.11/OCTenantPage.js +399 -0
- package/dist/pages/SM-8.11/OperateHomePage.d.ts +26 -0
- package/dist/pages/SM-8.11/OperateHomePage.js +139 -0
- package/dist/pages/SM-8.11/OperateProcessInstancePage.d.ts +30 -0
- package/dist/pages/SM-8.11/OperateProcessInstancePage.js +276 -0
- package/dist/pages/SM-8.11/OperateProcessesPage.d.ts +38 -0
- package/dist/pages/SM-8.11/OperateProcessesPage.js +383 -0
- package/dist/pages/SM-8.11/OptimizeCollectionsPage.d.ts +17 -0
- package/dist/pages/SM-8.11/OptimizeCollectionsPage.js +62 -0
- package/dist/pages/SM-8.11/OptimizeDashboardPage.d.ts +14 -0
- package/dist/pages/SM-8.11/OptimizeDashboardPage.js +63 -0
- package/dist/pages/SM-8.11/OptimizeHomePage.d.ts +19 -0
- package/dist/pages/SM-8.11/OptimizeHomePage.js +76 -0
- package/dist/pages/SM-8.11/OptimizeReportPage.d.ts +50 -0
- package/dist/pages/SM-8.11/OptimizeReportPage.js +209 -0
- package/dist/pages/SM-8.11/PlayPage.d.ts +47 -0
- package/dist/pages/SM-8.11/PlayPage.js +389 -0
- package/dist/pages/SM-8.11/ProcessApplicationPage.d.ts +35 -0
- package/dist/pages/SM-8.11/ProcessApplicationPage.js +340 -0
- package/dist/pages/SM-8.11/SettingsPage.d.ts +12 -0
- package/dist/pages/SM-8.11/SettingsPage.js +34 -0
- package/dist/pages/SM-8.11/TaskDetailsPage.d.ts +70 -0
- package/dist/pages/SM-8.11/TaskDetailsPage.js +273 -0
- package/dist/pages/SM-8.11/TaskPanelPage.d.ts +29 -0
- package/dist/pages/SM-8.11/TaskPanelPage.js +320 -0
- package/dist/pages/SM-8.11/TaskProcessesPage.d.ts +15 -0
- package/dist/pages/SM-8.11/TaskProcessesPage.js +77 -0
- package/dist/pages/SM-8.11/UtilitiesPage.d.ts +38 -0
- package/dist/pages/SM-8.11/UtilitiesPage.js +573 -0
- package/dist/pages/SM-8.11/optimizeReportUtils.d.ts +6 -0
- package/dist/pages/SM-8.11/optimizeReportUtils.js +77 -0
- package/dist/tests/SM-8.11/cluster-management-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/cluster-management-user-flows.spec.js +48 -0
- package/dist/tests/SM-8.11/cluster-variables.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/cluster-variables.spec.js +226 -0
- package/dist/tests/SM-8.11/connectors-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/connectors-user-flows.spec.js +307 -0
- package/dist/tests/SM-8.11/document-handling-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/document-handling-user-flows.spec.js +174 -0
- package/dist/tests/SM-8.11/hto-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/hto-user-flows.spec.js +410 -0
- package/dist/tests/SM-8.11/hub-web-modeler-smoke.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/hub-web-modeler-smoke.spec.js +24 -0
- package/dist/tests/SM-8.11/identity-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/identity-user-flows.spec.js +220 -0
- package/dist/tests/SM-8.11/license-key-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/license-key-user-flows.spec.js +461 -0
- package/dist/tests/SM-8.11/login.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/login.spec.js +24 -0
- package/dist/tests/SM-8.11/migration-path-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/migration-path-user-flows.spec.js +263 -0
- package/dist/tests/SM-8.11/mt-enabled-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/mt-enabled-user-flows.spec.js +607 -0
- package/dist/tests/SM-8.11/optimize-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/optimize-user-flows.spec.js +505 -0
- package/dist/tests/SM-8.11/play.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/play.spec.js +144 -0
- package/dist/tests/SM-8.11/rba-enabled-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/rba-enabled-user-flows.spec.js +712 -0
- package/dist/tests/SM-8.11/smoke-tests.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/smoke-tests.spec.js +167 -0
- package/dist/tests/SM-8.11/test-setup.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/test-setup.spec.js +24 -0
- package/dist/tests/SM-8.11/topology-orchestration-smoke.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/topology-orchestration-smoke.spec.js +58 -0
- package/dist/tests/SM-8.11/web-modeler-user-flows.spec.d.ts +1 -0
- package/dist/tests/SM-8.11/web-modeler-user-flows.spec.js +223 -0
- package/package.json +1 -1
- package/playwright.config.ts +21 -0
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_1 = require("@playwright/test");
|
|
4
|
+
const SM_8_11_1 = require("../../fixtures/SM-8.11");
|
|
5
|
+
const _setup_1 = require("../../test-setup.js");
|
|
6
|
+
const UtilitiesPage_1 = require("../../pages/SM-8.11/UtilitiesPage");
|
|
7
|
+
const resetSession_1 = require("../../utils/resetSession");
|
|
8
|
+
const expectTextWithRetry_1 = require("../../utils/assertionHelpers/expectTextWithRetry");
|
|
9
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
10
|
+
const constants_1 = require("../../utils/constants");
|
|
11
|
+
const demoUserEmail = process.env.DEMO_USER_EMAIL || 'demo@example.org';
|
|
12
|
+
const demoUserDisplayText = `Demo User${demoUserEmail}`;
|
|
13
|
+
if (process.env.IS_MT === 'true') {
|
|
14
|
+
SM_8_11_1.test.describe.configure({ mode: 'parallel' });
|
|
15
|
+
SM_8_11_1.test.describe('MT Enabled User Flows Test', () => {
|
|
16
|
+
SM_8_11_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
17
|
+
await navigationPage.goToOCAdmin((testInfo.workerIndex + 1) * 1000);
|
|
18
|
+
});
|
|
19
|
+
SM_8_11_1.test.afterEach(async ({ page }, testInfo) => {
|
|
20
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
21
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
22
|
+
});
|
|
23
|
+
// Skipped due to bug #60836: https://github.com/camunda/camunda/issues/60836
|
|
24
|
+
SM_8_11_1.test.skip('Main User Can Create & Access Tenant & User Without Access Cannot - User Task Flow', async ({ page, modelerHomePage, modelerCreatePage, taskPanelPage, operateProcessInstancePage, operateProcessesPage, taskDetailsPage, operateHomePage, navigationPage, ocTenantPage, optimizeHomePage, optimizeDashboardPage, browser, ocIdentityHomePage, managementIdentityTenantPage, managementIdentityPage, keycloakAdminPage, keycloakLoginPage, ocIdentityMappingRulesPage, ocIdentityRolesPage, }) => {
|
|
25
|
+
SM_8_11_1.test.slow();
|
|
26
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
27
|
+
const processName = 'Main_User_Task_Flow_' + randomString;
|
|
28
|
+
const tenantName = 'Tenant_Main_' + randomString;
|
|
29
|
+
const testUser = (await (0, _setup_1.generateRandomStringAsync)(6)).toLowerCase();
|
|
30
|
+
const password = process.env.DISTRO_QA_E2E_TESTS_IDENTITY_FIRSTUSER_PASSWORD;
|
|
31
|
+
const credentials = {
|
|
32
|
+
username: testUser,
|
|
33
|
+
password: password,
|
|
34
|
+
};
|
|
35
|
+
await SM_8_11_1.test.step('Create new Test User And Assign to Role', async () => {
|
|
36
|
+
await (0, UtilitiesPage_1.createUserAndAssignToRole)(page, navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, ocIdentityHomePage, ocIdentityMappingRulesPage, ocIdentityRolesPage, testUser, password);
|
|
37
|
+
});
|
|
38
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in OC Identity', async () => {
|
|
39
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
40
|
+
await ocTenantPage.createTenant(tenantName);
|
|
41
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
42
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
43
|
+
await ocTenantPage.assignUserToTenant('demo');
|
|
44
|
+
});
|
|
45
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
46
|
+
await navigationPage.goToManagementIdentity();
|
|
47
|
+
await managementIdentityTenantPage.createTenant(tenantName);
|
|
48
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
49
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
50
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
54
|
+
await navigationPage.goToModeler();
|
|
55
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
56
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
57
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
58
|
+
});
|
|
59
|
+
await SM_8_11_1.test.step('Create A Diagram with a User Task and Start Process Instance', async () => {
|
|
60
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName);
|
|
61
|
+
await modelerCreatePage.runProcessInstance('', tenantName); //Identity bug https://github.com/camunda/camunda/issues/35834
|
|
62
|
+
});
|
|
63
|
+
await SM_8_11_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate', async () => {
|
|
64
|
+
await navigationPage.goToOperate();
|
|
65
|
+
await operateHomePage.clickProcessesTab();
|
|
66
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
67
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
68
|
+
await navigationPage.goToTasklist();
|
|
69
|
+
await taskPanelPage.openTask(processName);
|
|
70
|
+
await taskDetailsPage.clickAssignToMeButton();
|
|
71
|
+
await taskDetailsPage.clickCompleteTaskButton();
|
|
72
|
+
await (0, test_1.expect)(page.getByText('Task completed')).toBeVisible({
|
|
73
|
+
timeout: 200000,
|
|
74
|
+
});
|
|
75
|
+
await navigationPage.goToOperate();
|
|
76
|
+
await operateHomePage.clickProcessesTab();
|
|
77
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
78
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
79
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName);
|
|
80
|
+
});
|
|
81
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
82
|
+
await SM_8_11_1.test.step('Assert Process has been successfully imported in Optimize', async () => {
|
|
83
|
+
await navigationPage.goToOptimize();
|
|
84
|
+
await optimizeHomePage.clickDashboardLink();
|
|
85
|
+
await (0, test_1.expect)(async () => {
|
|
86
|
+
await page.reload();
|
|
87
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
88
|
+
await optimizeDashboardPage.fillFilterTable(processName);
|
|
89
|
+
await optimizeDashboardPage.processAssertion(processName);
|
|
90
|
+
}).toPass({ timeout: 300000, intervals: [15000] });
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
await SM_8_11_1.test.step('Clear cookies and reset session', async () => {
|
|
94
|
+
await (0, resetSession_1.resetSession)(browser, page); //a workaround for https://github.com/camunda/camunda/issues/34513
|
|
95
|
+
});
|
|
96
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
97
|
+
await navigationPage.goToModeler(undefined, credentials);
|
|
98
|
+
await modelerHomePage.createCrossComponentProjectFolder(credentials);
|
|
99
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
100
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
101
|
+
});
|
|
102
|
+
await SM_8_11_1.test.step('Create A Diagram with a User Task and Assert Cannot Start Process Instance With Tenant', async () => {
|
|
103
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName);
|
|
104
|
+
await modelerCreatePage.clickDeployAndRunMainButton();
|
|
105
|
+
await modelerCreatePage.clickTenantIdInput();
|
|
106
|
+
await modelerCreatePage.fillTenantIdInput(tenantName);
|
|
107
|
+
await modelerCreatePage.clickDeployAndRunSubButton();
|
|
108
|
+
await (0, test_1.expect)(page.getByText('The diagram failed to deploy & run')).toBeVisible({ timeout: 60000 });
|
|
109
|
+
});
|
|
110
|
+
await SM_8_11_1.test.step('Assert "test" user cannot view process in Tasklist, Operate or Optimize', async () => {
|
|
111
|
+
await navigationPage.goToOperate(undefined, credentials);
|
|
112
|
+
await operateHomePage.clickProcessesTab();
|
|
113
|
+
await page.waitForLoadState('networkidle');
|
|
114
|
+
await (0, test_1.expect)(page.getByText(processName)).not.toBeVisible({
|
|
115
|
+
timeout: 60000,
|
|
116
|
+
});
|
|
117
|
+
await navigationPage.goToTasklist(undefined, credentials);
|
|
118
|
+
await page.waitForLoadState('networkidle');
|
|
119
|
+
await (0, test_1.expect)(page.getByText(processName)).not.toBeVisible({
|
|
120
|
+
timeout: 60000,
|
|
121
|
+
});
|
|
122
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
123
|
+
await navigationPage.goToOptimize(undefined, credentials);
|
|
124
|
+
await optimizeHomePage.clickDashboardLink();
|
|
125
|
+
await page.waitForLoadState('networkidle');
|
|
126
|
+
await (0, test_1.expect)(page.getByText(processName)).not.toBeVisible({
|
|
127
|
+
timeout: 60000,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
// Skipped due to bug #60836: https://github.com/camunda/camunda/issues/60836
|
|
133
|
+
SM_8_11_1.test.skip('Main User Can Create & Access Tenant - Connectors Flow @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, }) => {
|
|
134
|
+
SM_8_11_1.test.slow();
|
|
135
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
136
|
+
const processName = 'Main_User_Connectors_Flow_' + randomString;
|
|
137
|
+
const tenantName = 'Tenant_Main_Connectors';
|
|
138
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in OC Identity', async () => {
|
|
139
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
140
|
+
await ocTenantPage.createTenant(tenantName);
|
|
141
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
142
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
143
|
+
await ocTenantPage.assignUserToTenant('demo');
|
|
144
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
145
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
146
|
+
await ocTenantPage.assignRoleToTenant('connectors', 'connectorsConnectors');
|
|
147
|
+
});
|
|
148
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
149
|
+
await navigationPage.goToManagementIdentity();
|
|
150
|
+
await managementIdentityTenantPage.createTenant(tenantName);
|
|
151
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
152
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
153
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
157
|
+
await navigationPage.goToModeler();
|
|
158
|
+
await modelerHomePage.createCrossComponentProjectFolder();
|
|
159
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
160
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
161
|
+
});
|
|
162
|
+
await SM_8_11_1.test.step('Create A Diagram with a REST Connector and Start Process Instance', async () => {
|
|
163
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, constants_1.REST_MOCK_URL, 'noAuth', 'body');
|
|
164
|
+
await modelerCreatePage.runProcessInstance('', tenantName); //Identity bug https://github.com/camunda/camunda/issues/35834
|
|
165
|
+
});
|
|
166
|
+
await SM_8_11_1.test.step('View Process Instance in Operate & assert process is complete', async () => {
|
|
167
|
+
await navigationPage.goToOperate();
|
|
168
|
+
await operateHomePage.clickProcessesTab();
|
|
169
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
170
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
171
|
+
await (0, test_1.expect)(page.getByTestId('variables-list')).toBeVisible({
|
|
172
|
+
timeout: 30000,
|
|
173
|
+
});
|
|
174
|
+
await (0, test_1.expect)(page.getByText('"Awesome!"')).toBeVisible({
|
|
175
|
+
timeout: 60000,
|
|
176
|
+
});
|
|
177
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName);
|
|
178
|
+
});
|
|
179
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
180
|
+
await SM_8_11_1.test.step('Assert Process has been successfully imported in Optimize', async () => {
|
|
181
|
+
await navigationPage.goToOptimize();
|
|
182
|
+
await optimizeHomePage.clickDashboardLink();
|
|
183
|
+
await (0, test_1.expect)(async () => {
|
|
184
|
+
await page.reload();
|
|
185
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
186
|
+
await optimizeDashboardPage.fillFilterTable(processName);
|
|
187
|
+
await optimizeDashboardPage.processAssertion(processName);
|
|
188
|
+
}).toPass({ timeout: 300000, intervals: [15000] });
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
(0, SM_8_11_1.test)('Second User Can Access Tenant Created By Main User - User Task Flow', async ({ page, modelerHomePage, modelerCreatePage, taskPanelPage, operateProcessInstancePage, operateProcessesPage, taskDetailsPage, operateHomePage, navigationPage, managementIdentityTenantPage, optimizeDashboardPage, optimizeHomePage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, keycloakAdminPage, keycloakLoginPage, ocIdentityRolesPage, ocIdentityMappingRulesPage, browser, }) => {
|
|
193
|
+
SM_8_11_1.test.slow();
|
|
194
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
195
|
+
const processName = 'Second_User_User_Task_Flow_' + randomString;
|
|
196
|
+
const tenantName = 'Tenant_Second_User_' + randomString;
|
|
197
|
+
const testUser = (await (0, _setup_1.generateRandomStringAsync)(6)).toLowerCase();
|
|
198
|
+
const password = process.env.DISTRO_QA_E2E_TESTS_IDENTITY_FIRSTUSER_PASSWORD;
|
|
199
|
+
const credentials = {
|
|
200
|
+
username: testUser,
|
|
201
|
+
password: password,
|
|
202
|
+
};
|
|
203
|
+
await SM_8_11_1.test.step('Create new Test User And Assign to Role', async () => {
|
|
204
|
+
await (0, UtilitiesPage_1.createUserAndAssignToRole)(page, navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, ocIdentityHomePage, ocIdentityMappingRulesPage, ocIdentityRolesPage, testUser, password);
|
|
205
|
+
});
|
|
206
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in OC Identity', async () => {
|
|
207
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
208
|
+
await ocTenantPage.createTenant(tenantName);
|
|
209
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
210
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
211
|
+
await ocTenantPage.assignUserToTenant(testUser);
|
|
212
|
+
});
|
|
213
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
214
|
+
await navigationPage.goToManagementIdentity();
|
|
215
|
+
await managementIdentityTenantPage.createTenant(tenantName);
|
|
216
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, testUser, `qacamunda+${testUser}@gmail.com`);
|
|
217
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
218
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
await SM_8_11_1.test.step('Clear cookies and reset session', async () => {
|
|
222
|
+
await (0, resetSession_1.resetSession)(browser, page); //a workaround for https://github.com/camunda/camunda/issues/34513
|
|
223
|
+
});
|
|
224
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
225
|
+
await navigationPage.goToModeler(undefined, credentials);
|
|
226
|
+
await modelerHomePage.createCrossComponentProjectFolder(credentials);
|
|
227
|
+
await modelerHomePage.assignWorkspaceEnvironmentAsOrgAdmin(browser);
|
|
228
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
229
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
230
|
+
});
|
|
231
|
+
await SM_8_11_1.test.step('Create A Diagram with a User Task and Start Process Instance', async () => {
|
|
232
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName);
|
|
233
|
+
await modelerCreatePage.runProcessInstance('', tenantName); //Identity bug https://github.com/camunda/camunda/issues/35834
|
|
234
|
+
});
|
|
235
|
+
await SM_8_11_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate', async () => {
|
|
236
|
+
await navigationPage.goToOperate(undefined, credentials);
|
|
237
|
+
await operateHomePage.clickProcessesTab();
|
|
238
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
239
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
240
|
+
await navigationPage.goToTasklist(undefined, credentials);
|
|
241
|
+
await taskPanelPage.openTask(processName);
|
|
242
|
+
await taskDetailsPage.clickAssignToMeButton();
|
|
243
|
+
await taskDetailsPage.clickCompleteTaskButton();
|
|
244
|
+
await (0, test_1.expect)(page.getByText('Task completed')).toBeVisible({
|
|
245
|
+
timeout: 200000,
|
|
246
|
+
});
|
|
247
|
+
await navigationPage.goToOperate(undefined, credentials);
|
|
248
|
+
await operateHomePage.clickProcessesTab();
|
|
249
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
250
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
251
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName);
|
|
252
|
+
});
|
|
253
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
254
|
+
await SM_8_11_1.test.step('Assert Process has been successfully imported in Optimize', async () => {
|
|
255
|
+
await navigationPage.goToOptimize(undefined, credentials);
|
|
256
|
+
await optimizeHomePage.clickDashboardLink();
|
|
257
|
+
await (0, test_1.expect)(async () => {
|
|
258
|
+
await page.reload();
|
|
259
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
260
|
+
await optimizeDashboardPage.fillFilterTable(processName);
|
|
261
|
+
await optimizeDashboardPage.processAssertion(processName);
|
|
262
|
+
}).toPass({ timeout: 300000, intervals: [15000] });
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
// Skipped due to bug #60836: https://github.com/camunda/camunda/issues/60836
|
|
267
|
+
SM_8_11_1.test.skip('Second User Can Access Tenant Created By Main User - Connectors Flow @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, keycloakAdminPage, keycloakLoginPage, ocIdentityRolesPage, ocIdentityMappingRulesPage, browser, }) => {
|
|
268
|
+
SM_8_11_1.test.slow();
|
|
269
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
270
|
+
const processName = 'Second_User_Connectors_Flow_' + randomString;
|
|
271
|
+
const tenantName = 'Tenant_Second_Connectors';
|
|
272
|
+
const testUser = (await (0, _setup_1.generateRandomStringAsync)(6)).toLowerCase();
|
|
273
|
+
const password = process.env.DISTRO_QA_E2E_TESTS_IDENTITY_FIRSTUSER_PASSWORD;
|
|
274
|
+
const credentials = {
|
|
275
|
+
username: testUser,
|
|
276
|
+
password: password,
|
|
277
|
+
};
|
|
278
|
+
await SM_8_11_1.test.step('Create new Test User And Assign to Role', async () => {
|
|
279
|
+
await (0, UtilitiesPage_1.createUserAndAssignToRole)(page, navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, ocIdentityHomePage, ocIdentityMappingRulesPage, ocIdentityRolesPage, testUser, password);
|
|
280
|
+
});
|
|
281
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in OC Identity', async () => {
|
|
282
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
283
|
+
await ocTenantPage.createTenant(tenantName);
|
|
284
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
285
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
286
|
+
await ocTenantPage.assignUserToTenant(testUser);
|
|
287
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
288
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
289
|
+
await ocTenantPage.assignRoleToTenant('connectors', 'connectorsConnectors');
|
|
290
|
+
});
|
|
291
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
292
|
+
await navigationPage.goToManagementIdentity();
|
|
293
|
+
await managementIdentityTenantPage.createTenant(tenantName);
|
|
294
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, testUser, `qacamunda+${testUser}@gmail.com`);
|
|
295
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
296
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
await SM_8_11_1.test.step('Clear cookies and reset session', async () => {
|
|
300
|
+
await (0, resetSession_1.resetSession)(browser, page); //a workaround for https://github.com/camunda/camunda/issues/34513
|
|
301
|
+
});
|
|
302
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
303
|
+
await navigationPage.goToModeler(undefined, credentials);
|
|
304
|
+
await modelerHomePage.createCrossComponentProjectFolder(credentials);
|
|
305
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
306
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
307
|
+
});
|
|
308
|
+
await SM_8_11_1.test.step('Create A Diagram with a REST Connector and Start Process Instance', async () => {
|
|
309
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, constants_1.REST_MOCK_URL, 'noAuth', 'body', {
|
|
310
|
+
recoverSession: () => navigationPage.goToModeler(undefined, credentials),
|
|
311
|
+
});
|
|
312
|
+
await modelerCreatePage.runProcessInstance('', tenantName); //Identity bug https://github.com/camunda/camunda/issues/35834
|
|
313
|
+
});
|
|
314
|
+
await SM_8_11_1.test.step('View Process Instance in Operate & assert process is complete', async () => {
|
|
315
|
+
await navigationPage.goToOperate(undefined, credentials);
|
|
316
|
+
await operateHomePage.clickProcessesTab();
|
|
317
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
318
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
319
|
+
await operateProcessInstancePage.assertVariablesListVisible();
|
|
320
|
+
await (0, test_1.expect)(page.getByText('"Awesome!"')).toBeVisible({
|
|
321
|
+
timeout: 60000,
|
|
322
|
+
});
|
|
323
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName);
|
|
324
|
+
});
|
|
325
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
326
|
+
await SM_8_11_1.test.step('Assert Process has been successfully imported in Optimize', async () => {
|
|
327
|
+
await navigationPage.goToOptimize(undefined, credentials);
|
|
328
|
+
await optimizeHomePage.clickDashboardLink();
|
|
329
|
+
await (0, test_1.expect)(async () => {
|
|
330
|
+
await page.reload();
|
|
331
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
332
|
+
await optimizeDashboardPage.fillFilterTable(processName);
|
|
333
|
+
await optimizeDashboardPage.processAssertion(processName);
|
|
334
|
+
}).toPass({ timeout: 300000, intervals: [15000] });
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
// Skipped due to bug #60836: https://github.com/camunda/camunda/issues/60836
|
|
339
|
+
SM_8_11_1.test.skip('Default Tenant Is Available And Used When Tenant Not Set In Deployment', async ({ page, modelerHomePage, modelerCreatePage, taskPanelPage, operateProcessInstancePage, operateProcessesPage, taskDetailsPage, operateHomePage, navigationPage, managementIdentityTenantPage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, }) => {
|
|
340
|
+
SM_8_11_1.test.slow();
|
|
341
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
342
|
+
const processName = 'Default_Tenant_Flow_' + randomString;
|
|
343
|
+
const tenantName = 'Default';
|
|
344
|
+
await SM_8_11_1.test.step('Assign User To Default Tenant in OC Identity', async () => {
|
|
345
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
346
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
347
|
+
await ocTenantPage.assignUserToTenant('demo');
|
|
348
|
+
});
|
|
349
|
+
await SM_8_11_1.test.step('Assign User To Default Tenant in Management Identity', async () => {
|
|
350
|
+
await navigationPage.goToManagementIdentity();
|
|
351
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
352
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
353
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
357
|
+
await navigationPage.goToModeler();
|
|
358
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
359
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
360
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
361
|
+
});
|
|
362
|
+
await SM_8_11_1.test.step('Create A Diagram with a User Task and Start Process Instance', async () => {
|
|
363
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName);
|
|
364
|
+
await modelerCreatePage.runProcessInstance('', '');
|
|
365
|
+
});
|
|
366
|
+
await SM_8_11_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate', async () => {
|
|
367
|
+
await navigationPage.goToOperate();
|
|
368
|
+
await operateHomePage.clickProcessesTab();
|
|
369
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
370
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
371
|
+
await navigationPage.goToTasklist();
|
|
372
|
+
await taskPanelPage.openTask(processName);
|
|
373
|
+
await taskDetailsPage.clickAssignToMeButton();
|
|
374
|
+
await taskDetailsPage.clickCompleteTaskButton();
|
|
375
|
+
await (0, test_1.expect)(page.getByText('Task completed')).toBeVisible({
|
|
376
|
+
timeout: 200000,
|
|
377
|
+
});
|
|
378
|
+
await navigationPage.goToOperate();
|
|
379
|
+
await operateHomePage.clickProcessesTab();
|
|
380
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
381
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
382
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName);
|
|
383
|
+
});
|
|
384
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
385
|
+
await SM_8_11_1.test.step('Assert Process has been successfully imported in Optimize', async () => {
|
|
386
|
+
await navigationPage.goToOptimize();
|
|
387
|
+
await optimizeHomePage.clickDashboardLink();
|
|
388
|
+
await (0, test_1.expect)(async () => {
|
|
389
|
+
await page.reload();
|
|
390
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
391
|
+
await optimizeDashboardPage.fillFilterTable(processName);
|
|
392
|
+
await optimizeDashboardPage.processAssertion(processName);
|
|
393
|
+
}).toPass({ timeout: 300000, intervals: [15000] });
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
(0, SM_8_11_1.test)('User Can Be Assigned To Multiple Tenants @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, }) => {
|
|
398
|
+
SM_8_11_1.test.slow();
|
|
399
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
400
|
+
const processName1 = 'Multiple_Tenant_Flow_1' + randomString;
|
|
401
|
+
const processName2 = 'Multiple_Tenant_Flow_2' + randomString;
|
|
402
|
+
const tenantName1 = 'Tenant_1_Connectors';
|
|
403
|
+
const tenantName2 = 'Tenant_2_Connectors';
|
|
404
|
+
await SM_8_11_1.test.step('Create Two Tenants And Assign to Demo User', async () => {
|
|
405
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
406
|
+
await ocTenantPage.createTenant(tenantName1);
|
|
407
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
408
|
+
await ocTenantPage.clickTenant(tenantName1);
|
|
409
|
+
await ocTenantPage.assignUserToTenant('demo');
|
|
410
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
411
|
+
await ocTenantPage.clickTenant(tenantName1);
|
|
412
|
+
await ocTenantPage.assignRoleToTenant('connectors', 'connectorsConnectors');
|
|
413
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
414
|
+
await ocTenantPage.createTenant(tenantName2);
|
|
415
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
416
|
+
await ocTenantPage.clickTenant(tenantName2);
|
|
417
|
+
await ocTenantPage.assignUserToTenant('demo');
|
|
418
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
419
|
+
await ocTenantPage.clickTenant(tenantName2);
|
|
420
|
+
await ocTenantPage.assignRoleToTenant('connectors', 'connectorsConnectors');
|
|
421
|
+
});
|
|
422
|
+
await SM_8_11_1.test.step('Create Two Tenants And Assign to Demo User in Management Identity', async () => {
|
|
423
|
+
await navigationPage.goToManagementIdentity();
|
|
424
|
+
await managementIdentityTenantPage.createTenant(tenantName1);
|
|
425
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName1, 'demo', demoUserDisplayText);
|
|
426
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
427
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
428
|
+
}
|
|
429
|
+
await managementIdentityPage.clickTenantTab();
|
|
430
|
+
await managementIdentityTenantPage.createTenant(tenantName2);
|
|
431
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName2, 'demo', demoUserDisplayText);
|
|
432
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
433
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
437
|
+
await navigationPage.goToModeler();
|
|
438
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
439
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
440
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
441
|
+
});
|
|
442
|
+
await SM_8_11_1.test.step('Create A Diagram with a REST Connector and Start Process Instance With Tenant 1', async () => {
|
|
443
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName1, constants_1.REST_MOCK_URL, 'noAuth', 'body');
|
|
444
|
+
await modelerCreatePage.runProcessInstance('', tenantName1); //Identity bug https://github.com/camunda/camunda/issues/35834
|
|
445
|
+
});
|
|
446
|
+
await SM_8_11_1.test.step('Create A Diagram with a REST Connector and Start Process Instance With Tenant 2', async () => {
|
|
447
|
+
await modelerHomePage.clickProjectBreadcrumb();
|
|
448
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
449
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
450
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName2, constants_1.REST_MOCK_URL, 'noAuth', 'body');
|
|
451
|
+
await modelerCreatePage.runProcessInstance('', tenantName2);
|
|
452
|
+
});
|
|
453
|
+
await SM_8_11_1.test.step('View Process Instances in Operate, and Assert Process Complete in Operate with Correct Tenant', async () => {
|
|
454
|
+
// Re-entered through `goToOperate` on every attempt: this flow reaches
|
|
455
|
+
// Operate ~10 minutes in, and when the session's token refresh fails
|
|
456
|
+
// the instance route answers with an error document instead of the app
|
|
457
|
+
// shell. The reload loop inside `completedIconAssertion` only
|
|
458
|
+
// re-requests that same document, so the session has to be
|
|
459
|
+
// re-established before the icon can be asserted at all.
|
|
460
|
+
const openCompletedInstance = async (processName) => {
|
|
461
|
+
await (0, test_1.expect)(async () => {
|
|
462
|
+
await navigationPage.goToOperate();
|
|
463
|
+
await operateHomePage.clickProcessesTab();
|
|
464
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
465
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
466
|
+
}).toPass({ timeout: 600000, intervals: [5000] });
|
|
467
|
+
};
|
|
468
|
+
await openCompletedInstance(processName1);
|
|
469
|
+
await (0, expectTextWithRetry_1.expectTextWithRetry)(page, '"Awesome!"', {
|
|
470
|
+
postAction: async () => {
|
|
471
|
+
await page.reload();
|
|
472
|
+
},
|
|
473
|
+
});
|
|
474
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName1);
|
|
475
|
+
await openCompletedInstance(processName2);
|
|
476
|
+
await (0, expectTextWithRetry_1.expectTextWithRetry)(page, '"Awesome!"', {
|
|
477
|
+
postAction: async () => {
|
|
478
|
+
await page.reload();
|
|
479
|
+
},
|
|
480
|
+
});
|
|
481
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName2);
|
|
482
|
+
});
|
|
483
|
+
});
|
|
484
|
+
// Skipped due to bug #60836: https://github.com/camunda/camunda/issues/60836
|
|
485
|
+
SM_8_11_1.test.skip('Revoking Tenant Access User Flow', async ({ page, modelerHomePage, modelerCreatePage, taskPanelPage, operateProcessInstancePage, operateProcessesPage, taskDetailsPage, operateHomePage, navigationPage, managementIdentityTenantPage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, }) => {
|
|
486
|
+
SM_8_11_1.test.slow();
|
|
487
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
488
|
+
const processName1 = 'Revoke_Tenant_Flow_1' + randomString;
|
|
489
|
+
const processName2 = 'Revoke_Tenant_Flow_2' + randomString;
|
|
490
|
+
const tenantName = 'Revoke_' + randomString;
|
|
491
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in OC Identity', async () => {
|
|
492
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
493
|
+
await ocTenantPage.createTenant(tenantName);
|
|
494
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
495
|
+
await ocTenantPage.clickTenant(tenantName);
|
|
496
|
+
await ocTenantPage.assignUserToTenant('demo');
|
|
497
|
+
});
|
|
498
|
+
await SM_8_11_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
499
|
+
await navigationPage.goToManagementIdentity();
|
|
500
|
+
await managementIdentityTenantPage.createTenant(tenantName);
|
|
501
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
502
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
503
|
+
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
507
|
+
await navigationPage.goToModeler();
|
|
508
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
509
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
510
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
511
|
+
});
|
|
512
|
+
await SM_8_11_1.test.step('Create A Diagram with a User Task and Start Process Instance', async () => {
|
|
513
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName1);
|
|
514
|
+
await modelerCreatePage.runProcessInstance('', tenantName); //Identity bug https://github.com/camunda/camunda/issues/35834
|
|
515
|
+
});
|
|
516
|
+
await SM_8_11_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate', async () => {
|
|
517
|
+
await navigationPage.goToOperate();
|
|
518
|
+
await operateHomePage.clickProcessesTab();
|
|
519
|
+
await operateProcessesPage.clickProcessActiveCheckbox();
|
|
520
|
+
await operateProcessesPage.clickProcessInstanceLink(processName1);
|
|
521
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
522
|
+
await navigationPage.goToTasklist();
|
|
523
|
+
await taskPanelPage.openTask(processName1);
|
|
524
|
+
await taskDetailsPage.clickAssignToMeButton();
|
|
525
|
+
await taskDetailsPage.clickCompleteTaskButton();
|
|
526
|
+
await (0, test_1.expect)(page.getByText('Task completed')).toBeVisible({
|
|
527
|
+
timeout: 200000,
|
|
528
|
+
});
|
|
529
|
+
await navigationPage.goToOperate();
|
|
530
|
+
await operateHomePage.clickProcessesTab();
|
|
531
|
+
await operateProcessesPage.clickProcessInstanceLink(processName1, 'completed');
|
|
532
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
533
|
+
await operateProcessInstancePage.tenantNameAssertion(tenantName);
|
|
534
|
+
});
|
|
535
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
536
|
+
await SM_8_11_1.test.step('Assert Process has been successfully imported in Optimize', async () => {
|
|
537
|
+
await navigationPage.goToOptimize();
|
|
538
|
+
await optimizeHomePage.clickDashboardLink();
|
|
539
|
+
await (0, test_1.expect)(async () => {
|
|
540
|
+
await page.reload();
|
|
541
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
542
|
+
await optimizeDashboardPage.fillFilterTable(processName1);
|
|
543
|
+
await optimizeDashboardPage.processAssertion(processName1);
|
|
544
|
+
}).toPass({ timeout: 300000, intervals: [15000] });
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
await SM_8_11_1.test.step('Delete Tenant Access For Demo User OC', async () => {
|
|
548
|
+
await navigationPage.goToOCAdmin();
|
|
549
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, ocIdentityHomePage.tenantsTab, {
|
|
550
|
+
postAction: async () => {
|
|
551
|
+
await navigationPage.goToOCAdmin();
|
|
552
|
+
},
|
|
553
|
+
});
|
|
554
|
+
await ocIdentityHomePage.clickTenantsTab();
|
|
555
|
+
await ocTenantPage.removeUserFromTenant(tenantName);
|
|
556
|
+
});
|
|
557
|
+
await SM_8_11_1.test.step('Delete Tenant Access For Demo User', async () => {
|
|
558
|
+
await navigationPage.goToManagementIdentity();
|
|
559
|
+
await managementIdentityTenantPage.removeUserFromTenant(tenantName);
|
|
560
|
+
});
|
|
561
|
+
await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
|
|
562
|
+
await navigationPage.goToModeler();
|
|
563
|
+
await modelerHomePage.createCrossComponentProjectFolder();
|
|
564
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
565
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
566
|
+
});
|
|
567
|
+
await SM_8_11_1.test.step('Create A Diagram with a User Task and Assert Cannot Start Process Instance With Tenant', async () => {
|
|
568
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName2);
|
|
569
|
+
await modelerCreatePage.clickDeployAndRunMainButton();
|
|
570
|
+
await modelerCreatePage.clickTenantIdInput();
|
|
571
|
+
await modelerCreatePage.fillTenantIdInput(tenantName);
|
|
572
|
+
await modelerCreatePage.clickDeployAndRunSubButton();
|
|
573
|
+
await (0, test_1.expect)(page.getByText('The diagram failed to deploy & run')).toBeVisible({ timeout: 60000 });
|
|
574
|
+
});
|
|
575
|
+
await SM_8_11_1.test.step('Assert "demo" user cannot view process in Tasklist, Operate or Optimize', async () => {
|
|
576
|
+
await navigationPage.goToOperate();
|
|
577
|
+
await operateHomePage.clickProcessesTab();
|
|
578
|
+
await page.waitForLoadState('networkidle');
|
|
579
|
+
await (0, test_1.expect)(page.getByText(processName1)).not.toBeVisible({
|
|
580
|
+
timeout: 60000,
|
|
581
|
+
});
|
|
582
|
+
await (0, test_1.expect)(page.getByText(processName2)).not.toBeVisible({
|
|
583
|
+
timeout: 60000,
|
|
584
|
+
});
|
|
585
|
+
await navigationPage.goToTasklist();
|
|
586
|
+
await page.waitForLoadState('networkidle');
|
|
587
|
+
await (0, test_1.expect)(page.getByText(processName1)).not.toBeVisible({
|
|
588
|
+
timeout: 60000,
|
|
589
|
+
});
|
|
590
|
+
await (0, test_1.expect)(page.getByText(processName2)).not.toBeVisible({
|
|
591
|
+
timeout: 60000,
|
|
592
|
+
});
|
|
593
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
594
|
+
await navigationPage.goToOptimize();
|
|
595
|
+
await optimizeHomePage.clickDashboardLink();
|
|
596
|
+
await optimizeDashboardPage.processAssertion(processName1, {
|
|
597
|
+
not: true,
|
|
598
|
+
timeout: 300000,
|
|
599
|
+
});
|
|
600
|
+
await optimizeDashboardPage.processAssertion(processName2, {
|
|
601
|
+
not: true,
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
});
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|