@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,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertReportWithRefreshes = exports.createReportForProcess = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const UtilitiesPage_1 = require("../SM-8.10/UtilitiesPage");
|
|
6
|
+
const UtilitiesPage_2 = require("../SM-8.10/UtilitiesPage");
|
|
7
|
+
const createReportForProcess = async (optimizeCollectionsPage, optimizeReportPage, processName) => {
|
|
8
|
+
let retries = 1000; // big number as this can struggle when many processes are running at once
|
|
9
|
+
while (retries > 0) {
|
|
10
|
+
try {
|
|
11
|
+
await optimizeCollectionsPage.clickCreateNewButton();
|
|
12
|
+
await optimizeCollectionsPage.clickReportOption();
|
|
13
|
+
await optimizeReportPage.clickProcessSelectionButton();
|
|
14
|
+
await optimizeReportPage.waitUntilUserTaskProcessIsVisible(processName);
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
await optimizeReportPage.clickCancelButton();
|
|
19
|
+
}
|
|
20
|
+
retries--;
|
|
21
|
+
(0, test_1.expect)(retries).toBeGreaterThan(0);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.createReportForProcess = createReportForProcess;
|
|
25
|
+
const assertReportWithRefreshes = async (page, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, reportName, locator, text) => {
|
|
26
|
+
let retries = 1000; // big number as this can struggle when many processes are running at once
|
|
27
|
+
while (retries > 0) {
|
|
28
|
+
try {
|
|
29
|
+
await optimizeHomePage.clickCollectionsLink();
|
|
30
|
+
await (0, UtilitiesPage_1.assertPageTextWithRetry)(page, reportName, false);
|
|
31
|
+
await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
|
|
32
|
+
await (0, UtilitiesPage_2.assertLocatorVisibleWithRetry)(page, locator, text, 0);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
// nothing to do. Just loop back to the collections
|
|
37
|
+
}
|
|
38
|
+
retries--;
|
|
39
|
+
(0, test_1.expect)(retries).toBeGreaterThan(0);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.assertReportWithRefreshes = assertReportWithRefreshes;
|
|
@@ -325,7 +325,10 @@ class ModelerCreatePage {
|
|
|
325
325
|
await this.elemendIdInput.click();
|
|
326
326
|
}
|
|
327
327
|
async fillElementIdInput(id) {
|
|
328
|
+
await (0, test_1.expect)(this.elemendIdInput).toBeVisible();
|
|
328
329
|
await this.elemendIdInput.fill(id);
|
|
330
|
+
await (0, test_1.expect)(this.elemendIdInput).toHaveValue(id);
|
|
331
|
+
await (0, sleep_1.sleep)(1000);
|
|
329
332
|
}
|
|
330
333
|
async clickStartEventElement() {
|
|
331
334
|
await this.startEventElement.click();
|
|
@@ -19,6 +19,7 @@ declare class PlayPage {
|
|
|
19
19
|
readonly loadingInstanceDetailsText: Locator;
|
|
20
20
|
readonly retryButton: Locator;
|
|
21
21
|
readonly restartProcess: Locator;
|
|
22
|
+
readonly completedMessage: Locator;
|
|
22
23
|
constructor(page: Page);
|
|
23
24
|
waitForCompleteJobButtonToBeAvailable(): Promise<void>;
|
|
24
25
|
clickCompleteJobButton(): Promise<void>;
|
|
@@ -26,6 +26,7 @@ class PlayPage {
|
|
|
26
26
|
loadingInstanceDetailsText;
|
|
27
27
|
retryButton;
|
|
28
28
|
restartProcess;
|
|
29
|
+
completedMessage;
|
|
29
30
|
constructor(page) {
|
|
30
31
|
this.page = page;
|
|
31
32
|
this.completeJobButton = page
|
|
@@ -59,6 +60,7 @@ class PlayPage {
|
|
|
59
60
|
this.restartProcess = this.page.getByRole('button', {
|
|
60
61
|
name: 'Restart process',
|
|
61
62
|
});
|
|
63
|
+
this.completedMessage = this.page.getByText(/completed manually/i);
|
|
62
64
|
}
|
|
63
65
|
async waitForCompleteJobButtonToBeAvailable() {
|
|
64
66
|
await (0, test_1.expect)(this.completeJobButton).toBeVisible({
|
|
@@ -157,10 +159,10 @@ class PlayPage {
|
|
|
157
159
|
if (incidentText > 0) {
|
|
158
160
|
throw new Error('Process has an incident instead of completing');
|
|
159
161
|
}
|
|
160
|
-
await (0, test_1.expect)(this.
|
|
162
|
+
await (0, test_1.expect)(this.completedMessage.first()).toBeVisible({
|
|
161
163
|
timeout: maxWaitTimeSeconds,
|
|
162
164
|
});
|
|
163
|
-
await (0, test_1.expect)(this.
|
|
165
|
+
await (0, test_1.expect)(this.completedMessage.first()).not.toBeVisible({
|
|
164
166
|
timeout: 60000,
|
|
165
167
|
});
|
|
166
168
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,190 @@
|
|
|
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 apiHelpers_1 = require("../../utils/apiHelpers");
|
|
6
|
+
const sleep_1 = require("../../utils/sleep");
|
|
7
|
+
const randomName_1 = require("../../utils/randomName");
|
|
8
|
+
const CLUSTER_VAR_NAMES = {
|
|
9
|
+
ORIGINAL_JSON: 'ORIGINAL_API_INFO',
|
|
10
|
+
UPDATABLE_JSON: 'UPDATABLE_API_INFO',
|
|
11
|
+
ORIGINAL_STRING: 'ORIGINAL_APP_VERSION',
|
|
12
|
+
UPDATABLE_STRING: 'UPDATABLE_APP_VERSION',
|
|
13
|
+
};
|
|
14
|
+
function getConfigByType(type) {
|
|
15
|
+
const configs = {
|
|
16
|
+
JSON: {
|
|
17
|
+
processName: 'Cluster Variable Original JSON',
|
|
18
|
+
processNameUpdatable: 'Cluster Variable Updatable JSON',
|
|
19
|
+
taskName: 'Preview JSON cluster variables',
|
|
20
|
+
originalVariableName: CLUSTER_VAR_NAMES.ORIGINAL_JSON,
|
|
21
|
+
updatableVariableName: CLUSTER_VAR_NAMES.UPDATABLE_JSON,
|
|
22
|
+
originalValue: originalJsonClusterVariableValue,
|
|
23
|
+
operateVariableName: 'URL',
|
|
24
|
+
randomValuePrefix: 'https://updated.api.com',
|
|
25
|
+
},
|
|
26
|
+
String: {
|
|
27
|
+
processName: 'Cluster Variable Original String',
|
|
28
|
+
processNameUpdatable: 'Cluster Variable Updatable String',
|
|
29
|
+
taskName: 'Preview String cluster variable',
|
|
30
|
+
originalVariableName: CLUSTER_VAR_NAMES.ORIGINAL_STRING,
|
|
31
|
+
updatableVariableName: CLUSTER_VAR_NAMES.UPDATABLE_STRING,
|
|
32
|
+
originalValue: originalStringClusterVariableValue,
|
|
33
|
+
operateVariableName: 'APP_VERSION_VALUE',
|
|
34
|
+
randomValuePrefix: 'v3.0.0-updated',
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
return configs[type];
|
|
38
|
+
}
|
|
39
|
+
let authToken;
|
|
40
|
+
let originalJsonClusterVariableValue;
|
|
41
|
+
let originalStringClusterVariableValue;
|
|
42
|
+
let jsonProcessKeyDisplay;
|
|
43
|
+
let jsonProcessKeyUpdate;
|
|
44
|
+
let stringProcessKeyDisplay;
|
|
45
|
+
let stringProcessKeyUpdate;
|
|
46
|
+
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
47
|
+
SM_8_10_1.test.describe('Cluster Variables User Flows', () => {
|
|
48
|
+
SM_8_10_1.test.beforeAll(async () => {
|
|
49
|
+
authToken = await (0, apiHelpers_1.authSmAPI)();
|
|
50
|
+
await Promise.all([
|
|
51
|
+
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_JSON, process.env.CLUSTER_VARIABLE_JSON_VALUE),
|
|
52
|
+
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_JSON, process.env.CLUSTER_VARIABLE_JSON_VALUE),
|
|
53
|
+
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_STRING, process.env.CLUSTER_VARIABLE_STRING_VALUE),
|
|
54
|
+
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_STRING, process.env.CLUSTER_VARIABLE_STRING_VALUE),
|
|
55
|
+
]);
|
|
56
|
+
originalJsonClusterVariableValue = JSON.parse(process.env.CLUSTER_VARIABLE_JSON_VALUE);
|
|
57
|
+
originalStringClusterVariableValue =
|
|
58
|
+
process.env.CLUSTER_VARIABLE_STRING_VALUE;
|
|
59
|
+
const deployments = [
|
|
60
|
+
{
|
|
61
|
+
path: './resources/cluster_variables/cluster_variable_json_readonly.bpmn',
|
|
62
|
+
assignTo: 'jsonProcessKeyDisplay',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: './resources/cluster_variables/cluster_variable_json_mutable.bpmn',
|
|
66
|
+
assignTo: 'jsonProcessKeyUpdate',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
path: './resources/cluster_variables/cluster_variable_json_form.form',
|
|
70
|
+
assignTo: null,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
path: './resources/cluster_variables/cluster_variable_string_readonly.bpmn',
|
|
74
|
+
assignTo: 'stringProcessKeyDisplay',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
path: './resources/cluster_variables/cluster_variable_string_mutable.bpmn',
|
|
78
|
+
assignTo: 'stringProcessKeyUpdate',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
path: './resources/cluster_variables/cluster_variable_string_form.form',
|
|
82
|
+
assignTo: null,
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
const deploymentResults = await Promise.all(deployments.map((d) => (0, apiHelpers_1.deployProcess)(d.path, authToken)));
|
|
86
|
+
jsonProcessKeyDisplay = deploymentResults[0];
|
|
87
|
+
jsonProcessKeyUpdate = deploymentResults[1];
|
|
88
|
+
stringProcessKeyDisplay = deploymentResults[3];
|
|
89
|
+
stringProcessKeyUpdate = deploymentResults[4];
|
|
90
|
+
});
|
|
91
|
+
SM_8_10_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
92
|
+
await navigationPage.goToOperate((testInfo.workerIndex + 1) * 1000);
|
|
93
|
+
});
|
|
94
|
+
SM_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
95
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
96
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
97
|
+
});
|
|
98
|
+
SM_8_10_1.test.describe('Global cluster variable', () => {
|
|
99
|
+
const testConfigs = [
|
|
100
|
+
{
|
|
101
|
+
type: 'JSON',
|
|
102
|
+
processKeyDisplay: () => jsonProcessKeyDisplay,
|
|
103
|
+
processKeyUpdate: () => jsonProcessKeyUpdate,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'String',
|
|
107
|
+
processKeyDisplay: () => stringProcessKeyDisplay,
|
|
108
|
+
processKeyUpdate: () => stringProcessKeyUpdate,
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
for (const config of testConfigs) {
|
|
112
|
+
(0, SM_8_10_1.test)(`User views ${config.type} cluster variable in Tasklist from readonly process and completes task`, async ({ navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, taskPanelPage, taskDetailsPage, }) => {
|
|
113
|
+
SM_8_10_1.test.slow();
|
|
114
|
+
const derived = getConfigByType(config.type);
|
|
115
|
+
const instanceKey = await (0, apiHelpers_1.createProcessInstance)(String(config.processKeyDisplay()), authToken);
|
|
116
|
+
await SM_8_10_1.test.step('User can access the process on operate', async () => {
|
|
117
|
+
await operateHomePage.clickProcessesTab();
|
|
118
|
+
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
119
|
+
await operateProcessesPage.clickProcessInstanceLink(derived.processName);
|
|
120
|
+
await operateProcessInstancePage.assertActiveTokenIsPresent();
|
|
121
|
+
});
|
|
122
|
+
await SM_8_10_1.test.step(`User can view the process with ${config.type} cluster variable on tasklist`, async () => {
|
|
123
|
+
await navigationPage.goToTasklist();
|
|
124
|
+
await (0, sleep_1.sleep)(5000);
|
|
125
|
+
await taskPanelPage.openTask(derived.taskName);
|
|
126
|
+
await taskDetailsPage.clickAssignToMeButton();
|
|
127
|
+
});
|
|
128
|
+
await SM_8_10_1.test.step(`User can view the value of ${config.type} cluster variable and complete the task`, async () => {
|
|
129
|
+
if (config.type === 'JSON') {
|
|
130
|
+
for (const value of Object.values(derived.originalValue)) {
|
|
131
|
+
await taskDetailsPage.assertTextIsPresent(String(value));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
await taskDetailsPage.assertTextIsPresent(String(derived.originalValue));
|
|
136
|
+
}
|
|
137
|
+
await taskDetailsPage.clickCompleteTaskButton();
|
|
138
|
+
});
|
|
139
|
+
await SM_8_10_1.test.step('User can assert the process is completed on Operate', async () => {
|
|
140
|
+
await navigationPage.goToOperate();
|
|
141
|
+
await operateHomePage.clickProcessesTab();
|
|
142
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
143
|
+
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
144
|
+
await operateProcessesPage.clickProcessInstanceLink(derived.processName);
|
|
145
|
+
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
for (const config of testConfigs) {
|
|
150
|
+
(0, SM_8_10_1.test)(`User updates ${config.type} cluster variable in Admin UI and verifies changes in Operate`, async ({ navigationPage, ocIdentityHomePage, ocIdentityClusterVariablesPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
151
|
+
SM_8_10_1.test.slow();
|
|
152
|
+
const derived = getConfigByType(config.type);
|
|
153
|
+
const randomRawValue = await (0, randomName_1.randomNameAgregator)(derived.randomValuePrefix);
|
|
154
|
+
const newValue = config.type === 'JSON'
|
|
155
|
+
? JSON.stringify({
|
|
156
|
+
endpoint: randomRawValue,
|
|
157
|
+
timeout_ms: '5000',
|
|
158
|
+
array: ['updated_item1', 'updated_item2'],
|
|
159
|
+
})
|
|
160
|
+
: JSON.stringify(randomRawValue);
|
|
161
|
+
await SM_8_10_1.test.step('User navigates to Admin UI', async () => {
|
|
162
|
+
await navigationPage.goToOCIdentity();
|
|
163
|
+
});
|
|
164
|
+
await SM_8_10_1.test.step('User navigates to Cluster Variables tab', async () => {
|
|
165
|
+
await ocIdentityHomePage.clickClusterVariablesTab();
|
|
166
|
+
});
|
|
167
|
+
await SM_8_10_1.test.step(`User verifies ${config.type} cluster variable exists`, async () => {
|
|
168
|
+
await ocIdentityClusterVariablesPage.assertVariableExists(derived.updatableVariableName);
|
|
169
|
+
});
|
|
170
|
+
await SM_8_10_1.test.step(`User updates the ${config.type} cluster variable value`, async () => {
|
|
171
|
+
await ocIdentityClusterVariablesPage.editVariable(derived.updatableVariableName, newValue);
|
|
172
|
+
});
|
|
173
|
+
await SM_8_10_1.test.step(`User creates a process instance with the updated ${config.type} cluster variable`, async () => {
|
|
174
|
+
const instanceKey = await (0, apiHelpers_1.createProcessInstance)(String(config.processKeyUpdate()), authToken);
|
|
175
|
+
await SM_8_10_1.test.step('User navigates to the process instance on Operate', async () => {
|
|
176
|
+
await navigationPage.goToOperate();
|
|
177
|
+
await operateHomePage.clickProcessesTab();
|
|
178
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
179
|
+
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
180
|
+
await operateProcessesPage.clickProcessInstanceLink(derived.processNameUpdatable);
|
|
181
|
+
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
182
|
+
});
|
|
183
|
+
await SM_8_10_1.test.step(`User verifies the updated ${config.type} cluster variable value is present in process variables`, async () => {
|
|
184
|
+
await operateProcessInstancePage.assertProcessVariableContainsText(derived.operateVariableName, randomRawValue);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,260 @@
|
|
|
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 UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
7
|
+
const sleep_1 = require("../../utils/sleep");
|
|
8
|
+
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
9
|
+
SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
10
|
+
SM_8_10_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
11
|
+
await navigationPage.goToModeler((testInfo.workerIndex + 1) * 1000);
|
|
12
|
+
});
|
|
13
|
+
SM_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
14
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
15
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
16
|
+
});
|
|
17
|
+
(0, SM_8_10_1.test)('REST Connector No Auth User Flow', async ({ page, operateHomePage, modelerHomePage, operateProcessInstancePage, modelerCreatePage, connectorSettingsPage, operateProcessesPage, connectorMarketplacePage, navigationPage, }) => {
|
|
18
|
+
SM_8_10_1.test.slow();
|
|
19
|
+
const processName = 'REST_Connector_No_Auth_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
20
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
21
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
22
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
23
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
24
|
+
});
|
|
25
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector and Start Process Instance', async () => {
|
|
26
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/no-auth-test', 'noAuth', 'body');
|
|
27
|
+
await modelerCreatePage.runProcessInstance();
|
|
28
|
+
await (0, sleep_1.sleep)(20000);
|
|
29
|
+
});
|
|
30
|
+
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
31
|
+
await navigationPage.goToOperate();
|
|
32
|
+
await operateHomePage.clickProcessesTab();
|
|
33
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
34
|
+
const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
35
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
36
|
+
await (0, test_1.expect)(page.getByTestId('variables-list')).toBeVisible({
|
|
37
|
+
timeout: 30000,
|
|
38
|
+
});
|
|
39
|
+
(0, test_1.expect)((await operateProcessInstancePage.connectorResultVariableName('status')).isVisible()).toBeTruthy();
|
|
40
|
+
await (0, test_1.expect)(page.getByText('"Awesome!"')).toBeVisible({
|
|
41
|
+
timeout: 60000,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
(0, SM_8_10_1.test)('REST Connector Bearer Token Auth User Flow', async ({ page, operateHomePage, modelerHomePage, modelerCreatePage, connectorSettingsPage, navigationPage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, }) => {
|
|
46
|
+
SM_8_10_1.test.slow();
|
|
47
|
+
const processName = 'REST_Connector_Bearer_Auth_Process' +
|
|
48
|
+
(await (0, _setup_1.generateRandomStringAsync)(3));
|
|
49
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
50
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
51
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
52
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
53
|
+
});
|
|
54
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector with Basic Auth and Start Process Instance', async () => {
|
|
55
|
+
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'bearer', '{message:response.body}');
|
|
56
|
+
await modelerCreatePage.runProcessInstance();
|
|
57
|
+
await (0, _setup_1.performBearerTokenAuthPostRequest)('https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'thisisabearertoken');
|
|
58
|
+
await (0, sleep_1.sleep)(20000);
|
|
59
|
+
});
|
|
60
|
+
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
61
|
+
await navigationPage.goToOperate();
|
|
62
|
+
await operateHomePage.clickProcessesTab();
|
|
63
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
64
|
+
const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
65
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
66
|
+
await (0, test_1.expect)(page.getByTestId('variables-list')).toBeVisible({
|
|
67
|
+
timeout: 90000,
|
|
68
|
+
});
|
|
69
|
+
(0, test_1.expect)((await operateProcessInstancePage.connectorResultVariableName('message')).isVisible()).toBeTruthy();
|
|
70
|
+
await (0, test_1.expect)(page.getByText('"Awesome!"')).toBeVisible({
|
|
71
|
+
timeout: 60000,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
(0, SM_8_10_1.test)('Message Start Event Webhook Connector No Auth User Flow', async ({ modelerHomePage, navigationPage, modelerCreatePage, request, operateHomePage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, connectorSettingsPage, }) => {
|
|
76
|
+
SM_8_10_1.test.slow();
|
|
77
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
78
|
+
const processName = 'Start_Event_Webhook_Connector_No_Auth_Process' + randomString;
|
|
79
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
80
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
81
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
82
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
83
|
+
});
|
|
84
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector and Deploy Diagram', async () => {
|
|
85
|
+
await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
|
|
86
|
+
timeout: 60000,
|
|
87
|
+
});
|
|
88
|
+
await modelerCreatePage.enterDiagramName(processName);
|
|
89
|
+
await (0, sleep_1.sleep)(1000);
|
|
90
|
+
await modelerCreatePage.clickCanvas();
|
|
91
|
+
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
92
|
+
await modelerCreatePage.clickIdInput();
|
|
93
|
+
await modelerCreatePage.fillIdInput(processName);
|
|
94
|
+
await modelerCreatePage.assertNameInput(processName);
|
|
95
|
+
await (0, sleep_1.sleep)(1000);
|
|
96
|
+
await modelerCreatePage.clickStartEventElement();
|
|
97
|
+
await modelerCreatePage.clickChangeTypeButton();
|
|
98
|
+
try {
|
|
99
|
+
await (0, test_1.expect)(modelerCreatePage.webhookMessageStartEventConnectorOption).toBeVisible({
|
|
100
|
+
timeout: 15000,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
await modelerCreatePage.clickMarketPlaceButton();
|
|
105
|
+
await connectorMarketplacePage.clickSearchForConnectorTextbox();
|
|
106
|
+
await connectorMarketplacePage.fillSearchForConnectorTextbox('Webhook Connector');
|
|
107
|
+
await (0, sleep_1.sleep)(10000);
|
|
108
|
+
await connectorMarketplacePage.downloadConnectorToProject();
|
|
109
|
+
}
|
|
110
|
+
await modelerCreatePage.clickWebhookMessageStartEventConnectorOption();
|
|
111
|
+
await connectorSettingsPage.clickWebhookConfigurationTab();
|
|
112
|
+
await modelerCreatePage.clickWebhookIdInput();
|
|
113
|
+
await modelerCreatePage.clearWebhookIdInput();
|
|
114
|
+
await modelerCreatePage.fillWebhookIdInput('test-webhook-id' + randomString);
|
|
115
|
+
await (0, sleep_1.sleep)(10000);
|
|
116
|
+
await modelerCreatePage.clickAppendElementButton();
|
|
117
|
+
await modelerCreatePage.clickAppendEndEventButton();
|
|
118
|
+
await (0, sleep_1.sleep)(10000);
|
|
119
|
+
await modelerCreatePage.deployProcessInstance();
|
|
120
|
+
await (0, sleep_1.sleep)(20000);
|
|
121
|
+
});
|
|
122
|
+
await SM_8_10_1.test.step('Make Authorization Request', async () => {
|
|
123
|
+
const baseURL = process.env.PLAYWRIGHT_BASE_URL ||
|
|
124
|
+
`http://gke-${process.env.BASE_URL}.ci.distro.ultrawombat.com`;
|
|
125
|
+
const response = await request.post(`${baseURL}/connectors/inbound/test-webhook-id${randomString}`);
|
|
126
|
+
await (0, test_1.expect)(response.status()).toBe(200);
|
|
127
|
+
});
|
|
128
|
+
await SM_8_10_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
129
|
+
await navigationPage.goToOperate();
|
|
130
|
+
await operateHomePage.clickProcessesTab();
|
|
131
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
132
|
+
const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
133
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
(0, SM_8_10_1.test)('Connector Secrets User Flow', async ({ page, operateHomePage, modelerHomePage, navigationPage, modelerCreatePage, connectorSettingsPage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, }) => {
|
|
137
|
+
SM_8_10_1.test.slow();
|
|
138
|
+
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
139
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
140
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
141
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
142
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
143
|
+
});
|
|
144
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
145
|
+
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: '{{secrets.username}}', password: '{{secrets.password}}' });
|
|
146
|
+
await modelerCreatePage.runProcessInstance();
|
|
147
|
+
await (0, sleep_1.sleep)(20000);
|
|
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: 90000,
|
|
157
|
+
});
|
|
158
|
+
await (0, test_1.expect)(page.getByTestId('variable-message').getByText('"Message from Mock!"')).toBeVisible({ timeout: 180000 });
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
(0, SM_8_10_1.test)('Intermediate Event Webhook Connector No Auth User Flow', async ({ modelerHomePage, modelerCreatePage, request, operateHomePage, operateProcessInstancePage, operateProcessesPage, navigationPage, connectorMarketplacePage, connectorSettingsPage, }) => {
|
|
162
|
+
SM_8_10_1.test.slow();
|
|
163
|
+
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
164
|
+
const processName = 'Intermediate_Event_Webhook_Connector_No_Auth_Process' + randomString;
|
|
165
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
166
|
+
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
167
|
+
await modelerHomePage.clickDiagramTypeDropdown();
|
|
168
|
+
await modelerHomePage.clickBpmnTemplateOption();
|
|
169
|
+
});
|
|
170
|
+
await SM_8_10_1.test.step('Create BPMN Diagram with Intermediate Event Webhook Connector and Run Diagram', async () => {
|
|
171
|
+
await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
|
|
172
|
+
timeout: 120000,
|
|
173
|
+
});
|
|
174
|
+
await modelerCreatePage.enterDiagramName(processName);
|
|
175
|
+
await (0, sleep_1.sleep)(1000);
|
|
176
|
+
await modelerCreatePage.clickCanvas();
|
|
177
|
+
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
178
|
+
await modelerCreatePage.clickIdInput();
|
|
179
|
+
await modelerCreatePage.fillIdInput(processName);
|
|
180
|
+
await modelerCreatePage.assertNameInput(processName);
|
|
181
|
+
await (0, sleep_1.sleep)(1000);
|
|
182
|
+
await modelerCreatePage.clickStartEventElement();
|
|
183
|
+
await modelerCreatePage.clickAppendElementButton();
|
|
184
|
+
await modelerCreatePage.clickIntermediateBoundaryEvent();
|
|
185
|
+
await modelerCreatePage.clickChangeTypeButton();
|
|
186
|
+
try {
|
|
187
|
+
await (0, test_1.expect)(modelerCreatePage.webhookMessageStartEventConnectorOption).toBeVisible({
|
|
188
|
+
timeout: 15000,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
await modelerCreatePage.clickMarketPlaceButton();
|
|
193
|
+
await connectorMarketplacePage.clickSearchForConnectorTextbox();
|
|
194
|
+
await connectorMarketplacePage.fillSearchForConnectorTextbox('Webhook Connector');
|
|
195
|
+
await (0, sleep_1.sleep)(10000);
|
|
196
|
+
await connectorMarketplacePage.downloadConnectorToProject();
|
|
197
|
+
}
|
|
198
|
+
await modelerCreatePage.clickIntermediateWebhookConnectorOption();
|
|
199
|
+
await connectorSettingsPage.clickCorrelationTab();
|
|
200
|
+
await connectorSettingsPage.clickWebhookConfigurationTab();
|
|
201
|
+
await modelerCreatePage.clickWebhookIdInput();
|
|
202
|
+
await modelerCreatePage.clearWebhookIdInput();
|
|
203
|
+
await modelerCreatePage.fillWebhookIdInput('test-webhook-intermediate' + randomString);
|
|
204
|
+
await modelerCreatePage.clickCorrelationKeyProcessInput();
|
|
205
|
+
await modelerCreatePage.fillCorrelationKeyProcessInput('"test"');
|
|
206
|
+
await modelerCreatePage.clickCorrelationKeyPayloadInput();
|
|
207
|
+
await modelerCreatePage.fillCorrelationKeyPayloadInput('"test"');
|
|
208
|
+
await modelerCreatePage.clickAppendElementButton();
|
|
209
|
+
await modelerCreatePage.clickAppendEndEventButton();
|
|
210
|
+
await (0, sleep_1.sleep)(10000);
|
|
211
|
+
await modelerCreatePage.runProcessInstance();
|
|
212
|
+
await (0, sleep_1.sleep)(20000);
|
|
213
|
+
});
|
|
214
|
+
await SM_8_10_1.test.step('Make Authorization Request', async () => {
|
|
215
|
+
const baseURL = process.env.PLAYWRIGHT_BASE_URL ||
|
|
216
|
+
`http://gke-${process.env.BASE_URL}.ci.distro.ultrawombat.com`;
|
|
217
|
+
const response = await request.post(`${baseURL}/connectors/inbound/test-webhook-intermediate${randomString}`, {
|
|
218
|
+
data: {
|
|
219
|
+
test: 'test',
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
if (response.status() !== 200) {
|
|
223
|
+
console.error(`Authorization Request ${baseURL}/connectors/inbound/test-webhook-intermediate${randomString} failed with response ${response.status()}`);
|
|
224
|
+
throw new Error(`Webhook request failed with status ${response.status()}`);
|
|
225
|
+
}
|
|
226
|
+
await (0, sleep_1.sleep)(60000);
|
|
227
|
+
});
|
|
228
|
+
await SM_8_10_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
|
|
229
|
+
await navigationPage.goToOperate();
|
|
230
|
+
await operateHomePage.clickProcessesTab();
|
|
231
|
+
await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
|
|
232
|
+
const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
|
|
233
|
+
(0, test_1.expect)(result).toBe('completed');
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
//Skipped due to bug 1252: https://github.com/camunda/c8-cross-component-e2e-tests/issues/1252
|
|
237
|
+
SM_8_10_1.test.skip('Connectors Timer Event User Flow', async ({ page, modelerHomePage, modelerCreatePage, connectorMarketplacePage, connectorTemplatePage, navigationPage, operateProcessInstancePage, operateHomePage, operateProcessesPage, }) => {
|
|
238
|
+
SM_8_10_1.test.slow();
|
|
239
|
+
const processName = 'Connectors_Timer_Event_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
240
|
+
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
241
|
+
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, connectorTemplatePage);
|
|
242
|
+
});
|
|
243
|
+
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
244
|
+
await navigationPage.goToOperate();
|
|
245
|
+
await operateHomePage.clickProcessesTab();
|
|
246
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
247
|
+
await operateProcessInstancePage.activeIconAssertion();
|
|
248
|
+
await operateProcessInstancePage.completedIconAssertion();
|
|
249
|
+
await (0, test_1.expect)(page.getByText('["20A","20B"]')).toBeVisible({
|
|
250
|
+
timeout: 60000,
|
|
251
|
+
});
|
|
252
|
+
await (0, test_1.expect)(page.getByText('seatNumbers')).toBeVisible({
|
|
253
|
+
timeout: 60000,
|
|
254
|
+
});
|
|
255
|
+
await (0, test_1.expect)(page.getByText('paymentRequestId')).toBeVisible({
|
|
256
|
+
timeout: 60000,
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
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 test_1 = require("@playwright/test");
|
|
6
|
+
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
7
|
+
SM_8_10_1.test.describe('Console User Flow Tests', () => {
|
|
8
|
+
const defaultTags = ['dev', 'custom', 'stage', 'prod', 'test'];
|
|
9
|
+
const customPropertyDescription = 'This is the main integration environment for the Camunda Platform.';
|
|
10
|
+
SM_8_10_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
11
|
+
await navigationPage.goToConsole((testInfo.workerIndex + 1) * 1000);
|
|
12
|
+
});
|
|
13
|
+
SM_8_10_1.test.afterEach(async ({ page }, testInfo) => {
|
|
14
|
+
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
15
|
+
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
16
|
+
});
|
|
17
|
+
(0, SM_8_10_1.test)('Custom Tags', async ({ consoleHomePage, clusterPage }) => {
|
|
18
|
+
await SM_8_10_1.test.step('Navigate to Clusters', async () => {
|
|
19
|
+
await consoleHomePage.clickClusters();
|
|
20
|
+
});
|
|
21
|
+
await SM_8_10_1.test.step('Ensure Custom Tags Appear in Clusters', async () => {
|
|
22
|
+
await clusterPage.assertCustomTagsAreVisible(defaultTags);
|
|
23
|
+
});
|
|
24
|
+
await SM_8_10_1.test.step('Ensure Custom Tags Appear in Cluster Details', async () => {
|
|
25
|
+
await clusterPage.clickClusterLink();
|
|
26
|
+
await clusterPage.assertCustomTagsAreVisible(defaultTags);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
(0, SM_8_10_1.test)('Custom Properties', async ({ consoleHomePage, clusterPage, clusterDetailsPage, page, }) => {
|
|
30
|
+
await SM_8_10_1.test.step('Navigate to Cluster Details', async () => {
|
|
31
|
+
await consoleHomePage.clickClusters();
|
|
32
|
+
await clusterPage.clickClusterLink();
|
|
33
|
+
});
|
|
34
|
+
await SM_8_10_1.test.step('Ensure Custom Properties Appear in Console and Navigates Links', async () => {
|
|
35
|
+
await (0, test_1.expect)(clusterDetailsPage.customPropertiesHeading).toBeVisible({
|
|
36
|
+
timeout: 60000,
|
|
37
|
+
});
|
|
38
|
+
await (0, test_1.expect)(page.getByText(customPropertyDescription)).toBeVisible({
|
|
39
|
+
timeout: 60000,
|
|
40
|
+
});
|
|
41
|
+
await clusterDetailsPage.assertCustomPropertyIsNavigated('Link 1', 'Camunda', 'https://camunda.com');
|
|
42
|
+
await clusterDetailsPage.assertCustomPropertyIsNavigated('Link 2', 'Camunda Docs', 'https://docs.camunda.io');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
(0, SM_8_10_1.test)('Default License Key User Flow', async ({ navigationPage, managementIdentityPage, ocIdentityHomePage, modelerHomePage, taskPanelPage, operateHomePage, optimizeHomePage, consoleHomePage, }) => {
|
|
46
|
+
await SM_8_10_1.test.step('Assert Console License Key Tag', async () => {
|
|
47
|
+
await (0, test_1.expect)(consoleHomePage.licenseKeyTagNonProduction).toBeVisible({
|
|
48
|
+
timeout: 60000,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
await SM_8_10_1.test.step('Assert Management Identity License Key Tag', async () => {
|
|
52
|
+
await navigationPage.goToManagementIdentity();
|
|
53
|
+
await (0, test_1.expect)(managementIdentityPage.licenseKeyTagNonProduction).toBeVisible({
|
|
54
|
+
timeout: 60000,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
await SM_8_10_1.test.step('Assert OC Identity License Key Tag', async () => {
|
|
58
|
+
await navigationPage.goToOCIdentity();
|
|
59
|
+
await (0, test_1.expect)(ocIdentityHomePage.licenseKeyTagNonProduction).toBeVisible({
|
|
60
|
+
timeout: 60000,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
await SM_8_10_1.test.step('Assert Web Modeler License Key Tag', async () => {
|
|
64
|
+
await navigationPage.goToModeler();
|
|
65
|
+
await (0, test_1.expect)(modelerHomePage.licenseKeyTagNonProduction).toBeVisible({
|
|
66
|
+
timeout: 60000,
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
await SM_8_10_1.test.step('Assert Tasklist License Key Tag', async () => {
|
|
70
|
+
await navigationPage.goToTasklist();
|
|
71
|
+
await (0, test_1.expect)(taskPanelPage.licenseKeyTagNonProduction).toBeVisible({
|
|
72
|
+
timeout: 60000,
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
await SM_8_10_1.test.step('Assert Operate License Key Tag', async () => {
|
|
76
|
+
await navigationPage.goToOperate();
|
|
77
|
+
await (0, test_1.expect)(operateHomePage.licenseKeyTagNonProduction).toBeVisible({
|
|
78
|
+
timeout: 60000,
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
await SM_8_10_1.test.step('Assert Optimize License Key Tag', async () => {
|
|
82
|
+
await navigationPage.goToOptimize();
|
|
83
|
+
await (0, test_1.expect)(optimizeHomePage.licenseKeyTagNonProduction).toBeVisible({
|
|
84
|
+
timeout: 60000,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|