feat: default fields for add Panel and metrics page (#12509)

Design at: dashboards/default-panel-fields
This commit is contained in:
Abhay Padamani
2026-06-09 08:39:09 +00:00
committed by GitHub
parent f5bdf4daaa
commit 03dfc88bfb
40 changed files with 963 additions and 268 deletions
@@ -336,6 +336,9 @@ test.describe("Cross-Linking Multi-Stream testcases", () => {
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.selectStream(STREAM_A);
// Add Panel auto-seeds y_axis_1 = count(_timestamp); remove it to keep
// the original single-column table shape (x-axis only).
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.dashboardPanelActions.addPanelName("CrossLink Single Stream Panel");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -569,6 +569,9 @@ test.describe("Cross-Linking testcases", () => {
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.selectStream(STREAM_NAME);
// Remove the auto-seeded histogram(_timestamp) x so kubernetes_container_name
// is the first column — the cross-link drilldown clicks the first cell.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.dashboardPanelActions.addPanelName("CrossLink Table Panel");
await pm.dashboardPanelActions.savePanel();
@@ -1414,6 +1417,9 @@ test.describe("Cross-Linking testcases", () => {
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.selectStream(STREAM_NAME);
// Remove the auto-seeded histogram(_timestamp) x so kubernetes_container_name
// is the first column — the cross-link drilldown clicks the first cell.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.dashboardPanelActions.addPanelName("Org CrossLink Table Panel");
await pm.dashboardPanelActions.savePanel();
@@ -69,8 +69,6 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await waitForDateTimeButtonToBeEnabled(page);
await pm.dashboardTimeRefresh.setRelative("30", "m");
@@ -198,8 +196,6 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_name",
"filter"
@@ -286,8 +282,6 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await waitForDateTimeButtonToBeEnabled(page);
await pm.dashboardTimeRefresh.setRelative("30", "m");
@@ -392,6 +386,7 @@ test.describe("dashboard filter testcases", () => {
"kubernetes_container_name",
"x"
);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_image",
"y"
@@ -470,7 +465,6 @@ test.describe("dashboard filter testcases", () => {
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -535,7 +529,6 @@ test.describe("dashboard filter testcases", () => {
// Select stream and add Y field
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
await pm.dashboardPanelActions.waitForChartToRender();
@@ -624,7 +617,6 @@ test.describe("dashboard filter testcases", () => {
// Select stream and add fields
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_name",
"b"
@@ -731,6 +723,7 @@ test.describe("dashboard filter testcases", () => {
// Select stream and add fields
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_name",
"y"
@@ -831,8 +824,6 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await waitForDateTimeButtonToBeEnabled(page);
await pm.dashboardTimeRefresh.setRelative("30", "m");
@@ -950,9 +941,6 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
await pm.dashboardPanelActions.waitForChartToRender();
@@ -1051,6 +1039,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1147,9 +1136,6 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
await pm.dashboardPanelActions.waitForChartToRender();
@@ -1245,6 +1231,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1342,6 +1329,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1437,6 +1425,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1532,6 +1521,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1629,6 +1619,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1726,6 +1717,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1823,6 +1815,7 @@ test.describe("dashboard filter testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y-axis field
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -235,6 +235,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
await verifyJoinChipIsVisible(page, STREAMS.APP_USERS);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
@@ -262,6 +263,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
await verifyJoinChipIsVisible(page, STREAMS.APP_USERS);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
@@ -289,6 +291,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
await verifyJoinChipIsVisible(page, STREAMS.APP_USERS);
await pm.chartTypeSelector.searchAndAddField("name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("email", "y");
await pm.chartTypeSelector.searchAndAddField("plan", "y");
@@ -346,6 +349,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
await verifyJoinChipIsVisible(page, STREAMS.SESSIONS);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("device", "y");
await pm.chartTypeSelector.searchAndAddField("browser", "y");
@@ -380,6 +384,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
await verifyJoinChipIsVisible(page, STREAMS.SESSIONS, 1);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.chartTypeSelector.searchAndAddField("status", "y");
@@ -407,6 +412,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
await verifyJoinChipIsVisible(page, STREAMS.SESSIONS);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("device", "y");
await pm.chartTypeSelector.searchAndAddField("browser", "y");
await pm.chartTypeSelector.searchAndAddField("os", "y");
@@ -464,6 +470,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
await pm.chartTypeSelector.searchAndAddField("plan", "y");
@@ -491,6 +498,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("plan", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("bytes", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -516,6 +524,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("plan", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("response_time_ms", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -541,6 +550,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("response_time_ms", "y");
await pm.chartTypeSelector.searchAndAddField("bytes", "y");
@@ -597,6 +607,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("response_time_ms", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
@@ -620,6 +631,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("country", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
@@ -643,6 +655,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("bytes", "y");
await pm.chartTypeSelector.searchAndAddField("plan", "y");
@@ -666,6 +679,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
await pm.chartTypeSelector.searchAndAddField("email", "y");
@@ -722,6 +736,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
await pm.chartTypeSelector.searchAndAddField("plan", "y");
@@ -750,6 +765,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.chartTypeSelector.searchAndAddField("name", "y");
await pm.chartTypeSelector.searchAndAddField("email", "y");
@@ -778,6 +794,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("duration_mins", "y");
await pm.chartTypeSelector.searchAndAddField("device", "y");
@@ -804,6 +821,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -829,6 +847,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("status", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -854,6 +873,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1002,6 +1022,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
]);
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -1103,6 +1124,7 @@ test.describe("Dashboard Joins Feature Tests (Consolidated)", () => {
// Add fields and apply - should work without any joins
await pm.chartTypeSelector.searchAndAddField("request_id", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("path", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -84,6 +84,7 @@ test.describe("Dashboard Metric Chart CamelCase Alias", () => {
// Builder mode: select stream and add Y-axis field (auto-generated alias y_axis_1)
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Apply with time range and verify
@@ -118,6 +119,8 @@ test.describe("Dashboard Metric Chart CamelCase Alias", () => {
`SELECT count(*) AS totalcount FROM "${STREAM_NAME}"`
);
// Remove the default seeded Y (count) before adding ours — metric allows one Y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
// Add the lowercase alias as Y-axis field (metric chart requires Y-axis to render)
await pm.chartTypeSelector.searchAndAddField("totalcount", "y");
testLogger.info("Custom SQL with lowercase alias entered");
@@ -154,6 +157,8 @@ test.describe("Dashboard Metric Chart CamelCase Alias", () => {
`SELECT count(*) AS metricValue FROM "${STREAM_NAME}" WHERE kubernetes_container_name = 'nonexistent_container_xyz_99999'`
);
// Remove the default seeded Y (count) before adding ours — metric allows one Y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
// Add Y-axis field (metric chart requires Y-axis to render)
await pm.chartTypeSelector.searchAndAddField("metricValue", "y");
testLogger.info("Custom SQL with non-existent filter entered");
@@ -214,6 +219,8 @@ test.describe("Dashboard Metric Chart CamelCase Alias", () => {
`SELECT count(*) AS countRecords FROM "${STREAM_NAME}"`
);
// Remove the default seeded Y (count) before adding ours — metric allows one Y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
// Add the camelCase alias as Y-axis field (metric chart requires Y-axis to render)
await pm.chartTypeSelector.searchAndAddField("countRecords", "y");
testLogger.info("Custom SQL with camelCase alias entered");
@@ -47,6 +47,9 @@ async function buildPanel(
if (xField) {
await pm.chartTypeSelector.searchAndAddField(xField, "x");
}
// Add Panel now auto-seeds y_axis_1 = count(_timestamp). Remove it before
// adding this tab's own y-field.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(yField, "y");
if (breakdownField) {
const breakdownTarget = chartType === "table" ? "p" : "b";
@@ -66,9 +69,13 @@ async function addAndConfigureSecondQuery(pm, { yField = "kubernetes_namespace_n
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// A new tab auto-seeds x_axis_1 = histogram(_timestamp) and y_axis_1 = count(_timestamp).
// Always remove the seeded field, then add this tab's own x/y.
if (xField) {
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField(xField, "x");
}
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(yField, "y");
}
@@ -221,13 +228,13 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "y");
await msql.addQueryTab(2);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
// Switching tabs must surface that query's own Y-axis field.
@@ -459,9 +466,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "y");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await msql.switchToQueryTab(0);
await msql.configLegend(0).waitFor({ state: "visible", timeout: 10000 });
await msql.configLegend(0).clear();
@@ -743,8 +749,12 @@ test.describe("Multi-SQL Query Support", () => {
// Q1: valid bar chart with y-field configured
await buildPanel(page, pm, dashboardName, { chartType: "bar" });
// Add Q2 and intentionally leave it empty (no stream, no fields)
// Add Q2 and intentionally make it invalid. New tabs now auto-seed
// histogram x + count y, so strip both fields to leave Q2 unconfigured —
// an empty query is what surfaces the execution error under test.
await msql.addQueryTab(1);
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
// Switch back to Q1 — error from Q2 should surface regardless of active tab
await msql.switchToQueryTab(0);
@@ -998,8 +1008,9 @@ test.describe("Multi-SQL Query Support", () => {
// NOTE: When addPanel() is called, the panel editor auto-populates
// histogram(_timestamp) into Q1's x-axis. So buildPanel() must NOT pass
// xField — Q1 already has the histogram x-field. New query tabs (Q2+)
// always start empty, so addField calls on those work normally.
// xField — Q1 already has the histogram x-field. New query tabs (Q2+) now
// also auto-seed x_axis_1 = histogram(_timestamp) + y_axis_1 = count(_timestamp),
// so tests remove the seeded field before adding a different x/y of their own.
test(
"no warning with a single query using histogram x-alias",
@@ -1037,11 +1048,11 @@ test.describe("Multi-SQL Query Support", () => {
yField: "kubernetes_container_hash",
});
// Add Q2 also with _timestamp (histogram) — Q2 starts empty so +X works
// Q2 keeps its auto-seeded histogram(_timestamp) x
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1071,11 +1082,15 @@ test.describe("Multi-SQL Query Support", () => {
await removeFirstXField(page); // removes auto _timestamp
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
// Add Q2 also with non-histogram x — Q2 starts empty so +X works
// Add Q2 with non-histogram x (replaces the seeded histogram x)
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// New tab seeds histogram(_timestamp) x; replace it with this tab's
// non-histogram x-field.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1104,11 +1119,15 @@ test.describe("Multi-SQL Query Support", () => {
yField: "kubernetes_container_hash",
});
// Q2: non-histogram x (kubernetes_host) — Q2 starts empty so +X works
// Q2: non-histogram x (kubernetes_host), replacing the seeded histogram x
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// New tab seeds histogram(_timestamp) x; replace it with this tab's
// non-histogram x-field.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1139,11 +1158,11 @@ test.describe("Multi-SQL Query Support", () => {
await removeFirstXField(page); // removes auto _timestamp
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
// Q2: histogram(_timestamp) — Q2 starts empty so +X works
// Q2 keeps its auto-seeded histogram(_timestamp) x
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1174,7 +1193,11 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// New tab seeds histogram(_timestamp) x; replace it with this tab's
// non-histogram x-field.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1211,10 +1234,12 @@ test.describe("Multi-SQL Query Support", () => {
yField: "kubernetes_container_hash",
});
// Q2 with ONLY a y-field — no x-field added
// Q2 with ONLY a y-field — remove both auto-seeded fields, add only y
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1247,7 +1272,11 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// New tab seeds histogram(_timestamp) x; replace it with this tab's
// non-histogram x-field.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1284,7 +1313,11 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// New tab seeds histogram(_timestamp) x; replace it with this tab's
// non-histogram x-field.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1363,8 +1396,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// Q2 starts with empty x-axis; add _timestamp so the bar chart renders
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Q2 keeps its auto-seeded histogram(_timestamp) x; swap the seeded y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1402,7 +1435,7 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1483,7 +1516,7 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1525,8 +1558,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// Q2 starts with empty x-axis; add _timestamp so save validates cleanly
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Q2 keeps its auto-seeded histogram(_timestamp) x; swap the seeded y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1592,7 +1625,7 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1681,8 +1714,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(streamB);
// Q2 needs x-field so the bar chart renders and the panel saves cleanly
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Q2 keeps its auto-seeded histogram(_timestamp) x; swap the seeded y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1746,8 +1779,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(streamB);
// Q2 needs x-field so the bar chart renders and the panel saves cleanly
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Q2 keeps its auto-seeded histogram(_timestamp) x; swap the seeded y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1806,8 +1839,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(streamB);
// Q2 needs x-field so the bar chart renders and the panel saves cleanly
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Q2 keeps its auto-seeded histogram(_timestamp) x; swap the seeded y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -1858,8 +1891,8 @@ test.describe("Multi-SQL Query Support", () => {
await msql.addQueryTab(1);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(streamB);
// Q2 needs x-field so the bar chart renders and the panel saves cleanly
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Q2 keeps its auto-seeded histogram(_timestamp) x; swap the seeded y.
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -48,6 +48,7 @@ test.describe("dashboard multi y axis testcases", () => {
await pm.chartTypeSelector.selectChartType("stacked");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -111,6 +112,7 @@ test.describe("dashboard multi y axis testcases", () => {
await pm.chartTypeSelector.selectChartType("stacked");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_namespace_name",
"y"
@@ -515,6 +515,7 @@ test.describe(
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_hash",
"y"
@@ -199,6 +199,7 @@ test.describe("Dashboard Functions", () => {
await selectStreamAndChartType(page, pm, STREAM_NAME, "table");
await pm.chartTypeSelector.searchAndAddField("user_name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("score", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -221,6 +222,7 @@ test.describe("Dashboard Functions", () => {
await selectStreamAndChartType(page, pm, STREAM_NAME, "table");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("user_name", "y");
// UI shows "Distinct" for COUNT-DISTINCT function; label displays as "count"
@@ -242,6 +244,7 @@ test.describe("Dashboard Functions", () => {
await selectStreamAndChartType(page, pm, STREAM_NAME, "table");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("score", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "avg");
@@ -262,6 +265,7 @@ test.describe("Dashboard Functions", () => {
await selectStreamAndChartType(page, pm, STREAM_NAME, "table");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("score", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "sum");
@@ -314,6 +318,7 @@ test.describe("Dashboard Functions", () => {
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Add first Y-axis with COUNT
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("user_name", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -345,6 +350,7 @@ test.describe("Dashboard Functions", () => {
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Add Y-axis with MIN
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("score", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "min");
@@ -155,6 +155,7 @@ test.describe("Pie & Donut Chart — E2E Tests (SQL Builder / Logs Stream)", ()
await pm.chartTypeSelector.selectChartType("pie");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.dashboardPanelActions.addPanelName("Pie Aggregations");
@@ -214,6 +215,7 @@ test.describe("Pie & Donut Chart — E2E Tests (SQL Builder / Logs Stream)", ()
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
await pm.dashboardPanelActions.addPanelName("Line To Pie");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -318,6 +320,7 @@ test.describe("Pie & Donut Chart — E2E Tests (SQL Builder / Logs Stream)", ()
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add Y field, then switch to raw and enter custom SQL
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
// Open Y-axis function popup and switch to raw tab
@@ -375,6 +378,7 @@ test.describe("Pie & Donut Chart — E2E Tests (SQL Builder / Logs Stream)", ()
await pm.chartTypeSelector.selectChartType("pie");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
// Configure Y-axis with raw count query
@@ -408,6 +412,7 @@ test.describe("Pie & Donut Chart — E2E Tests (SQL Builder / Logs Stream)", ()
await pm.chartTypeSelector.selectStream("e2e_automate");
// Y-axis: kubernetes_container_name with count aggregation (cross-field)
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.chartTypeSelector.configureYAxisRawQuery(
"y_axis_1",
@@ -140,7 +140,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
// Add Y field (Value field) with count aggregation
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
// Apply and wait for render
@@ -203,7 +202,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"kubernetes_container_name",
"x"
);
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -273,7 +271,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"kubernetes_container_name",
"x"
);
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -357,7 +354,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"kubernetes_container_name",
"x"
);
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
// Check for "First Column" label (non-pivot mode)
@@ -419,7 +415,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"x"
);
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
const streamPromise = waitForStreamComplete(page);
@@ -533,7 +528,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"x"
);
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -679,7 +673,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"x"
);
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -767,7 +760,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"x"
);
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -841,7 +833,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
"x"
);
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -928,7 +919,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
// Add only Pivot (breakdown) + Y fields (no X)
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -987,6 +977,9 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
);
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
// Remove the default seeded Y field (count) so this truly tests the no-Y case
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
await pm.dashboardPanelActions.waitForChartToRender();
@@ -1040,7 +1033,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
// Multiple Y fields to create hierarchy
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
await pm.chartTypeSelector.searchAndAddField("log", "y");
@@ -1098,7 +1090,6 @@ test.describe("Dashboard Table Chart - Pivot Table Feature", () => {
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
// Y field
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
const streamPromise = waitForStreamComplete(page);
@@ -46,6 +46,7 @@ test.describe("Dashboard Raw Query testcases", () => {
panelName = pm.dashboardPanelActions.generateUniquePanelName("raw-query-test");
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Open Y-axis popup and verify tabs
@@ -79,6 +80,7 @@ test.describe("Dashboard Raw Query testcases", () => {
panelName = pm.dashboardPanelActions.generateUniquePanelName("raw-query-test");
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Open popup, switch to Raw tab, enter query
@@ -117,6 +119,7 @@ test.describe("Dashboard Raw Query testcases", () => {
panelName = pm.dashboardPanelActions.generateUniquePanelName("raw-query-test");
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Configure raw query on Y-axis
@@ -181,6 +184,7 @@ test.describe("Dashboard Raw Query testcases", () => {
panelName = pm.dashboardPanelActions.generateUniquePanelName("raw-query-test");
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.chartTypeSelector.configureYAxisRawQuery(Y_AXIS_ALIAS, RAW_QUERY);
@@ -241,6 +245,7 @@ test.describe("Dashboard Raw Query testcases", () => {
panelName = pm.dashboardPanelActions.generateUniquePanelName("raw-query-test");
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Open popup
@@ -297,6 +302,7 @@ test.describe("Dashboard Raw Query testcases", () => {
panelName = pm.dashboardPanelActions.generateUniquePanelName("raw-query-test");
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream(STREAM_NAME);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Configure raw query
@@ -86,6 +86,7 @@ test.describe("Dashboard series color with multi-window (time shift)", () => {
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("area");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Step 3: Apply the query to render the chart initially
@@ -223,6 +224,7 @@ test.describe("Dashboard series color with multi-window (time shift)", () => {
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
// Step 2: Apply initial query
@@ -167,6 +167,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
@@ -201,7 +202,6 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
const streamPromise = waitForStreamComplete(page);
@@ -293,6 +293,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
// Enable VRL function toggle and add a VRL function that creates a new field
@@ -368,6 +369,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -410,6 +412,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -448,6 +451,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -492,6 +496,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -530,6 +535,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -573,6 +579,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "filter");
@@ -646,6 +653,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_hash", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -741,6 +749,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -797,6 +806,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
// Add X field — shows in "First Column" area
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
// Add Y field — shows in "Other Columns" area
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
// Verify layout labels
@@ -837,6 +847,7 @@ test.describe("Dashboard Table Chart - Core Features", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
// Test with "sum" aggregation
@@ -65,6 +65,7 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -103,6 +104,7 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -153,6 +155,7 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -201,6 +204,7 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("code", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
@@ -256,7 +260,6 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
// X: row field, P: pivot/breakdown field, Y: value field
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
const streamPromise = waitForStreamComplete(page);
@@ -293,7 +296,6 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
const streamPromise = waitForStreamComplete(page);
@@ -339,7 +341,6 @@ test.describe("Dashboard Table Chart - Copy Cell Timestamp Formatting", () => {
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "x");
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "p");
await pm.chartTypeSelector.searchAndAddField("_timestamp", "y");
await pm.chartTypeSelector.configureYAxisFunction("y_axis_1", "count");
const streamPromise = waitForStreamComplete(page);
@@ -43,6 +43,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_name",
"y"
@@ -84,6 +85,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_name",
"y"
@@ -237,6 +239,7 @@ test.describe("dashboard UI testcases", () => {
"kubernetes_container_name",
"x"
);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
// Open the configuration panel and enable dynamic columns
@@ -288,6 +291,7 @@ test.describe("dashboard UI testcases", () => {
"kubernetes_container_name",
"x"
);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
// Open the configuration panel and enable both the Transpose and Dynamic Column toggle buttons
@@ -95,6 +95,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add X and Y axis fields (required for saving panel)
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -347,6 +348,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add X and Y axis fields (required for saving panel)
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -457,6 +459,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -465,6 +468,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -637,6 +641,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -644,6 +649,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -802,6 +808,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
// Save panel
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -882,6 +889,7 @@ test.describe("Dashboard Variables - Creation & Scope Restrictions", { tag: ['@d
// Save the panel to avoid the discard confirmation dialog
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -991,6 +991,7 @@ test.describe("Dashboard Variables - Dependency Loading", { tag: ['@dashboards',
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "filter");
@@ -44,6 +44,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -85,6 +86,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -127,6 +129,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
}
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName(`DummyPanel${i + 1}`);
await pm.dashboardPanelActions.savePanel();
@@ -138,6 +141,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -283,6 +287,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -344,6 +349,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -356,6 +362,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -468,6 +475,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -546,6 +554,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -651,6 +660,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -663,6 +673,7 @@ test.describe("Dashboard Variables - Panel Level", { tag: ['@dashboards', '@dash
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -140,6 +140,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "filter");
// Add filter using varB
@@ -219,6 +220,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -230,6 +232,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -294,6 +297,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "filter");
// Add filter using the variable
@@ -320,6 +324,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel2");
await pm.dashboardPanelActions.savePanel();
@@ -399,6 +404,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "filter");
// Add filter using the variable
@@ -597,6 +603,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "filter");
// Add filter using the variable
@@ -674,6 +681,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "filter");
// Add filter using the variable
@@ -699,6 +707,7 @@ test.describe("Dashboard Variables - Refresh Indicators & Panel Reload", { tag:
await pm.dashboardCreate.addPanelToExistingDashboard();
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "filter");
// Add filter using the variable
@@ -158,6 +158,7 @@ test.describe("Dashboard Variables - URL Sync & Drilldown", { tag: ['@dashboards
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType("line");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
@@ -527,6 +528,7 @@ test.describe("Dashboard Variables - URL Sync & Drilldown", { tag: ['@dashboards
// This would typically be in panel settings
// For now, verify the concept
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_pod_name", "y");
await pm.dashboardPanelActions.addPanelName("Panel1");
await pm.dashboardPanelActions.savePanel();
@@ -106,6 +106,7 @@ test.describe("dashboard UI testcases", () => {
// Select stream and breakdown fields
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_hash",
"y"
@@ -149,6 +150,7 @@ test.describe("dashboard UI testcases", () => {
// Configure the chart
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_hash",
"y"
@@ -231,6 +233,7 @@ test.describe("dashboard UI testcases", () => {
// Select stream and add fields to chart
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_hash",
"y"
@@ -273,6 +276,7 @@ test.describe("dashboard UI testcases", () => {
// Select chart type and stream
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_labels_app_kubernetes_io_component",
"b"
@@ -332,6 +336,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectChartType("bar");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -398,6 +403,7 @@ test.describe("dashboard UI testcases", () => {
// Select a stream
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -450,6 +456,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -518,6 +525,7 @@ test.describe("dashboard UI testcases", () => {
// Add a panel name and save again
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -550,6 +558,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectChartType("area");
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
// Add fields to chart
await pm.chartTypeSelector.searchAndAddField(
@@ -621,6 +630,7 @@ test.describe("dashboard UI testcases", () => {
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectChartType("area");
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
// Add a non-required field (B-axis), but skip Y-axis
await pm.chartTypeSelector.searchAndAddField("kubernetes_host", "b");
@@ -661,6 +671,7 @@ test.describe("dashboard UI testcases", () => {
await pm.dashboardCreate.addPanel();
await pm.dashboardPanelActions.addPanelName(panelName);
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -699,8 +710,11 @@ test.describe("dashboard UI testcases", () => {
await pm.dashboardCreate.addPanel();
await pm.dashboardPanelActions.addPanelName(panelName);
// Configure table chart with custom SQL using camelCase aliases
// Configure table chart with custom SQL using camelCase aliases.
// Remove both auto-seeded builder fields — this test supplies its own
// xAxis1/yAxis1 columns, and a stale y_axis_1 would add an empty column.
await pm.chartTypeSelector.removeField("x_axis_1", "x");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.selectChartType("table");
await pm.chartTypeSelector.setCustomSQL(
@@ -41,6 +41,7 @@ test.describe("dashboard UI testcases", () => {
// Select stream and fields
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -89,6 +90,7 @@ test.describe("dashboard UI testcases", () => {
// Select stream and fields
await pm.chartTypeSelector.selectStream("e2e_automate");
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_image",
"y"
@@ -141,6 +143,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -207,6 +210,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubernetes_io_psp",
"y"
@@ -252,6 +256,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_name",
"y"
@@ -294,6 +299,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_hash",
"y"
@@ -346,6 +352,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_image",
"b"
@@ -380,6 +387,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_container_hash",
"y"
@@ -423,6 +431,7 @@ test.describe("dashboard UI testcases", () => {
await pm.chartTypeSelector.selectStream("e2e_automate");
// Add fields to the chart
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(
"kubernetes_annotations_kubectl_kubernetes_io_default_container",
"y"
@@ -41,6 +41,7 @@ async function buildPanelWithWideRange(page, pm, panelName, chartType = "area")
await pm.chartTypeSelector.selectChartType(chartType);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(MAX_QUERY_STREAM);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_labels_name", "b");
@@ -203,6 +204,7 @@ test.describe("Dashboard Max Query Range", () => {
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(MAX_QUERY_STREAM);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "y");
await pm.dashboardPanelActions.applyDashboardBtn();
@@ -252,6 +254,7 @@ test.describe("Dashboard Max Query Range", () => {
await pm.chartTypeSelector.selectChartType(chartType);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(MAX_QUERY_STREAM);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "y");
await waitForDateTimeButtonToBeEnabled(page);
@@ -392,6 +395,7 @@ test.describe("Dashboard Max Query Range", () => {
// First query tab
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream(MAX_QUERY_STREAM);
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "y");
// Second query tab
@@ -69,6 +69,8 @@ async function buildPanel(page, pm, dashboardName, {
await pm.chartTypeSelector.selectChartType(chartType);
await pm.chartTypeSelector.selectStreamType("logs");
await pm.chartTypeSelector.selectStream("e2e_automate");
// remove the auto-seeded default y-axis before adding this panel's measure
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(yField, "y");
if (breakdownField) {
await pm.chartTypeSelector.searchAndAddField(breakdownField, "b");
@@ -299,6 +299,8 @@ export async function addSimplePanel(pm, panelName, options = {}) {
await pm.dashboardCreate.addPanel();
await pm.chartTypeSelector.selectChartType(chartType);
await pm.chartTypeSelector.selectStream(streamName);
// remove the auto-seeded default y-axis before adding this panel's measure
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField(yAxisField, "y");
// Add filter fields if specified
@@ -59,6 +59,8 @@ export async function startPanelCreation(page, pm, config) {
await pm.chartTypeSelector.selectStream(stream);
// Add fields for proper chart configuration
// remove the auto-seeded default y-axis before adding this panel's measure
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "b");
@@ -179,6 +181,8 @@ export async function addPanelWithPanelTime(page, pm, config) {
await pm.chartTypeSelector.selectStream(stream);
// Add fields to Y and breakdown axes for proper chart configuration
// remove the auto-seeded default y-axis before adding this panel's measure
await pm.chartTypeSelector.removeField("y_axis_1", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_container_name", "y");
await pm.chartTypeSelector.searchAndAddField("kubernetes_namespace_name", "b");