@camunda/e2e-test-suite 0.0.1033 → 0.0.1035
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/SM-8.10/ModelerCreatePage.js +22 -5
- package/dist/pages/SM-8.10/ModelerHomePage.js +22 -5
- package/dist/tests/8.10/agentic-ai-user-flows.spec.js +3 -6
- package/dist/tests/8.10/aws-connectors-user-flows.spec.js +4 -8
- package/dist/tests/8.10/connectors-user-flows.spec.js +2 -4
- package/dist/tests/8.10/idp-user-flows.spec.js +3 -6
- package/dist/tests/8.10/orchestration-cluster-mcp-server/mcp-cluster-tools.spec.js +1 -2
- package/dist/tests/8.10/orchestration-cluster-mcp-server/mcp-incident-tools.spec.js +1 -2
- package/package.json +1 -1
|
@@ -169,7 +169,17 @@ class ModelerCreatePage {
|
|
|
169
169
|
this.diagramBreadcrumb = page.locator('[data-test="breadcrumb-diagram"]');
|
|
170
170
|
this.renameDiagramNameButton = page.getByText('Rename');
|
|
171
171
|
this.diagramNameInput = page.locator('[data-test="editable-input"]');
|
|
172
|
-
|
|
172
|
+
// The rename kebab sits beside the breadcrumb in the app header. The
|
|
173
|
+
// editor's action bar is a <header> too, so it also carries the banner
|
|
174
|
+
// role -- getByRole('banner') alone matches three headers in the editor
|
|
175
|
+
// and pulls in "Additional actions" and "Browse more actions". Only the
|
|
176
|
+
// app header holds the breadcrumb nav, so filter on that. The kebab's own
|
|
177
|
+
// name is shell-dependent ("More actions" today, "<segment label> actions"
|
|
178
|
+
// once the design system derives it from the label), so match either.
|
|
179
|
+
this.moreActionsButton = page
|
|
180
|
+
.getByRole('banner')
|
|
181
|
+
.filter({ has: page.getByRole('navigation') })
|
|
182
|
+
.getByRole('button', { name: /actions$/i });
|
|
173
183
|
this.renameMenuItem = page.getByRole('menuitem', { name: 'Rename' });
|
|
174
184
|
this.renameInput = page.locator('[data-test="rename-input"]');
|
|
175
185
|
this.renameSubmitButton = page.locator('[data-test="rename-submit"]');
|
|
@@ -852,10 +862,17 @@ class ModelerCreatePage {
|
|
|
852
862
|
await this.diagramNameInput.press('Enter', { timeout: 60000 });
|
|
853
863
|
return;
|
|
854
864
|
}
|
|
855
|
-
//
|
|
856
|
-
//
|
|
857
|
-
//
|
|
858
|
-
|
|
865
|
+
// Today the shell renders one kebab for the whole breadcrumb; camunda-hub
|
|
866
|
+
// #28045 gives every segment its own, so take the LAST -- the diagram is
|
|
867
|
+
// the deepest crumb. With one kebab last() is that same button.
|
|
868
|
+
//
|
|
869
|
+
// The header's license tags sit in an ml-auto flex sibling that overlaps
|
|
870
|
+
// the kebab once they render, so a mouse click lands on the tag instead.
|
|
871
|
+
// Open the menu from the keyboard -- same control, reached the way a
|
|
872
|
+
// keyboard user reaches it, and unaffected by what paints over it.
|
|
873
|
+
const diagramActions = this.moreActionsButton.last();
|
|
874
|
+
await diagramActions.focus();
|
|
875
|
+
await diagramActions.press('Enter');
|
|
859
876
|
await this.renameMenuItem.click();
|
|
860
877
|
await (0, test_1.expect)(this.renameInput).toBeVisible({ timeout: 10000 });
|
|
861
878
|
await this.renameInput.fill(name);
|
|
@@ -66,7 +66,17 @@ class ModelerHomePage {
|
|
|
66
66
|
name: 'New project',
|
|
67
67
|
}));
|
|
68
68
|
this.projectNameInput = page.locator('[data-test="editable-input"]');
|
|
69
|
-
|
|
69
|
+
// The rename kebab sits beside the breadcrumb in the app header. The
|
|
70
|
+
// editor's action bar is a <header> too, so it also carries the banner
|
|
71
|
+
// role -- getByRole('banner') alone matches three headers in the editor
|
|
72
|
+
// and pulls in "Additional actions" and "Browse more actions". Only the
|
|
73
|
+
// app header holds the breadcrumb nav, so filter on that. The kebab's own
|
|
74
|
+
// name is shell-dependent ("More actions" today, "<segment label> actions"
|
|
75
|
+
// once the design system derives it from the label), so match either.
|
|
76
|
+
this.moreActionsButton = page
|
|
77
|
+
.getByRole('banner')
|
|
78
|
+
.filter({ has: page.getByRole('navigation') })
|
|
79
|
+
.getByRole('button', { name: /actions$/i });
|
|
70
80
|
this.renameMenuItem = page.getByRole('menuitem', { name: 'Rename' });
|
|
71
81
|
this.renameInput = page.locator('[data-test="rename-input"]');
|
|
72
82
|
this.renameSubmitButton = page.locator('[data-test="rename-submit"]');
|
|
@@ -346,11 +356,18 @@ class ModelerHomePage {
|
|
|
346
356
|
}
|
|
347
357
|
await this.renameViaMoreActions(name);
|
|
348
358
|
}
|
|
349
|
-
//
|
|
350
|
-
//
|
|
351
|
-
//
|
|
359
|
+
// Today the shell renders one kebab for the whole breadcrumb; camunda-hub
|
|
360
|
+
// #28045 gives every segment its own, so take the LAST -- the entity being
|
|
361
|
+
// edited is the deepest crumb. With one kebab last() is that same button.
|
|
362
|
+
//
|
|
363
|
+
// The header's license tags sit in an ml-auto flex sibling that overlaps the
|
|
364
|
+
// kebab once they render, so a mouse click lands on the tag instead. Open the
|
|
365
|
+
// menu from the keyboard -- same control, reached the way a keyboard user
|
|
366
|
+
// reaches it, and unaffected by what paints over it.
|
|
352
367
|
async renameViaMoreActions(name) {
|
|
353
|
-
|
|
368
|
+
const entityActions = this.moreActionsButton.last();
|
|
369
|
+
await entityActions.focus();
|
|
370
|
+
await entityActions.press('Enter');
|
|
354
371
|
await this.renameMenuItem.click();
|
|
355
372
|
await (0, test_1.expect)(this.renameInput).toBeVisible({ timeout: 10000 });
|
|
356
373
|
await this.renameInput.fill(name);
|
|
@@ -70,8 +70,7 @@ _8_10_1.test.describe('Agentic Orchestation User Flows', () => {
|
|
|
70
70
|
});
|
|
71
71
|
_8_10_1.test.describe('AI Agent connector - provider user tests flow', () => {
|
|
72
72
|
for (const params of aiAgentTestCases) {
|
|
73
|
-
|
|
74
|
-
_8_10_1.test.skip(`AI agent with tools provides feedback to user - ${params.provider}`, async ({ appsPage, operateHomePage, operateProcessInstancePage, operateProcessesPage, taskPanelPage, taskDetailsPage, }) => {
|
|
73
|
+
(0, _8_10_1.test)(`AI agent with tools provides feedback to user - ${params.provider}`, async ({ appsPage, operateHomePage, operateProcessInstancePage, operateProcessesPage, taskPanelPage, taskDetailsPage, }) => {
|
|
75
74
|
_8_10_1.test.slow();
|
|
76
75
|
const processKey = await (0, apiHelpers_1.deployProcess)(params.bpmnPath, authToken);
|
|
77
76
|
if (processKey == null) {
|
|
@@ -110,8 +109,7 @@ _8_10_1.test.describe('Agentic Orchestation User Flows', () => {
|
|
|
110
109
|
});
|
|
111
110
|
_8_10_1.test.describe('AI Agent sub process - provider user tests flow', () => {
|
|
112
111
|
for (const params of aiAgentSubProcessTestCases) {
|
|
113
|
-
|
|
114
|
-
_8_10_1.test.skip(`AI agent sub process with tools provides feedback to user - ${params.provider}`, async ({ appsPage, operateHomePage, operateProcessInstancePage, operateProcessesPage, taskPanelPage, taskDetailsPage, }) => {
|
|
112
|
+
(0, _8_10_1.test)(`AI agent sub process with tools provides feedback to user - ${params.provider}`, async ({ appsPage, operateHomePage, operateProcessInstancePage, operateProcessesPage, taskPanelPage, taskDetailsPage, }) => {
|
|
115
113
|
_8_10_1.test.slow();
|
|
116
114
|
const processKey = await (0, apiHelpers_1.deployProcess)(params.bpmnPath, authToken);
|
|
117
115
|
if (processKey == null) {
|
|
@@ -150,8 +148,7 @@ _8_10_1.test.describe('Agentic Orchestation User Flows', () => {
|
|
|
150
148
|
});
|
|
151
149
|
_8_10_1.test.describe('DB Vector Connector User Flow Tests', () => {
|
|
152
150
|
for (const params of dbVectorTestCases) {
|
|
153
|
-
|
|
154
|
-
_8_10_1.test.skip(`DB Vector connector embed via ${params.embedding_provider} and stored on ${params.embedding_store} with source as plain text`, async ({ appsPage, operateHomePage, operateProcessInstancePage, operateProcessesPage, taskPanelPage, taskDetailsPage, }) => {
|
|
151
|
+
(0, _8_10_1.test)(`DB Vector connector embed via ${params.embedding_provider} and stored on ${params.embedding_store} with source as plain text`, async ({ appsPage, operateHomePage, operateProcessInstancePage, operateProcessesPage, taskPanelPage, taskDetailsPage, }) => {
|
|
155
152
|
_8_10_1.test.slow();
|
|
156
153
|
const processKey = await (0, apiHelpers_1.deployProcess)(params.bpmnPath, authToken);
|
|
157
154
|
if (processKey == null) {
|
|
@@ -66,8 +66,7 @@ _8_10_1.test.describe('AWS Connectors User Flows', () => {
|
|
|
66
66
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
67
67
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
68
68
|
});
|
|
69
|
-
|
|
70
|
-
_8_10_1.test.skip('AWS Bedrock AgentCore LTM - Retrieve memory records', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
69
|
+
(0, _8_10_1.test)('AWS Bedrock AgentCore LTM - Retrieve memory records', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
71
70
|
_8_10_1.test.slow();
|
|
72
71
|
const processKey = await (0, apiHelpers_1.deployProcess)('./resources/connectors/aws/bedrock-agentcore-ltm.bpmn', authToken);
|
|
73
72
|
if (processKey == null) {
|
|
@@ -91,8 +90,7 @@ _8_10_1.test.describe('AWS Connectors User Flows', () => {
|
|
|
91
90
|
await operateProcessInstancePage.assertProcessVariableContainsText('agentcoreResult', 'nextToken');
|
|
92
91
|
});
|
|
93
92
|
});
|
|
94
|
-
|
|
95
|
-
_8_10_1.test.skip('AWS Bedrock Knowledge Base - Retrieve relevant chunks from knowledge base', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
93
|
+
(0, _8_10_1.test)('AWS Bedrock Knowledge Base - Retrieve relevant chunks from knowledge base', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
96
94
|
_8_10_1.test.slow();
|
|
97
95
|
const processKey = await (0, apiHelpers_1.deployProcess)('./resources/connectors/aws/bedrock-knowledge-base.bpmn', authToken);
|
|
98
96
|
if (processKey == null) {
|
|
@@ -112,8 +110,7 @@ _8_10_1.test.describe('AWS Connectors User Flows', () => {
|
|
|
112
110
|
await operateProcessInstancePage.assertProcessVariableContainsText('retrievedChunks', 'sourceUri');
|
|
113
111
|
});
|
|
114
112
|
});
|
|
115
|
-
|
|
116
|
-
_8_10_1.test.skip('AWS AgentCore Runtime - Invoke deployed agent and receive response', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
113
|
+
(0, _8_10_1.test)('AWS AgentCore Runtime - Invoke deployed agent and receive response', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
117
114
|
_8_10_1.test.slow();
|
|
118
115
|
const processKey = await (0, apiHelpers_1.deployProcess)('./resources/connectors/aws/agentcore-runtime.bpmn', authToken);
|
|
119
116
|
if (processKey == null) {
|
|
@@ -133,8 +130,7 @@ _8_10_1.test.describe('AWS Connectors User Flows', () => {
|
|
|
133
130
|
// IAM: bedrock-agentcore:StartCodeInterpreterSession,
|
|
134
131
|
// bedrock-agentcore:InvokeCodeInterpreter,
|
|
135
132
|
// bedrock-agentcore:StopCodeInterpreterSession on Resource: *
|
|
136
|
-
|
|
137
|
-
_8_10_1.test.skip('AWS AgentCore Code Interpreter - Execute Python code and receive stdout', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
133
|
+
(0, _8_10_1.test)('AWS AgentCore Code Interpreter - Execute Python code and receive stdout', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
138
134
|
_8_10_1.test.slow();
|
|
139
135
|
const processKey = await (0, apiHelpers_1.deployProcess)('./resources/connectors/aws/agentcore-code-interpreter.bpmn', authToken);
|
|
140
136
|
if (processKey == null) {
|
|
@@ -168,8 +168,7 @@ _8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
168
168
|
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateProcessInstancePage, operateProcessInstancePage.completedIcon, 'Completed icon', 60000);
|
|
169
169
|
});
|
|
170
170
|
});
|
|
171
|
-
|
|
172
|
-
_8_10_1.test.skip('Connector Secrets User Flow - GCP', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, clusterPage, clusterSecretsPage, }) => {
|
|
171
|
+
(0, _8_10_1.test)('Connector Secrets User Flow - GCP', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, clusterPage, clusterSecretsPage, }) => {
|
|
173
172
|
_8_10_1.test.slow();
|
|
174
173
|
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
175
174
|
await _8_10_1.test.step('Navigate to Connectors Secrets', async () => {
|
|
@@ -222,8 +221,7 @@ _8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
222
221
|
});
|
|
223
222
|
});
|
|
224
223
|
});
|
|
225
|
-
|
|
226
|
-
_8_10_1.test.skip('Connector Secrets User Flow - AWS', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
224
|
+
(0, _8_10_1.test)('Connector Secrets User Flow - AWS', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
227
225
|
_8_10_1.test.slow();
|
|
228
226
|
const processName = 'REST_Connector_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
229
227
|
await _8_10_1.test.step('Navigate to Web Modeler', async () => {
|
|
@@ -69,8 +69,7 @@ _8_10_1.test.describe('IDP User Flow Tests', () => {
|
|
|
69
69
|
});
|
|
70
70
|
_8_10_1.test.describe('Unstructured Extraction', () => {
|
|
71
71
|
for (const params of unstructuredTestCases) {
|
|
72
|
-
|
|
73
|
-
_8_10_1.test.skip(`${params.provider} unstructured (${params.model}) - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
72
|
+
(0, _8_10_1.test)(`${params.provider} unstructured (${params.model}) - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
74
73
|
_8_10_1.test.slow();
|
|
75
74
|
idpApplicationName = await (0, randomName_1.randomNameAgregator)(`${params.provider} unstructured` + ' - IDP_Application_Name');
|
|
76
75
|
idpDocumentExtractionTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} unstructured` + ' - IDP_Extraction_Template_Name');
|
|
@@ -144,8 +143,7 @@ _8_10_1.test.describe('IDP User Flow Tests', () => {
|
|
|
144
143
|
});
|
|
145
144
|
_8_10_1.test.describe('Structured Extraction', () => {
|
|
146
145
|
for (const params of structuredTestCases) {
|
|
147
|
-
|
|
148
|
-
_8_10_1.test.skip(`${params.provider} structured - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
146
|
+
(0, _8_10_1.test)(`${params.provider} structured - User creates an idp application with a document extraction template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
149
147
|
_8_10_1.test.slow();
|
|
150
148
|
idpApplicationName = await (0, randomName_1.randomNameAgregator)(`${params.provider} structured` + ' - IDP_Application_Name');
|
|
151
149
|
idpDocumentExtractionTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} structured` + ' - IDP_Extraction_Template_Name');
|
|
@@ -226,8 +224,7 @@ _8_10_1.test.describe('IDP User Flow Tests', () => {
|
|
|
226
224
|
});
|
|
227
225
|
_8_10_1.test.describe('Classification Template', () => {
|
|
228
226
|
for (const params of classificationTestCases) {
|
|
229
|
-
|
|
230
|
-
_8_10_1.test.skip(`${params.provider} classification - User creates an idp application with a classification template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
227
|
+
(0, _8_10_1.test)(`${params.provider} classification - User creates an idp application with a classification template`, async ({ page, idpCreatePage, modelerHomePage, homePage, appsPage, clusterPage, clusterSecretsPage, }) => {
|
|
231
228
|
_8_10_1.test.slow();
|
|
232
229
|
const idpApplicationName = await (0, randomName_1.randomNameAgregator)(`${params.provider} classification` + ' - IDP_Application_Name');
|
|
233
230
|
const idpClassificationTemplateName = await (0, randomName_1.randomNameAgregator)(`${params.provider} classification` +
|
|
@@ -51,8 +51,7 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - Cluster Tools @tasklis
|
|
|
51
51
|
},
|
|
52
52
|
];
|
|
53
53
|
for (const testCase of clusterToolTests) {
|
|
54
|
-
|
|
55
|
-
_8_10_1.test.skip(testCase.name, async ({ homePage, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
54
|
+
(0, _8_10_1.test)(testCase.name, async ({ homePage, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
56
55
|
_8_10_1.test.slow();
|
|
57
56
|
await _8_10_1.test.step('Navigate to completed process in Operate', async () => {
|
|
58
57
|
await homePage.clickClusters();
|
|
@@ -99,8 +99,7 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - Incident Tools @taskli
|
|
|
99
99
|
},
|
|
100
100
|
];
|
|
101
101
|
for (const testCase of incidentToolTests) {
|
|
102
|
-
|
|
103
|
-
_8_10_1.test.skip(testCase.name, async ({ homePage, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
102
|
+
(0, _8_10_1.test)(testCase.name, async ({ homePage, appsPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
104
103
|
_8_10_1.test.slow();
|
|
105
104
|
await _8_10_1.test.step('Navigate to completed process in Operate', async () => {
|
|
106
105
|
await homePage.clickClusters();
|