@camunda/e2e-test-suite 0.0.787 → 0.0.789

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.
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("@playwright/test");
4
+ const _8_10_1 = require("../../fixtures/8.10");
5
+ const _setup_1 = require("../../test-setup.js");
6
+ const UtilitiesPage_1 = require("../../pages/8.10/UtilitiesPage");
7
+ const users_1 = require("../../utils/users");
8
+ const agenticDashboardHelpers_1 = require("../../utils/agenticDashboardHelpers");
9
+ const testUser = (0, users_1.getTestUser)('twentyFirstUser');
10
+ const clusterName = 'Test Cluster';
11
+ _8_10_1.test.describe.configure({ mode: 'parallel' });
12
+ _8_10_1.test.describe('Agentic Control Plane Dashboard UI Tests @agentic-dashboard-ui @8.10', () => {
13
+ _8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
14
+ await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
15
+ });
16
+ _8_10_1.test.afterEach(async ({ page }, testInfo) => {
17
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
18
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
19
+ });
20
+ (0, _8_10_1.test)('Dashboard navigation and default filters render correctly', async ({ page, appsPage, optimizeHomePage, }) => {
21
+ await (0, agenticDashboardHelpers_1.openAgenticControlPlane)(page, appsPage, optimizeHomePage, clusterName);
22
+ const heading = page.getByRole('heading', {
23
+ name: /agentic\s*control\s*plane/i,
24
+ });
25
+ // The dashboard heading confirms the Agentic Control Plane page loaded.
26
+ await (0, test_1.expect)(heading.first()).toBeVisible({ timeout: 30000 });
27
+ await (0, test_1.expect)(page
28
+ .getByText(/total\s*executions|avg\s*execution\s*duration|tool\s*calls/i)
29
+ .first()).toBeVisible({ timeout: 60000 });
30
+ // The process scope filter defaults to the "All processes" placeholder.
31
+ await (0, test_1.expect)(page.getByPlaceholder(/all\s*processes/i)).toBeVisible({
32
+ timeout: 30000,
33
+ });
34
+ });
35
+ (0, _8_10_1.test)('Execution KPI uses Total Executions terminology', async ({ page, appsPage, optimizeHomePage, }) => {
36
+ await (0, agenticDashboardHelpers_1.openAgenticControlPlane)(page, appsPage, optimizeHomePage, clusterName);
37
+ await (0, test_1.expect)(page.getByText(/total\s*executions/i).first()).toBeVisible({
38
+ timeout: 60000,
39
+ });
40
+ await (0, test_1.expect)(page.getByText(/completed\s*agent\s*runs/i)).toHaveCount(0);
41
+ });
42
+ (0, _8_10_1.test)('Execution KPIs Delta tile is visible', async ({ page, appsPage, optimizeHomePage, }) => {
43
+ await (0, agenticDashboardHelpers_1.openAgenticControlPlane)(page, appsPage, optimizeHomePage, clusterName);
44
+ const deltaTile = page
45
+ .getByText(/execution\s*kpis\s*delta|avg\s*execution\s*duration/i)
46
+ .first();
47
+ await (0, test_1.expect)(deltaTile).toBeVisible({ timeout: 60000 });
48
+ });
49
+ (0, _8_10_1.test)('Process filter switches L0 to L1 chart behavior', async ({ page, appsPage, optimizeHomePage, }) => {
50
+ await (0, agenticDashboardHelpers_1.openAgenticControlPlane)(page, appsPage, optimizeHomePage, clusterName);
51
+ const l0Chart = page
52
+ .getByText(/tokens\s*by\s*process|top\s*token\s*consumers\s*by\s*process/i)
53
+ .first();
54
+ await (0, test_1.expect)(l0Chart).toBeVisible({ timeout: 30000 });
55
+ const selected = await (0, agenticDashboardHelpers_1.selectSingleProcessIfPossible)(page);
56
+ (0, test_1.expect)(selected).toBe(true);
57
+ await (0, test_1.expect)(page.getByText(/failure\s*rate\s*by\s*process\s*version/i).first()).toBeVisible({ timeout: 60000 });
58
+ await (0, test_1.expect)(page.getByText(/tokens\s*by\s*process|top\s*token\s*consumers\s*by\s*process/i)).toHaveCount(0);
59
+ });
60
+ (0, _8_10_1.test)('Tool Calls remains aggregate and out-of-scope UI controls are absent', async ({ page, appsPage, optimizeHomePage, }) => {
61
+ await (0, agenticDashboardHelpers_1.openAgenticControlPlane)(page, appsPage, optimizeHomePage, clusterName);
62
+ const toolCalls = page.getByText(/tool\s*calls/i).first();
63
+ await (0, test_1.expect)(toolCalls).toBeVisible({ timeout: 30000 });
64
+ await (0, test_1.expect)(page.getByText(/per-tool|tool\s*name\s*breakdown/i)).toHaveCount(0);
65
+ await (0, test_1.expect)(page.getByText(/reasoning\s*tokens/i)).toHaveCount(0);
66
+ await (0, test_1.expect)(page.getByText(/threshold|alert\s*configuration/i)).toHaveCount(0);
67
+ await (0, test_1.expect)(page.getByText(/healthy|degraded|failing/i)).toHaveCount(0);
68
+ });
69
+ });
@@ -34,4 +34,5 @@ export declare function parseJsonResponseBodies(responses: CapturedResponse[]):
34
34
  export declare function findReportByName(bodies: unknown[], name: string): unknown;
