@camunda/e2e-test-suite 0.0.1206 → 0.0.1208
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.
|
@@ -522,15 +522,22 @@ class ModelerHomePage {
|
|
|
522
522
|
await this.page.goto(this.processApplicationUrl, {
|
|
523
523
|
waitUntil: 'domcontentloaded',
|
|
524
524
|
});
|
|
525
|
-
//
|
|
525
|
+
// Up to two reloads before spending the whole budget: processApplicationStore
|
|
526
526
|
// .init() swallows a failed fetch (it only toasts "Yikes! Couldn't
|
|
527
527
|
// retrieve your project" and clears its loading flag), so a transient 5xx
|
|
528
528
|
// leaves a fully rendered page that simply has no process-application
|
|
529
529
|
// breadcrumb -- waiting the full 90s on it can only ever time out, and
|
|
530
|
-
// re-running the store init is the only thing that brings it back.
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
530
|
+
// re-running the store init is the only thing that brings it back. A
|
|
531
|
+
// single reload can itself land on a second transient failure (seen in
|
|
532
|
+
// run 35340608406), so retry the reload once more before falling through
|
|
533
|
+
// to the full-budget wait below.
|
|
534
|
+
const maxReloadAttempts = 2;
|
|
535
|
+
let backInside = false;
|
|
536
|
+
for (let attempt = 0; attempt < maxReloadAttempts && !backInside; attempt++) {
|
|
537
|
+
backInside = await this.becameVisible(this.processApplicationPage.breadcrumb, 45000);
|
|
538
|
+
if (!backInside) {
|
|
539
|
+
await this.page.reload({ waitUntil: 'domcontentloaded' });
|
|
540
|
+
}
|
|
534
541
|
}
|
|
535
542
|
await this.processApplicationPage.waitForProcessApplication();
|
|
536
543
|
await this.dismissBlockingDialog();
|
|
@@ -272,6 +272,14 @@ _8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
272
272
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
273
273
|
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
274
274
|
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.completedIcon, {
|
|
275
|
+
// This flow's REST connector call round-trips to a real AWS
|
|
276
|
+
// endpoint using the secrets above, which can take longer to
|
|
277
|
+
// complete than the suite's default 60s/3-retry budget (seen
|
|
278
|
+
// timing out in run 35340608406). Match the operateBanner budget
|
|
279
|
+
// above rather than the suite default used elsewhere.
|
|
280
|
+
totalTimeout: 120000,
|
|
281
|
+
visibilityTimeout: 30000,
|
|
282
|
+
maxRetries: 5,
|
|
275
283
|
postAction: async () => {
|
|
276
284
|
await page.reload();
|
|
277
285
|
},
|
|
@@ -21,8 +21,20 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - User Task Tools @taskl
|
|
|
21
21
|
throw new Error('Failed to deploy user task tools processes');
|
|
22
22
|
}
|
|
23
23
|
const testFileProcessKey = String(deployedTestFileProcessKey);
|
|
24
|
+
// searchUserTaskVariables (below) returns the task's own VARIABLES
|
|
25
|
+
// (name/value pairs), not fields of the task entity itself -- unlike
|
|
26
|
+
// searchUserTasks/getUserTask, whose responses do carry the task's own
|
|
27
|
+
// userTaskKey. mcp_user_task_test_file.bpmn's user task has no input
|
|
28
|
+
// variables and only writes its output on completion (which this test
|
|
29
|
+
// never reaches), so a process instance started with no variables would
|
|
30
|
+
// have nothing for that call to find, and no amount of retrying or
|
|
31
|
+
// waiting could ever make its response contain testUserTaskKey (run
|
|
32
|
+
// 35340608406 and its retry both failed identically on exactly this).
|
|
33
|
+
// Start the process instance with a marker variable instead, so there is
|
|
34
|
+
// a real value in the task's scope to search for.
|
|
35
|
+
const taskVariableMarker = await (0, _setup_1.generateRandomStringAsync)(10);
|
|
24
36
|
// Create test instance which will create a user task
|
|
25
|
-
const testInstanceKey = await (0, apiHelpers_1.createProcessInstance)(testFileProcessKey, authToken, 'saas', 'agentic_cluster');
|
|
37
|
+
const testInstanceKey = await (0, apiHelpers_1.createProcessInstance)(testFileProcessKey, authToken, 'saas', 'agentic_cluster', { taskVariableMarker });
|
|
26
38
|
// Get the user task key created by the test instance (with retry logic)
|
|
27
39
|
const testUserTaskKey = await (0, userTaskHelpers_1.getUserTaskKeyByProcessInstanceKey)(testInstanceKey, authToken, 'saas', 'agentic_cluster');
|
|
28
40
|
console.log('Creating tools instance with variables:', {
|
|
@@ -36,6 +48,7 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - User Task Tools @taskl
|
|
|
36
48
|
testFileProcessKey,
|
|
37
49
|
testInstanceKey,
|
|
38
50
|
testUserTaskKey,
|
|
51
|
+
taskVariableMarker,
|
|
39
52
|
};
|
|
40
53
|
};
|
|
41
54
|
_8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
@@ -101,8 +114,8 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - User Task Tools @taskl
|
|
|
101
114
|
description: 'search response contains totalItems field',
|
|
102
115
|
},
|
|
103
116
|
{
|
|
104
|
-
text: () => data.
|
|
105
|
-
description: 'search response contains the
|
|
117
|
+
text: () => data.taskVariableMarker,
|
|
118
|
+
description: 'search response contains the variable set on the task',
|
|
106
119
|
},
|
|
107
120
|
],
|
|
108
121
|
},
|