@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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_1 = require("@playwright/test");
|
|
4
|
+
const _setup_1 = require("../../test-setup.js");
|
|
5
|
+
const SM_8_10_1 = require("../../fixtures/SM-8.10");
|
|
6
|
+
const UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
7
|
+
const optimizeReportUtils_1 = require("../../pages/SM-8.10/optimizeReportUtils");
|
|
8
|
+
const loggingUtils_1 = require("../../utils/loggingUtils");
|
|
9
|
+
const resetSession_1 = require("../../utils/resetSession");
|
|
10
|
+
const KeycloakUtils_1 = require("../../pages/SM-8.10/KeycloakUtils");
|
|
11
|
+
SM_8_10_1.test.describe.parallel('Smoke Tests', () => {
|
|
12
|
+
SM_8_10_1.test.skip(true, 'Skipped due to Identity/admin change, will check and re-enable once the changes are in place');
|
|
13
|
+
SM_8_10_1.test.beforeEach(async ({ navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, page, browser, loginPage, ocIdentityHomePage, ocIdentityRolesPage, }, testInfo) => {
|
|
14
|
+
if (process.env.IS_MIGRATION === 'true') {
|
|
15
|
+
await navigationPage.goToOCIdentity((testInfo.workerIndex + 1) * 1000);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
console.log(`BeforeEach start: timeout = ${testInfo.timeout}`);
|
|
19
|
+
(0, loggingUtils_1.setupTestLogging)(testInfo);
|
|
20
|
+
const { testUsername, testPassword } = await (0, KeycloakUtils_1.setupKeycloakUser)(navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, ocIdentityHomePage, ocIdentityRolesPage);
|
|
21
|
+
console.log(`BeforeEach end: timeout = ${testInfo.timeout}`);
|
|
22
|
+
await (0, resetSession_1.resetSession)(browser, page);
|
|
23
|
+
await loginPage.login(testUsername, testPassword);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
SM_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
27
|
+
console.log(`AfterEach start: timeout = ${testInfo.timeout}`);
|
|
28
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
29
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
30
|
+
if (process.env.IS_MIGRATION !== 'true') {
|
|
31
|
+
(0, loggingUtils_1.cleanupTestLogging)();
|
|
32
|
+
console.log(`AfterEach end: timeout = ${testInfo.timeout}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
(0, SM_8_10_1.test)('Basic Login', async ({ context, navigationPage }, testInfo) => {
|
|
36
|
+
console.log(`[${testInfo.title}] Test start: timeout = ${testInfo.timeout}`);
|
|
37
|
+
await context.clearCookies();
|
|
38
|
+
await navigationPage.goToManagementIdentity(1000);
|
|
39
|
+
console.log(`[${testInfo.title}] Test end: timeout = ${testInfo.timeout}`);
|
|
40
|
+
});
|
|
41
|
+
(0, SM_8_10_1.test)('Basic Navigation', async ({ context, navigationPage }, testInfo) => {
|
|
42
|
+
console.log(`[${testInfo.title}] Test start: timeout = ${testInfo.timeout}`);
|
|
43
|
+
await SM_8_10_1.test.step('Assert Web Modeler Navigation', async () => {
|
|
44
|
+
await context.clearCookies();
|
|
45
|
+
await navigationPage.goToModeler();
|
|
46
|
+
});
|
|
47
|
+
await SM_8_10_1.test.step('Assert Tasklist Navigation', async () => {
|
|
48
|
+
await context.clearCookies();
|
|
49
|
+
await navigationPage.goToTasklist();
|
|
50
|
+
});
|
|
51
|
+
await SM_8_10_1.test.step('Assert Operate Navigation', async () => {
|
|
52
|
+
await context.clearCookies();
|
|
53
|
+
await navigationPage.goToOperate();
|
|
54
|
+
});
|
|
55
|
+
await SM_8_10_1.test.step('Assert OC Identity Navigation', async () => {
|
|
56
|
+
await context.clearCookies();
|
|
57
|
+
await navigationPage.goToOCIdentity();
|
|
58
|
+
});
|
|
59
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
60
|
+
await SM_8_10_1.test.step('Assert Optimize Navigation', async () => {
|
|
61
|
+
await context.clearCookies();
|
|
62
|
+
await navigationPage.goToOptimize();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
await SM_8_10_1.test.step('Assert Console Navigation', async () => {
|
|
66
|
+
await context.clearCookies();
|
|
67
|
+
await navigationPage.goToConsole();
|
|
68
|
+
});
|
|
69
|
+
console.log(`[${testInfo.title}] Test end: timeout = ${testInfo.timeout}`);
|
|
70
|
+
});
|
|
71
|
+
// Skip due to Tasklist bug
|
|
72
|
+
SM_8_10_1.test.skip('Most Common Flow User Flow With All Apps', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, taskDetailsPage, taskPanelPage, }, testInfo) => {
|
|
73
|
+
console.log(`[${testInfo.title}] Test start: timeout = ${testInfo.timeout}`);
|
|
74
|
+
const randomName = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
75
|
+
const processName = 'Zeebe_User_Task_Process' + randomName;
|
|
76
|
+
const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
|
|
77
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
78
|
+
await navigationPage.goToModeler();
|
|
79
|
+
await modelerHomePage.createCrossComponentProjectFolder();
|
|
80
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
81
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
82
|
+
});
|
|
83
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with Zeebe User Task and Start Process Instance', async () => {
|
|
84
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName, processName);
|
|
85
|
+
await modelerCreatePage.runProcessInstance();
|
|
86
|
+
});
|
|
87
|
+
await SM_8_10_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate and Assert Process has been successfully imported in Optimize', async () => {
|
|
88
|
+
await navigationPage.goToOperate();
|
|
89
|
+
await operateHomePage.clickProcessesTab();
|
|
90
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'active');
|
|
91
|
+
let result = await operateProcessInstancePage.assertEitherIncidentOrActiveIconVisible();
|
|
92
|
+
(0, test_1.expect)(result).toBe('active');
|
|
93
|
+
await navigationPage.goToTasklist();
|
|
94
|
+
await (0, UtilitiesPage_1.completeTaskWithRetry)(page, taskPanelPage, taskDetailsPage, processName, 'medium');
|
|
95
|
+
await navigationPage.goToOperate();
|
|
96
|
+
await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({ timeout: 120000 });
|
|
97
|
+
await operateHomePage.clickProcessesTab();
|
|
98
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
99
|
+
result =
|
|
100
|
+
await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
101
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
102
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
103
|
+
await navigationPage.goToOptimize();
|
|
104
|
+
await optimizeHomePage.clickCollectionsLink();
|
|
105
|
+
await (0, optimizeReportUtils_1.createReportForProcess)(optimizeCollectionsPage, optimizeReportPage, processName);
|
|
106
|
+
await optimizeReportPage.clickUserTaskProcess(processName);
|
|
107
|
+
await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeEnabled({
|
|
108
|
+
timeout: 30000,
|
|
109
|
+
});
|
|
110
|
+
await optimizeReportPage.clickVersionSelection();
|
|
111
|
+
await optimizeReportPage.clickAlwaysDisplayLatestSelection();
|
|
112
|
+
await optimizeReportPage.clickBlankReportButton();
|
|
113
|
+
await optimizeReportPage.clickCreateReportLink();
|
|
114
|
+
await (0, test_1.expect)(optimizeReportPage.selectDropdown).toBeVisible({
|
|
115
|
+
timeout: 60000,
|
|
116
|
+
});
|
|
117
|
+
await optimizeReportPage.clickSelectDropdown();
|
|
118
|
+
await optimizeReportPage.clickUserTaskOption();
|
|
119
|
+
await optimizeReportPage.clickHeatMapButton();
|
|
120
|
+
await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
|
|
121
|
+
timeout: 30000,
|
|
122
|
+
});
|
|
123
|
+
await optimizeReportPage.clickTableOption();
|
|
124
|
+
await optimizeReportPage.clickReportName();
|
|
125
|
+
await optimizeReportPage.clearReportName();
|
|
126
|
+
await optimizeReportPage.fillReportName(reportName);
|
|
127
|
+
await optimizeReportPage.clickSaveButton();
|
|
128
|
+
await optimizeHomePage.clickCollectionsLink();
|
|
129
|
+
await (0, optimizeReportUtils_1.assertReportWithRefreshes)(page, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, reportName, optimizeReportPage.oneUserTaskInstance, 'One user task count');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
console.log(`[${testInfo.title}] Test end: timeout = ${testInfo.timeout}`);
|
|
133
|
+
});
|
|
134
|
+
(0, SM_8_10_1.test)('Most Common REST Connector User Flow @tasklistV2', async ({ page, context, operateHomePage, modelerHomePage, modelerCreatePage, connectorSettingsPage, navigationPage, operateProcessesPage, operateProcessInstancePage, connectorMarketplacePage, }, testInfo) => {
|
|
135
|
+
console.log(`[${testInfo.title}] Test start: timeout = ${testInfo.timeout}`);
|
|
136
|
+
const processName = 'REST_Connector_Basic_Auth_Process' +
|
|
137
|
+
(await (0, _setup_1.generateRandomStringAsync)(3));
|
|
138
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
139
|
+
await context.clearCookies();
|
|
140
|
+
await navigationPage.goToModeler();
|
|
141
|
+
await modelerHomePage.createCrossComponentProjectFolder();
|
|
142
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
143
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
144
|
+
});
|
|
145
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector with Basic Auth and Start Process Instance', async () => {
|
|
146
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test', 'basic', '{message:response.body.message}', 'result', { username: 'username', password: 'password' });
|
|
147
|
+
await modelerCreatePage.runProcessInstance();
|
|
148
|
+
});
|
|
149
|
+
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
150
|
+
await navigationPage.goToOperate();
|
|
151
|
+
await operateHomePage.clickProcessesTab();
|
|
152
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
153
|
+
const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
154
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
155
|
+
await (0, test_1.expect)(page.getByTestId('variables-list')).toBeVisible({
|
|
156
|
+
timeout: 60000,
|
|
157
|
+
});
|
|
158
|
+
(0, test_1.expect)((await operateProcessInstancePage.connectorResultVariableName('message')).isVisible()).toBeTruthy();
|
|
159
|
+
await (0, test_1.expect)(page.getByTestId('variable-message').getByText('"Message from Mock!"')).toBeVisible({ timeout: 60000 });
|
|
160
|
+
});
|
|
161
|
+
console.log(`[${testInfo.title}] Test end: timeout = ${testInfo.timeout}`);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const SM_8_10_1 = require("../../fixtures/SM-8.10");
|
|
4
|
+
const _setup_1 = require("../../test-setup.js");
|
|
5
|
+
const UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
6
|
+
SM_8_10_1.test.describe('SM Setup Tests', () => {
|
|
7
|
+
SM_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
8
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
9
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
10
|
+
});
|
|
11
|
+
(0, SM_8_10_1.test)('Create Project Folder', async ({ page, modelerHomePage, navigationPage, }) => {
|
|
12
|
+
if (process.env.IS_SMOKE === 'true') {
|
|
13
|
+
SM_8_10_1.test.skip(true, 'Skipping test because test not required in this test environment');
|
|
14
|
+
}
|
|
15
|
+
await SM_8_10_1.test.step('Navigate to Modeler', async () => {
|
|
16
|
+
await navigationPage.goToModeler();
|
|
17
|
+
});
|
|
18
|
+
await SM_8_10_1.test.step('Create Cross Component Project Folder', async () => {
|
|
19
|
+
await modelerHomePage.createCrossComponentProjectFolder();
|
|
20
|
+
await modelerHomePage.clickHomeBreadcrumb();
|
|
21
|
+
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, modelerHomePage.crossComponentProjectFolder, 'Cross component project folder', 30000);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_1 = require("@playwright/test");
|
|
4
|
+
const SM_8_10_1 = require("../../fixtures/SM-8.10");
|
|
5
|
+
const _setup_1 = require("../../test-setup.js");
|
|
6
|
+
const sleep_1 = require("../../utils/sleep");
|
|
7
|
+
const UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
8
|
+
const fileUpload_1 = require("../../utils/fileUpload");
|
|
9
|
+
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
10
|
+
SM_8_10_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
11
|
+
SM_8_10_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
12
|
+
await navigationPage.goToModeler((testInfo.workerIndex + 1) * 1000);
|
|
13
|
+
});
|
|
14
|
+
SM_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
15
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
16
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
17
|
+
});
|
|
18
|
+
(0, SM_8_10_1.test)('Form.js Integration with User Task', async ({ taskDetailsPage, taskPanelPage, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, formJsPage, page, }) => {
|
|
19
|
+
SM_8_10_1.test.slow();
|
|
20
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
21
|
+
const processName = 'User_Task_Process_With_Form' + randomString;
|
|
22
|
+
const formName = 'New form' + randomString;
|
|
23
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a Simple Form', async () => {
|
|
24
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
25
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
26
|
+
await modelerHomePage.clickFormOption();
|
|
27
|
+
await modelerHomePage.enterFormName(formName);
|
|
28
|
+
await (0, sleep_1.sleep)(10000);
|
|
29
|
+
await formJsPage.deployForm();
|
|
30
|
+
});
|
|
31
|
+
await SM_8_10_1.test.step('Add A BPMN Template To The Project', async () => {
|
|
32
|
+
await modelerHomePage.clickProjectBreadcrumb();
|
|
33
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
34
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
35
|
+
});
|
|
36
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with a User Task with an embedded Form and Start Process Instance', async () => {
|
|
37
|
+
await modelerCreatePage.modelCamundaUserTaskDiagram(processName, processName, formName);
|
|
38
|
+
await (0, sleep_1.sleep)(30000);
|
|
39
|
+
await modelerCreatePage.runProcessInstance();
|
|
40
|
+
});
|
|
41
|
+
await SM_8_10_1.test.step('View Process Instance in Operate and complete User Task in Tasklist', async () => {
|
|
42
|
+
await navigationPage.goToOperate();
|
|
43
|
+
await operateHomePage.clickProcessesTab();
|
|
44
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
45
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
46
|
+
await navigationPage.goToTasklist();
|
|
47
|
+
await (0, sleep_1.sleep)(30000);
|
|
48
|
+
await page.reload();
|
|
49
|
+
await taskPanelPage.openTask(processName);
|
|
50
|
+
await (0, UtilitiesPage_1.completeTaskWithRetry)(page, taskPanelPage, taskDetailsPage, processName, 'medium');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
(0, SM_8_10_1.test)('Form.js Integration with Start form @tasklistV2', async ({ modelerHomePage, modelerCreatePage, navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, formJsPage, }) => {
|
|
54
|
+
SM_8_10_1.test.slow();
|
|
55
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
56
|
+
const processName = 'Start_Form_Process' + randomString;
|
|
57
|
+
const formName = 'New form' + randomString;
|
|
58
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a Simple Form', async () => {
|
|
59
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
60
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
61
|
+
await modelerHomePage.clickFormOption();
|
|
62
|
+
await modelerHomePage.enterFormName(formName);
|
|
63
|
+
await (0, sleep_1.sleep)(10000);
|
|
64
|
+
await formJsPage.deployForm();
|
|
65
|
+
});
|
|
66
|
+
await SM_8_10_1.test.step('Add A BPMN Template To The Project', async () => {
|
|
67
|
+
await modelerHomePage.clickProjectBreadcrumb();
|
|
68
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
69
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
70
|
+
});
|
|
71
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with a start event with an linked Form and Start Process Instance', async () => {
|
|
72
|
+
await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
|
|
73
|
+
timeout: 120000,
|
|
74
|
+
});
|
|
75
|
+
await modelerCreatePage.enterDiagramName(processName);
|
|
76
|
+
await (0, sleep_1.sleep)(15000);
|
|
77
|
+
await modelerCreatePage.clickStartEventElement();
|
|
78
|
+
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
79
|
+
await modelerCreatePage.clickNameInput();
|
|
80
|
+
await modelerCreatePage.fillNameInput(processName);
|
|
81
|
+
await modelerCreatePage.clickIdInput();
|
|
82
|
+
await modelerCreatePage.fillIdInput(processName);
|
|
83
|
+
await modelerCreatePage.clickStartEventElement();
|
|
84
|
+
await (0, sleep_1.sleep)(20000);
|
|
85
|
+
await modelerCreatePage.hoverOnStartEvent();
|
|
86
|
+
await modelerCreatePage.clickEmbedFormButton();
|
|
87
|
+
await modelerCreatePage.clickForm(formName);
|
|
88
|
+
await modelerCreatePage.clickEmbedButton();
|
|
89
|
+
await modelerCreatePage.clickAppendElementButton();
|
|
90
|
+
await modelerCreatePage.clickAppendEndEventButton();
|
|
91
|
+
await (0, sleep_1.sleep)(20000);
|
|
92
|
+
await modelerCreatePage.runProcessInstance();
|
|
93
|
+
});
|
|
94
|
+
await SM_8_10_1.test.step('View Process Instance in Operate and check if process is complete', async () => {
|
|
95
|
+
await navigationPage.goToOperate();
|
|
96
|
+
await operateHomePage.clickProcessesTab();
|
|
97
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
98
|
+
const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
99
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
(0, SM_8_10_1.test)('Timer Event User Flow @tasklistV2', async ({ modelerHomePage, modelerCreatePage, operateHomePage, operateProcessInstancePage, operateProcessesPage, navigationPage, }) => {
|
|
103
|
+
const processName = 'Timer_Event_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
104
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
105
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
106
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
107
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
108
|
+
});
|
|
109
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with Timer Event and Deploy Diagram', async () => {
|
|
110
|
+
await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
|
|
111
|
+
timeout: 120000,
|
|
112
|
+
});
|
|
113
|
+
await modelerCreatePage.enterDiagramName(processName);
|
|
114
|
+
await (0, sleep_1.sleep)(10000);
|
|
115
|
+
await modelerCreatePage.clickStartEventElement();
|
|
116
|
+
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
117
|
+
await modelerCreatePage.assertNameInput(processName);
|
|
118
|
+
await modelerCreatePage.clickStartEventElement();
|
|
119
|
+
await modelerCreatePage.clickAppendElementButton();
|
|
120
|
+
await modelerCreatePage.clickIntermediateBoundaryEvent();
|
|
121
|
+
await modelerCreatePage.clickChangeTypeButton();
|
|
122
|
+
await modelerCreatePage.clickTimerEventOption();
|
|
123
|
+
await modelerCreatePage.clickTimerEventSettings();
|
|
124
|
+
await modelerCreatePage.selectTimerType('timeDuration');
|
|
125
|
+
await modelerCreatePage.clickTimerValue();
|
|
126
|
+
await modelerCreatePage.fillTimerValue('PT60S');
|
|
127
|
+
await modelerCreatePage.clickAppendElementButton();
|
|
128
|
+
await modelerCreatePage.clickAppendEndEventButton();
|
|
129
|
+
await (0, sleep_1.sleep)(1000);
|
|
130
|
+
await modelerCreatePage.runProcessInstance();
|
|
131
|
+
});
|
|
132
|
+
await SM_8_10_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
133
|
+
await navigationPage.goToOperate();
|
|
134
|
+
await (0, test_1.expect)(operateHomePage.processesTab).toBeVisible({ timeout: 120000 });
|
|
135
|
+
await operateHomePage.clickProcessesTab();
|
|
136
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
137
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
138
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
(0, SM_8_10_1.test)('Conditional Events - Deploy, verify in Operate and verify process in Optimize dashboard @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeDashboardPage, }) => {
|
|
142
|
+
SM_8_10_1.test.slow();
|
|
143
|
+
const bpmnFileName = 'Conditional_Events_All.bpmn';
|
|
144
|
+
const processName = 'Conditional Events Auto-Run';
|
|
145
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and upload BPMN file', async () => {
|
|
146
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
147
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
148
|
+
await modelerHomePage.clickUploadFilesButton();
|
|
149
|
+
await (0, fileUpload_1.uploadFile)(page, bpmnFileName);
|
|
150
|
+
});
|
|
151
|
+
await SM_8_10_1.test.step('Open uploaded BPMN diagram', async () => {
|
|
152
|
+
await (0, sleep_1.sleep)(5000);
|
|
153
|
+
await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
|
|
154
|
+
});
|
|
155
|
+
await SM_8_10_1.test.step('Deploy and run process with variable', async () => {
|
|
156
|
+
const variables = '{"myVar": 8}';
|
|
157
|
+
await modelerCreatePage.runProcessInstance(variables);
|
|
158
|
+
});
|
|
159
|
+
await SM_8_10_1.test.step('View process instance in Operate and verify completion', async () => {
|
|
160
|
+
await navigationPage.goToOperate();
|
|
161
|
+
await operateHomePage.clickProcessesTab();
|
|
162
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
163
|
+
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry(60000, 15);
|
|
164
|
+
await operateProcessInstancePage.assertProcessVariableContainsText('myVar', '8');
|
|
165
|
+
});
|
|
166
|
+
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
167
|
+
await SM_8_10_1.test.step('Navigate to Optimize and verify process in dashboard', async () => {
|
|
168
|
+
await navigationPage.goToOptimize();
|
|
169
|
+
await optimizeHomePage.clickDashboardLink();
|
|
170
|
+
await (0, sleep_1.sleep)(60000);
|
|
171
|
+
await page.reload();
|
|
172
|
+
await optimizeDashboardPage.clickFilterTable();
|
|
173
|
+
await optimizeDashboardPage.fillFilterTable(processName);
|
|
174
|
+
await optimizeDashboardPage.processAssertion(processName);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
});
|