@camunda/e2e-test-suite 0.0.699 → 0.0.701

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.
@@ -165,13 +165,7 @@ SM_8_10_1.test.describe('Web Modeler User Flow Tests', () => {
165
165
  });
166
166
  await operateHomePage.clickProcessesTab();
167
167
  await operateProcessesPage.clickProcessInstanceLink(processName);
168
- // NOTE: The Business ID field is set via the Web Modeler run configuration
169
- // above, but the Operate build shipped by the SM-8.10 chart
170
- // (camunda/camunda:8.10.0-alpha1) does not yet render a "Business ID" field
171
- // in the instance header, so asserting it here fails. Re-enable
172
- // assertBusinessIdVisible(businessId) once the deployed Operate image renders
173
- // it. Tracked in https://github.com/camunda/c8-cross-component-e2e-tests/issues/2510
174
- // (SaaS tests/8.10 keeps the assertion — that Operate build already has it.)
168
+ await operateProcessInstancePage.assertBusinessIdVisible(businessId);
175
169
  await operateProcessInstancePage.assertProcessVariableContainsText('orderNumber', '"A12BH98"');
176
170
  await operateProcessInstancePage.assertProcessVariableContainsText('amount', '185.34');
177
171
  });
@@ -44,7 +44,7 @@ c8Run_8_9_1.test.describe('API tests for V2 @tasklistV2', () => {
44
44
  await (0, test_1.expect)(async () => {
45
45
  const connectorsStatus = await request.get(process.env.C8RUN_CONNECTORS_API_URL_LATEST + '/actuator/health');
46
46
  await (0, apiHelpers_1.assertResponseStatus)(connectorsStatus, 200);
47
- }).toPass(constants_1.defaultAssertionOptions);
47
+ }).toPass({ ...constants_1.defaultAssertionOptions, timeout: 120000 });
48
48
  });
