@camunda/e2e-test-suite 0.0.456 → 0.0.458
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/ClientCredentialsDetailsPage.js +1 -1
- package/dist/pages/8.10/ClusterDetailsPage.js +1 -1
- package/dist/pages/SM-8.6/TaskDetailsPage.js +1 -1
- package/dist/pages/SM-8.7/TaskDetailsPage.js +1 -1
- package/dist/pages/SM-8.8/TaskDetailsPage.js +1 -1
- package/dist/pages/SM-8.8/optimizeReportUtils.js +2 -2
- package/dist/pages/c8Run-8.10/TaskDetailsPage.js +1 -1
- package/dist/pages/c8Run-8.6/TaskDetailsPage.js +1 -1
- package/dist/pages/c8Run-8.7/TaskDetailsPage.js +1 -1
- package/dist/pages/c8Run-8.8/TaskDetailsPage.js +1 -1
- package/dist/pages/c8Run-8.9/TaskDetailsPage.js +1 -1
- package/dist/tests/8.10/aws-connectors-user-flows.spec.js +17 -0
- package/dist/tests/8.10/operate-access-flow.spec.js +7 -3
- package/dist/tests/8.10/test-setup.spec.js +1 -0
- package/dist/utils/connectorSecrets.d.ts +8 -0
- package/dist/utils/connectorSecrets.js +20 -1
- package/package.json +1 -1
- package/resources/connectors/aws/agentcore-runtime.bpmn +70 -0
|
@@ -137,7 +137,7 @@ class ClusterDetailsPage {
|
|
|
137
137
|
this.orchestrationClusterCheckbox = page
|
|
138
138
|
.locator('label')
|
|
139
139
|
.filter({ hasText: /^Orchestration Cluster API$/ });
|
|
140
|
-
this.clientCredentialsLink = (clientCredentials) => page.getByRole('cell', { name: clientCredentials });
|
|
140
|
+
this.clientCredentialsLink = (clientCredentials) => page.getByRole('cell', { name: clientCredentials }).locator('a');
|
|
141
141
|
this.reviewUpdateButton = page.getByRole('button', { name: 'Review Update' });
|
|
142
142
|
this.updateAvailableDialog = page
|
|
143
143
|
.locator('.cds--modal-container')
|
|
@@ -92,7 +92,7 @@ class TaskDetailsPage {
|
|
|
92
92
|
this.tagList = page.getByPlaceholder('Search');
|
|
93
93
|
this.detailsInfo = page.getByTestId('details-info');
|
|
94
94
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
95
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
95
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
96
96
|
this.assignedToMeText = page
|
|
97
97
|
.getByTestId('assignee')
|
|
98
98
|
.getByText('Assigned to me');
|
|
@@ -93,7 +93,7 @@ class TaskDetailsPage {
|
|
|
93
93
|
this.detailsInfo = page.getByTestId('details-info');
|
|
94
94
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
95
95
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
96
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
96
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
97
97
|
this.assignedToMeText = page
|
|
98
98
|
.getByTestId('assignee')
|
|
99
99
|
.getByText('Assigned to me');
|
|
@@ -94,7 +94,7 @@ class TaskDetailsPage {
|
|
|
94
94
|
this.detailsInfo = page.getByTestId('details-info');
|
|
95
95
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
96
96
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
97
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
97
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
98
98
|
this.assignedToMeText = page
|
|
99
99
|
.getByTestId('assignee')
|
|
100
100
|
.getByText('Assigned to me');
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.assertReportWithRefreshes = exports.createReportForProcess = void 0;
|
|
4
4
|
const UtilitiesPage_1 = require("../SM-8.8/UtilitiesPage");
|
|
5
5
|
const createReportForProcess = async (page, optimizeCollectionsPage, optimizeReportPage, processName) => {
|
|
6
|
-
const TOTAL_TIMEOUT_MS =
|
|
6
|
+
const TOTAL_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes (OpenSearch ingestion can be slow)
|
|
7
7
|
const startTime = Date.now();
|
|
8
8
|
let attempt = 0;
|
|
9
9
|
let found = false;
|
|
@@ -38,7 +38,7 @@ const createReportForProcess = async (page, optimizeCollectionsPage, optimizeRep
|
|
|
38
38
|
};
|
|
39
39
|
exports.createReportForProcess = createReportForProcess;
|
|
40
40
|
const assertReportWithRefreshes = async (page, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, reportName, locator, text) => {
|
|
41
|
-
const TOTAL_TIMEOUT_MS =
|
|
41
|
+
const TOTAL_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes (OpenSearch ingestion can be slow)
|
|
42
42
|
const startTime = Date.now();
|
|
43
43
|
let attempt = 0;
|
|
44
44
|
let found = false;
|
|
@@ -91,7 +91,7 @@ class TaskDetailsPage {
|
|
|
91
91
|
this.tagList = page.getByPlaceholder('Search');
|
|
92
92
|
this.detailsInfo = page.getByTestId('details-info');
|
|
93
93
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
94
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
94
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
95
95
|
this.assignedToMeText = this.page
|
|
96
96
|
.getByTestId('assignee')
|
|
97
97
|
.getByText('Assigned to me');
|
|
@@ -91,7 +91,7 @@ class TaskDetailsPage {
|
|
|
91
91
|
this.tagList = page.getByPlaceholder('Search');
|
|
92
92
|
this.detailsInfo = page.getByTestId('details-info');
|
|
93
93
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
94
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
94
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
95
95
|
this.assignedToMeText = this.page
|
|
96
96
|
.getByTestId('assignee')
|
|
97
97
|
.getByText('Assigned to me');
|
|
@@ -91,7 +91,7 @@ class TaskDetailsPage {
|
|
|
91
91
|
this.tagList = page.getByPlaceholder('Search');
|
|
92
92
|
this.detailsInfo = page.getByTestId('details-info');
|
|
93
93
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
94
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
94
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
95
95
|
this.assignedToMeText = this.page
|
|
96
96
|
.getByTestId('assignee')
|
|
97
97
|
.getByText('Assigned to me');
|
|
@@ -91,7 +91,7 @@ class TaskDetailsPage {
|
|
|
91
91
|
this.tagList = page.getByPlaceholder('Search');
|
|
92
92
|
this.detailsInfo = page.getByTestId('details-info');
|
|
93
93
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
94
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
94
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
95
95
|
this.assignedToMeText = this.page
|
|
96
96
|
.getByTestId('assignee')
|
|
97
97
|
.getByText('Assigned to me');
|
|
@@ -91,7 +91,7 @@ class TaskDetailsPage {
|
|
|
91
91
|
this.tagList = page.getByPlaceholder('Search');
|
|
92
92
|
this.detailsInfo = page.getByTestId('details-info');
|
|
93
93
|
this.textInput = page.locator('[class="fjs-input"]');
|
|
94
|
-
this.taskCompletedBanner = this.page.getByText('Task completed');
|
|
94
|
+
this.taskCompletedBanner = this.page.getByText('Task completed').first();
|
|
95
95
|
this.assignedToMeText = this.page
|
|
96
96
|
.getByTestId('assignee')
|
|
97
97
|
.getByText('Assigned to me');
|
|
@@ -45,4 +45,21 @@ _8_10_1.test.describe('AWS Connectors User Flows', () => {
|
|
|
45
45
|
await operateProcessInstancePage.assertProcessVariableContainsText('retrievedChunks', 'sourceUri');
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
|
+
(0, _8_10_1.test)('AWS AgentCore Runtime - Invoke deployed agent and receive response', async ({ operateHomePage, operateProcessInstancePage, operateProcessesPage, }) => {
|
|
49
|
+
_8_10_1.test.slow();
|
|
50
|
+
const processKey = await (0, apiHelpers_1.deployProcess)('./resources/connectors/aws/agentcore-runtime.bpmn', authToken);
|
|
51
|
+
if (processKey == null) {
|
|
52
|
+
throw new Error('Failed to deploy AgentCore Runtime process');
|
|
53
|
+
}
|
|
54
|
+
const instanceKey = await (0, apiHelpers_1.createProcessInstance)(String(processKey), authToken);
|
|
55
|
+
await _8_10_1.test.step('Process completes and agentResponse output variable is present', async () => {
|
|
56
|
+
await (0, sleep_1.sleep)(15000);
|
|
57
|
+
await operateHomePage.clickProcessesTab();
|
|
58
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
59
|
+
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
60
|
+
await operateProcessesPage.clickProcessInstanceLink('AWS AgentCore Runtime');
|
|
61
|
+
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
62
|
+
await (0, test_1.expect)(operateProcessInstancePage.connectorResultVariableName('agentResponse')).toBeVisible({ timeout: 30000 });
|
|
63
|
+
});
|
|
64
|
+
});
|
|
48
65
|
});
|
|
@@ -11,11 +11,15 @@ _8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
|
11
11
|
_8_10_1.test.describe('Operate access requires authentication @tasklistV2', () => {
|
|
12
12
|
let clientName;
|
|
13
13
|
const clusterName = 'Test Cluster';
|
|
14
|
-
_8_10_1.test.afterEach(async ({ page, clusterDetailsPage }, testInfo) => {
|
|
14
|
+
_8_10_1.test.afterEach(async ({ page, homePage, clusterPage, clusterDetailsPage }, testInfo) => {
|
|
15
15
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
16
16
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
if (clientName) {
|
|
18
|
+
await homePage.clickClusters();
|
|
19
|
+
await clusterPage.clickClusterLink(clusterName);
|
|
20
|
+
await clusterDetailsPage.clickAPITab();
|
|
21
|
+
await clusterDetailsPage.deleteAPIClientsIfExist(clientName);
|
|
22
|
+
}
|
|
19
23
|
});
|
|
20
24
|
_8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
21
25
|
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
@@ -41,6 +41,7 @@ _8_10_1.test.describe('Cluster Setup Tests', () => {
|
|
|
41
41
|
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
|
|
42
42
|
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
|
|
43
43
|
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.bedrockKbSecretsValues);
|
|
44
|
+
await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.agentcoreSecretsValues);
|
|
44
45
|
}
|
|
45
46
|
});
|
|
46
47
|
(0, _8_10_1.test)('Create AWS Cluster', async ({ page, loginPage, homePage, clusterPage, clusterDetailsPage, clusterSecretsPage, }, testInfo) => {
|
|
@@ -18,6 +18,10 @@ export declare const bedrockKbSecretsValues: {
|
|
|
18
18
|
name: string;
|
|
19
19
|
value: string;
|
|
20
20
|
}[];
|
|
21
|
+
export declare const agentcoreSecretsValues: {
|
|
22
|
+
name: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}[];
|
|
21
25
|
export declare const connectorSecretsValues: {
|
|
22
26
|
name: string;
|
|
23
27
|
value: string;
|
|
@@ -31,6 +35,10 @@ export declare const allConnectorSecrets: {
|
|
|
31
35
|
name: string;
|
|
32
36
|
value: string;
|
|
33
37
|
}[];
|
|
38
|
+
AgentCore: {
|
|
39
|
+
name: string;
|
|
40
|
+
value: string;
|
|
41
|
+
}[];
|
|
34
42
|
GCP: {
|
|
35
43
|
name: string;
|
|
36
44
|
value: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.allConnectorSecrets = exports.connectorSecretsValues = exports.bedrockKbSecretsValues = exports.azureSecretsValues = exports.gcpSecretsValues = exports.openAiSecretsValues = exports.awsSecretsValues = void 0;
|
|
3
|
+
exports.allConnectorSecrets = exports.connectorSecretsValues = exports.agentcoreSecretsValues = exports.bedrockKbSecretsValues = exports.azureSecretsValues = exports.gcpSecretsValues = exports.openAiSecretsValues = exports.awsSecretsValues = void 0;
|
|
4
4
|
exports.awsSecretsValues = [
|
|
5
5
|
{ name: 'IDP_AWS_REGION', value: process.env.IDP_AWS_REGION },
|
|
6
6
|
{ name: 'IDP_AWS_BUCKET_NAME', value: process.env.IDP_AWS_BUCKET_NAME },
|
|
@@ -139,6 +139,24 @@ exports.bedrockKbSecretsValues = [
|
|
|
139
139
|
value: process.env.BEDROCK_KB_KNOWLEDGE_BASE_ID,
|
|
140
140
|
},
|
|
141
141
|
];
|
|
142
|
+
exports.agentcoreSecretsValues = [
|
|
143
|
+
{
|
|
144
|
+
name: 'AGENTCORE_AWS_ACCESS_KEY',
|
|
145
|
+
value: process.env.AGENTCORE_AWS_ACCESS_KEY,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'AGENTCORE_AWS_SECRET_KEY',
|
|
149
|
+
value: process.env.AGENTCORE_AWS_SECRET_KEY,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: 'AGENTCORE_AWS_REGION',
|
|
153
|
+
value: process.env.AGENTCORE_AWS_REGION,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'AGENTCORE_AGENT_RUNTIME_ARN',
|
|
157
|
+
value: process.env.AGENTCORE_AGENT_RUNTIME_ARN,
|
|
158
|
+
},
|
|
159
|
+
];
|
|
142
160
|
exports.connectorSecretsValues = [
|
|
143
161
|
{
|
|
144
162
|
name: 'endpoint_url',
|
|
@@ -150,6 +168,7 @@ exports.connectorSecretsValues = [
|
|
|
150
168
|
exports.allConnectorSecrets = {
|
|
151
169
|
AWS: exports.awsSecretsValues,
|
|
152
170
|
BedrockKB: exports.bedrockKbSecretsValues,
|
|
171
|
+
AgentCore: exports.agentcoreSecretsValues,
|
|
153
172
|
GCP: exports.gcpSecretsValues,
|
|
154
173
|
Azure: [...exports.azureSecretsValues, ...exports.openAiSecretsValues],
|
|
155
174
|
Connectors: exports.connectorSecretsValues,
|
package/package.json
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
|
3
|
+
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
|
4
|
+
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
|
|
5
|
+
xmlns:zeebe="http://camunda.org/schema/zeebe/1.0"
|
|
6
|
+
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
|
|
7
|
+
xmlns:modeler="http://camunda.org/schema/modeler/1.0"
|
|
8
|
+
id="Definitions_1"
|
|
9
|
+
targetNamespace="http://bpmn.io/schema/bpmn"
|
|
10
|
+
exporter="Camunda Web Modeler"
|
|
11
|
+
exporterVersion="1.0.0"
|
|
12
|
+
modeler:executionPlatform="Camunda Cloud"
|
|
13
|
+
modeler:executionPlatformVersion="8.10.0">
|
|
14
|
+
<bpmn:process id="aws_agentcore_runtime" name="AWS AgentCore Runtime" isExecutable="true">
|
|
15
|
+
<bpmn:startEvent id="StartEvent_1">
|
|
16
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
17
|
+
</bpmn:startEvent>
|
|
18
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="AgentCoreTask" />
|
|
19
|
+
<bpmn:serviceTask id="AgentCoreTask" name="Invoke Agent Runtime"
|
|
20
|
+
zeebe:modelerTemplate="io.camunda.connectors.aws.bedrock.agentcore.runtime.v1"
|
|
21
|
+
zeebe:modelerTemplateVersion="1">
|
|
22
|
+
<bpmn:extensionElements>
|
|
23
|
+
<zeebe:taskDefinition type="io.camunda:aws-bedrock-agentcore-runtime:1" retries="3" />
|
|
24
|
+
<zeebe:ioMapping>
|
|
25
|
+
<zeebe:input source="credentials" target="authentication.type" />
|
|
26
|
+
<zeebe:input source="{{secrets.AGENTCORE_AWS_ACCESS_KEY}}" target="authentication.accessKey" />
|
|
27
|
+
<zeebe:input source="{{secrets.AGENTCORE_AWS_SECRET_KEY}}" target="authentication.secretKey" />
|
|
28
|
+
<zeebe:input source="{{secrets.AGENTCORE_AWS_REGION}}" target="configuration.region" />
|
|
29
|
+
<zeebe:input source="{{secrets.AGENTCORE_AGENT_RUNTIME_ARN}}" target="input.agentRuntimeArn" />
|
|
30
|
+
<zeebe:input source="={inputText: "What is the capital of France?"}" target="input.payload" />
|
|
31
|
+
</zeebe:ioMapping>
|
|
32
|
+
<zeebe:taskHeaders>
|
|
33
|
+
<zeebe:header key="elementTemplateVersion" value="1" />
|
|
34
|
+
<zeebe:header key="elementTemplateId" value="io.camunda.connectors.aws.bedrock.agentcore.runtime.v1" />
|
|
35
|
+
<zeebe:header key="resultVariable" value="agentCoreResult" />
|
|
36
|
+
<zeebe:header key="resultExpression" value="={agentResponse: response, sessionId: sessionId}" />
|
|
37
|
+
<zeebe:header key="retryBackoff" value="PT0S" />
|
|
38
|
+
</zeebe:taskHeaders>
|
|
39
|
+
</bpmn:extensionElements>
|
|
40
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
41
|
+
<bpmn:outgoing>Flow_2</bpmn:outgoing>
|
|
42
|
+
</bpmn:serviceTask>
|
|
43
|
+
<bpmn:sequenceFlow id="Flow_2" sourceRef="AgentCoreTask" targetRef="EndEvent_1" />
|
|
44
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
45
|
+
<bpmn:incoming>Flow_2</bpmn:incoming>
|
|
46
|
+
</bpmn:endEvent>
|
|
47
|
+
</bpmn:process>
|
|
48
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
49
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="aws_agentcore_runtime">
|
|
50
|
+
<bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
|
|
51
|
+
<dc:Bounds x="152" y="82" width="36" height="36" />
|
|
52
|
+
</bpmndi:BPMNShape>
|
|
53
|
+
<bpmndi:BPMNShape id="AgentCoreTask_di" bpmnElement="AgentCoreTask">
|
|
54
|
+
<dc:Bounds x="240" y="60" width="100" height="80" />
|
|
55
|
+
<bpmndi:BPMNLabel />
|
|
56
|
+
</bpmndi:BPMNShape>
|
|
57
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
58
|
+
<dc:Bounds x="392" y="82" width="36" height="36" />
|
|
59
|
+
</bpmndi:BPMNShape>
|
|
60
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
61
|
+
<di:waypoint x="188" y="100" />
|
|
62
|
+
<di:waypoint x="240" y="100" />
|
|
63
|
+
</bpmndi:BPMNEdge>
|
|
64
|
+
<bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2">
|
|
65
|
+
<di:waypoint x="340" y="100" />
|
|
66
|
+
<di:waypoint x="392" y="100" />
|
|
67
|
+
</bpmndi:BPMNEdge>
|
|
68
|
+
</bpmndi:BPMNPlane>
|
|
69
|
+
</bpmndi:BPMNDiagram>
|
|
70
|
+
</bpmn:definitions>
|