35
35
  export declare function getReportNumericResult(body: unknown): number | undefined;
36
36
  export declare function dashboardHasComparisonTile(definition: unknown): boolean;
37
+ export declare function selectSingleProcessIfPossible(page: Page): Promise<boolean>;
37
38
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dashboardHasComparisonTile = exports.getReportNumericResult = exports.findReportByName = exports.parseJsonResponseBodies = exports.captureDashboardResponses = exports.isLikelyDashboardApiResponse = exports.isReportEvaluateResponse = exports.isAgenticDashboardDefinitionResponse = exports.changeDashboardDateRange = exports.openAgenticControlPlane = exports.clickFirstVisibleByName = exports.LEGACY_TERMINOLOGY = exports.CURRENT_TERMINOLOGY = exports.EXECUTION_REPORT_NAME = exports.REPORT_EVALUATE_PATH_PATTERN = exports.AGENTIC_DASHBOARD_DEFINITION_PATH = void 0;
3
+ exports.selectSingleProcessIfPossible = exports.dashboardHasComparisonTile = exports.getReportNumericResult = exports.findReportByName = exports.parseJsonResponseBodies = exports.captureDashboardResponses = exports.isLikelyDashboardApiResponse = exports.isReportEvaluateResponse = exports.isAgenticDashboardDefinitionResponse = exports.changeDashboardDateRange = exports.openAgenticControlPlane = exports.clickFirstVisibleByName = exports.LEGACY_TERMINOLOGY = exports.CURRENT_TERMINOLOGY = exports.EXECUTION_REPORT_NAME = exports.REPORT_EVALUATE_PATH_PATTERN = exports.AGENTIC_DASHBOARD_DEFINITION_PATH = void 0;
4
4
  const test_1 = require("@playwright/test");
5
5
  exports.AGENTIC_DASHBOARD_DEFINITION_PATH = '/api/dashboard/agentic';
6
6
  exports.REPORT_EVALUATE_PATH_PATTERN = /\/api\/report\/[^/]+\/evaluate/;
@@ -184,3 +184,27 @@ function dashboardHasComparisonTile(definition) {
184
184
  });
185
185
  }
186
186
  exports.dashboardHasComparisonTile = dashboardHasComparisonTile;
187
+ async function selectSingleProcessIfPossible(page) {
188
+ const processFilter = page.getByPlaceholder(/all\s*processes/i).first();
189
+ if (!(await processFilter.isVisible({ timeout: 10000 }).catch(() => false))) {
190
+ return false;
191
+ }
192
+ await processFilter.click({ timeout: 15000 });
193
+ const options = page.getByRole('option');
194
+ await options
195
+ .first()
196
+ .waitFor({ state: 'visible', timeout: 10000 })
197
+ .catch(() => { });
198
+ const optionCount = await options.count();
199
+ for (let i = 0; i < optionCount; i++) {
200
+ const option = options.nth(i);
201
+ const text = (await option.textContent())?.trim().toLowerCase() || '';
202
+ if (text.length > 0 && !text.includes('all process')) {
203
+ await option.click({ timeout: 10000 });
204
+ return true;
205
+ }
206
+ }
207
+ await page.keyboard.press('Escape').catch(() => { });
208
+ return false;
209
+ }
210
+ exports.selectSingleProcessIfPossible = selectSingleProcessIfPossible;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.787",
3
+ "version": "0.0.789",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",