49
49
  (0, c8Run_8_9_1.test)('Get a inbound connectors list', async ({ request }) => {
50
50
  const connectorsInboundList = await request.get(process.env.C8RUN_CONNECTORS_API_URL_LATEST + '/inbound');
@@ -7,7 +7,9 @@ const zeebeClient_1 = require("../../utils/zeebeClient");
7
7
  const test_1 = require("@playwright/test");
8
8
  const sleep_1 = require("../../utils/sleep");
9
9
  const constants_1 = require("../../utils/constants");
10
+ const apiHelpers_1 = require("../../utils/apiHelpers");
10
11
  c8Run_8_9_1.test.beforeAll(async () => {
12
+ await (0, apiHelpers_1.waitForConnectorsReady)();
11
13
  await Promise.all([
12
14
  (0, zeebeClient_1.deploy)('./resources/Basic_Auth_REST_Connector.bpmn'),
13
15
  (0, zeebeClient_1.deploy)('./resources/Intermediate_Event_Webhook_Connector_No_Auth_Process.bpmn'),
@@ -31,6 +31,7 @@ c8Run_8_9_1.test.beforeAll(async () => {
31
31
  await (0, apiHelpers_1.validateMcpServerHealth)('http://127.0.0.1:12001'); // No auth
32
32
  await (0, apiHelpers_1.validateMcpServerHealth)('http://127.0.0.1:12002'); // Basic auth
33
33
  await (0, apiHelpers_1.validateMcpServerHealth)('http://127.0.0.1:12004'); // OAuth
34
+ await (0, apiHelpers_1.waitForConnectorsReady)();
34
35
  await (0, keycloakHelpers_1.validateKeycloakHealth)();
35
36
  bearerToken = await (0, keycloakHelpers_1.getAccessToken)();
36
37
  await (0, zeebeClient_1.deploy)([
@@ -12,6 +12,7 @@ c8Run_8_9_1.test.beforeAll(async () => {
12
12
  return;
13
13
  }
14
14
  await (0, apiHelpers_1.validateMcpServerHealth)();
15
+ await (0, apiHelpers_1.waitForConnectorsReady)();
15
16
  await (0, zeebeClient_1.deploy)(['./resources/mcp_server/mcp_remote_client_operations.bpmn']);
16
17
  await (0, zeebeClient_1.createInstances)('mcp_remote_client', 1, 1);
17
18
  await (0, sleep_1.sleep)(2000);
@@ -14,6 +14,7 @@ export declare function authSaasAPI(audience?: string, clusterType?: string): Pr
14
14
  export declare function authSmAPI(): Promise<string>;
15
15
  export declare function authC8runAPI(name: string, password: string): Promise<void>;
16
16
  export declare function validateMcpServerHealth(serverUrl?: string): Promise<APIResponse>;
17
+ export declare function waitForConnectorsReady(baseUrl?: string | undefined, timeoutMs?: number): Promise<void>;
17
18
  export declare function deployProcess(filePath: string, authToken?: string, environment?: 'saas' | 'sm', clusterType?: string): Promise<number | null>;
18
19
  export declare function createProcessInstance(processDefinitionKey: string, authToken?: string, environment?: 'saas' | 'sm', clusterType?: string, variables?: Record<string, unknown>): Promise<string>;
19
20
  export declare function createJsonClusterVariable(authToken?: string, environment?: 'saas' | 'sm', customVariableName?: string, customVariableValue?: string, clusterType?: string): Promise<void>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.updateCollectionScope = exports.createSingleProcessReport = exports.createDashboard = exports.createCollection = exports.getOptimizeCookieSm = exports.getOptimizeCoockie = exports.createStringClusterVariable = exports.createJsonClusterVariable = exports.createProcessInstance = exports.deployProcess = exports.validateMcpServerHealth = exports.authC8runAPI = exports.authSmAPI = exports.authSaasAPI = exports.authAPI = exports.buildZeebeApiUrl = exports.retryOn500 = exports.sendRequestAndAssertResponse = exports.assertResponseStatus = exports.getApiRequestContext = void 0;
6
+ exports.updateCollectionScope = exports.createSingleProcessReport = exports.createDashboard = exports.createCollection = exports.getOptimizeCookieSm = exports.getOptimizeCoockie = exports.createStringClusterVariable = exports.createJsonClusterVariable = exports.createProcessInstance = exports.deployProcess = exports.waitForConnectorsReady = exports.validateMcpServerHealth = exports.authC8runAPI = exports.authSmAPI = exports.authSaasAPI = exports.authAPI = exports.buildZeebeApiUrl = exports.retryOn500 = exports.sendRequestAndAssertResponse = exports.assertResponseStatus = exports.getApiRequestContext = void 0;
7
7
  const test_1 = require("@playwright/test");
8
8
  const sleep_1 = require("./sleep");
9
9
  const fs_1 = __importDefault(require("fs"));
@@ -267,6 +267,28 @@ async function validateMcpServerHealth(serverUrl) {
267
267
  }
268
268
  }
269
269
  exports.validateMcpServerHealth = validateMcpServerHealth;
270
+ // ---- Connectors Runtime Health Check ----
271
+ // Polls the c8Run connectors runtime health endpoint until it reports healthy,
272
+ // so connector jobs (REST, inbound webhook, MCP client) get processed and
273
+ // inbound subscriptions are registered before tests deploy/create instances.
274
+ // Guards against the c8Run startup race where the connectors runtime on :8086
275
+ // comes up later than Zeebe/Operate, leaving process instances stuck "active"
276
+ // and webhook endpoints unregistered.
277
+ async function waitForConnectorsReady(baseUrl = process.env.C8RUN_CONNECTORS_API_URL_LATEST, timeoutMs = 120000) {
278
+ if (!baseUrl) {
279
+ throw new Error('waitForConnectorsReady: missing connectors API URL ' +
280
+ '(C8RUN_CONNECTORS_API_URL_LATEST).');
281
+ }
282
+ const healthEndpoint = `${baseUrl}/actuator/health`;
283
+ apiRequestContext = await getApiRequestContext();
284
+ await (0, test_1.expect)(async () => {
285
+ const response = await apiRequestContext.get(healthEndpoint, {
286
+ timeout: 10000,
287
+ });
288
+ (0, test_1.expect)(response.status()).toBe(200);
289
+ }).toPass({ intervals: [5000, 10000, 15000], timeout: timeoutMs });
290
+ }
291
+ exports.waitForConnectorsReady = waitForConnectorsReady;
270
292
  // ---- Zeebe: API helpers ----
271
293
  async function deployProcess(filePath, authToken, environment, clusterType) {
272
294
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.699",
3
+ "version": "0.0.701",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",