@camunda/e2e-test-suite 0.0.676 → 0.0.678
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/pages/8.10/Authorization.d.ts +1 -0
- package/dist/pages/8.10/Authorization.js +9 -13
- package/dist/pages/8.10/HomePage.js +7 -0
- package/dist/pages/8.10/UtilitiesPage.js +2 -2
- package/dist/tests/8.10/orchestration-cluster-mcp-server/api/mcp-processes-call-tools.spec.js +18 -15
- package/package.json +1 -1
|
@@ -26,6 +26,7 @@ declare class Authorization {
|
|
|
26
26
|
resourceId: string;
|
|
27
27
|
accessPermissions: string[];
|
|
28
28
|
}): Promise<void>;
|
|
29
|
+
selectResourceTypeFromDialog(resourceType: string): Promise<void>;
|
|
29
30
|
deleteAuthorization(resourceId: string, resourceType: string): Promise<void>;
|
|
30
31
|
}
|
|
31
32
|
export { Authorization };
|
|
@@ -117,19 +117,7 @@ class Authorization {
|
|
|
117
117
|
.first();
|
|
118
118
|
await (0, test_1.expect)(ownerMenuItem).toBeVisible({ timeout: 60000 });
|
|
119
119
|
await ownerMenuItem.click({ timeout: 20000 });
|
|
120
|
-
|
|
121
|
-
// commit camunda/camunda 8c72d29 (2026-05-26, "fix: prefill and lock
|
|
122
|
-
// resource type in create authorization modal"). The modal now
|
|
123
|
-
// initializes `resourceType` to whatever tab the user opened the
|
|
124
|
-
// modal from (the test calls clickResourceTab/clickComponentTab/etc.
|
|
125
|
-
// before createAuthorization), and the Dropdown is rendered with a
|
|
126
|
-
// hardcoded `disabled` prop — see
|
|
127
|
-
// identity/client/src/pages/authorizations/modals/add-modal/AddModal.tsx
|
|
128
|
-
// line ~184. There is no test-side interaction that can enable it,
|
|
129
|
-
// and no interaction is needed: the form already has the right
|
|
130
|
-
// value. Skip the dropdown click entirely. (8.9 still uses the older
|
|
131
|
-
// unlocked Dropdown, which is why its same-shaped page object
|
|
132
|
-
// continues to pass.)
|
|
120
|
+
await this.selectResourceTypeFromDialog(authorization.resourceType);
|
|
133
121
|
await this.createAuthorizationResourceIdField.fill(authorization.resourceId);
|
|
134
122
|
for (const permission of authorization.accessPermissions) {
|
|
135
123
|
await this.createAuthorizationAccessPermission(permission).click({
|
|
@@ -148,6 +136,14 @@ class Authorization {
|
|
|
148
136
|
clickLocator: this.selectResourceTypeTab(authorization.resourceType),
|
|
149
137
|
});
|
|
150
138
|
}
|
|
139
|
+
async selectResourceTypeFromDialog(resourceType) {
|
|
140
|
+
const isDisabled = await this.createAuthorizationResourceTypeDropdown.isDisabled();
|
|
141
|
+
if (isDisabled) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
await this.createAuthorizationResourceTypeDropdown.click();
|
|
145
|
+
await this.createAuthorizationResourceTypeOption(resourceType).click();
|
|
146
|
+
}
|
|
151
147
|
async deleteAuthorization(resourceId, resourceType) {
|
|
152
148
|
const locator = this.deleteAuthorizationButton(resourceId);
|
|
153
149
|
await (0, expectLocatorWithPagination_1.expectLocatorWithPagination)(this.page, locator, {
|
|
@@ -50,6 +50,13 @@ class HomePage {
|
|
|
50
50
|
}
|
|
51
51
|
async clickClusters() {
|
|
52
52
|
await (0, test_1.expect)(this.clusterTab).toBeVisible({ timeout: 30000 });
|
|
53
|
+
// Dismiss any modal that may be intercepting pointer events on the nav link.
|
|
54
|
+
if (await this.informationDialog
|
|
55
|
+
.last()
|
|
56
|
+
.isVisible({ timeout: 2000 })
|
|
57
|
+
.catch(() => false)) {
|
|
58
|
+
await this.closeInformationDialog();
|
|
59
|
+
}
|
|
53
60
|
await this.clusterTab.click({ timeout: 15000 });
|
|
54
61
|
}
|
|
55
62
|
async clickDashboard() {
|
|
@@ -287,7 +287,7 @@ async function disableRBA(clusterName, homePage, clusterPage, clusterDetailsPage
|
|
|
287
287
|
await clusterDetailsPage.clickSettingsTab();
|
|
288
288
|
await clusterDetailsPage.disableAuthorizations();
|
|
289
289
|
await homePage.clickClusters();
|
|
290
|
-
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName);
|
|
290
|
+
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName, 120000, 600000);
|
|
291
291
|
await clusterPage.clickClusterLink(clusterName);
|
|
292
292
|
await (0, test_1.expect)(clusterDetailsPage.rbaEnabledMessage.first()).not.toBeVisible({
|
|
293
293
|
timeout: 30000,
|
|
@@ -321,7 +321,7 @@ async function enableAuthorizations(clusterName, homePage, clusterPage, clusterD
|
|
|
321
321
|
await clusterDetailsPage.clickSettingsTab();
|
|
322
322
|
await clusterDetailsPage.enableAuthorizations();
|
|
323
323
|
await homePage.clickClusters();
|
|
324
|
-
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName);
|
|
324
|
+
await clusterPage.assertClusterHealthyStatusWithRetry(clusterName, 120000, 600000);
|
|
325
325
|
await clusterPage.clickClusterLink(clusterName);
|
|
326
326
|
await clusterDetailsPage.assertComponentsHealth();
|
|
327
327
|
}
|
package/dist/tests/8.10/orchestration-cluster-mcp-server/api/mcp-processes-call-tools.spec.js
CHANGED
|
@@ -176,22 +176,25 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server — /mcp/processes tools
|
|
|
176
176
|
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
177
177
|
let instanceKey = smokeProcessInstanceKey;
|
|
178
178
|
await _8_10_1.test.step('Resolve process instance key', async () => {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
179
|
+
await (0, test_1.expect)(async () => {
|
|
180
|
+
if (!instanceKey) {
|
|
181
|
+
// Attempt to find any mcpAsToolProcess instance via the search API.
|
|
182
|
+
// Wrapped in toPass so propagation lag doesn't cause a one-shot failure.
|
|
183
|
+
const searchRes = await apiContext.post(processInstancesSearchUrl, {
|
|
184
|
+
headers: (0, mcpHelpers_1.buildMcpHeaders)(authToken, mcpSessionId),
|
|
185
|
+
data: {
|
|
186
|
+
filter: { processDefinitionId: 'mcpAsToolProcess' },
|
|
187
|
+
sort: [{ field: 'processInstanceKey', order: 'desc' }],
|
|
188
|
+
page: { limit: 1 },
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
if (searchRes.ok()) {
|
|
192
|
+
const searchJson = (await searchRes.json());
|
|
193
|
+
instanceKey = searchJson.items[0]?.processInstanceKey ?? null;
|
|
194
|
+
}
|
|
192
195
|
}
|
|
193
|
-
|
|
194
|
-
|
|
196
|
+
(0, test_1.expect)(instanceKey, 'No mcpAsToolProcess instance available for getProcessInstance smoke test').not.toBeNull();
|
|
197
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
195
198
|
});
|
|
196
199
|
await _8_10_1.test.step('Call getProcessInstance tool and verify response', async () => {
|
|
197
200
|
const body = await (0, mcpHelpers_1.callTool)(apiContext, mcpProcessesUrl, authToken, mcpSessionId, 'getProcessInstance', { processInstanceKey: instanceKey });
|