Files
openobserve/tests/ui-testing/ci-matrix/ci_matrix.json
T
Shrinath Rao 673bedb468 test(alerts): migrate multi-alert API specs from Playwright to pytest (Phase 2) (#13791)
## What

**Phase 2** of the Playwright→pytest API-test migration (Phase 1 =
Correlation, #13788 / o2-enterprise#2419). Ports the 4 **pure-API**
Alerts 4.0 (multi-alert) specs into pytest and deletes the Playwright
versions — they launched a browser only to assert the raw API.

## Changes — `tests/api-testing/tests/alerts/`

| File | Ported from |
|---|---|
| `multialert_helpers.py` | `utils/alerts-api-helpers.js` (v1/v2
endpoints, canonical payloads, seed fixtures, ingest, scheduler-outcome
polling) |
| `conftest.py` | `alerts` fixture — seeds template + destination +
stream, auto-cleans created alerts |
| `test_multialert_api.py` | `alerts-multialert-api.spec.js` — 8 tests
(save-time guardrails, round-trip type contract, B1 group-endpoint RBAC
guard, tag/priority facets) |
| `test_multialert_regression.py` |
`alerts-multialert-regression.spec.js` — 4 tests (zero-behaviour-change
guards) |
| `test_multialert_firing.py` | `alerts-multialert-firing.spec.js` — 4
tests (fires at critical/warning, per-group fan-out, simple rollup) |
| `test_multialert_transitions.py` |
`alerts-multialert-transitions.spec.js` — 1 test (Ok→Warning→Critical
history) |

**17 tests, 1:1 port.** Deletes the 4 API specs and trims them from
`ci_matrix.json`'s Alerts `run_files`. Keeps
`alerts-multialert-ui.spec.js` (UI) and `alerts-api-helpers.js` (still
used by the UI + priority-tags specs).

## No workflow change needed

Unlike the Correlation pilot (which needed a dedicated server env), the
main `api_integration_tests` job **already** runs `tests/alerts/`, and
its server env **already** sets `ZO_ALERT_SCHEDULE_INTERVAL: 3` — the
exact scheduler cadence the firing/transitions tests need. So these
tests are picked up automatically with no CI edits.

## Verified locally

Full suite against a fresh single-node enterprise build: **17/17
passed** (~52s), including the timing-dependent firing
(critical/warning/per-group/rollup) and level-transition history tests.
2026-08-13 01:41:58 +00:00

424 lines
12 KiB
JSON

[
{
"testfolder": "Alerts",
"actual_folder": "Alerts",
"browser": "chrome",
"run_files": [
"alerts-ui-operations.spec.js",
"alerts-import.spec.js",
"alerts-metrics-notification.spec.js",
"alerts-destinations-prebuilt.spec.js",
"alerts-vrl-encoding.spec.js",
"alerts-history.spec.js",
"alerts-template-prebuilt-guard.spec.js",
"alerts-form-validation.spec.js",
"anomaly-detection-form-validation.spec.js",
"alerts-priority-tags.spec.js",
"alerts-multialert-ui.spec.js"
],
"disabled": [
{
"file": "alerts-e2e-flow.spec.js",
"reason": ""
},
{
"file": "alerts-advanced.spec.js",
"reason": ""
},
{
"file": "alerts-scheduled-features.spec.js",
"reason": ""
}
]
},
{
"testfolder": "Dashboard-Config-Settings",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-series-color-multiwindow.spec.js",
"dashboard-config-advanced.spec.js",
"dashboard-config-axis.spec.js",
"dashboard-config-gauge-maps.spec.js",
"dashboard-config-general.spec.js",
"dashboard-config-legends.spec.js",
"dashboard-config-line-style.spec.js",
"dashboard-config-panel-time.spec.js",
"dashboard-config-table.spec.js",
"dashboard-config-trellis.spec.js",
"dashboard-config-drilldown.spec.js",
"dashboard-config-promql.spec.js",
"dashboard-config-markline.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Charts",
"_comment": "Dashboard panel tests are grouped by feature so each shard stays under the ephemeral-runner endurance window. A single combined 16-spec shard ran ~40 min and got reclaimed mid-run ('runner lost communication'). Add new specs to the shard of the feature they cover.",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"custom-charts.spec.js",
"dashboard-geoMap.spec.js",
"dashboard-maps.spec.js",
"dashboard-multi-y-axis.spec.js",
"dashboard-html-chart.spec.js",
"dashboard-sankey.spec.js",
"dashboard-pie-donut.spec.js",
"dashboard-metric-camelcase.spec.js",
"dashboard-create-alert.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Core",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard.spec.js",
"dashboard2.spec.js",
"dashboardtype.spec.js",
"dashboard-folder.spec.js",
"dashboard-import.spec.js",
"maxquery.spec.js",
"dashboard-chartJson.spec.js",
"dashboard-promql-suggestions.spec.js",
"dashboard-sql-autocomplete.spec.js",
"dashboard-share-link.spec.js",
"crossLinking.spec.js",
"dashboard-multi-sql.spec.js",
"crossLinkMultiStream.spec.js",
"dashboards-form-validation.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Isolated",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-favorites.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Panel-Level-DateTime-Config",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-panel-time-config-behavior.spec.js",
"dashboard-panel-time-url-priority.spec.js",
"dashboard-panel-time-advanced-edge-cases.spec.js",
"dashboard-panel-time-apply-behavior.spec.js",
"dashboard-panel-time-variables-behavior.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Settings",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-filter.spec.js",
"dashboard-general-setting.spec.js",
"dashboard-tabs-setting.spec.js",
"dashboard-transpose.spec.js",
"dashboard-join.spec.js",
"dashboard-nested-functions.spec.js",
"dashboard-legends-copy.spec.js",
"dashboard-raw-query.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Streaming",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-streaming.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Tables",
"_comment": "Owns the pagination and pivot-table specs (previously their own single-spec shards) \u2014 keep them here.",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-table-chart.spec.js",
"dashboard-table-copy-cell.spec.js",
"dashboard-table-csv-download.spec.js",
"dashboard-table-column-formatting.spec.js",
"dashboard-table-column-filtering.spec.js",
"dashboard-table-pagination.spec.js",
"dashboard-pivot-table.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Variables",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"dashboard-variables-setting.spec.js",
"dashboard-variables-global.spec.js",
"dashboard-variables-tab-level.spec.js",
"dashboard-variables-panel-level.spec.js",
"dashboard-variables-dependency.spec.js",
"dashboard-variables-refresh.spec.js",
"dashboard-variables-url-sync.spec.js",
"dashboard-variables-creation-scopes.spec.js",
"dashboard-variables-default-values-chain.spec.js",
"dashboard-variables-custom-parents.spec.js",
"dashboard-variables-stream-field.spec.js",
"dashboard-mustache-variables.spec.js"
],
"disabled": []
},
{
"testfolder": "Dashboards-Visualize",
"actual_folder": "Dashboards",
"browser": "chrome",
"run_files": [
"visualize.spec.js",
"visualize-vrl.spec.js"
],
"disabled": []
},
{
"testfolder": "Functions",
"actual_folder": "Functions",
"browser": "chrome",
"run_files": [
"js-transform-type.spec.js",
"row-expansion.spec.js",
"enrichment-table-url.spec.js",
"functions-form-validation.spec.js",
"action-scripts-form-validation.spec.js"
],
"disabled": []
},
{
"testfolder": "GeneralTests",
"actual_folder": "GeneralTests",
"browser": "chrome",
"run_files": [
"sanity.spec.js",
"changeOrg.spec.js",
"enrichment.spec.js",
"schema.spec.js",
"schemaload.spec.js",
"serviceAccount.spec.js",
"usersOrg.spec.js",
"org.spec.js",
"theme-management.spec.js",
"ingestion-config.spec.js",
"ingestionTokens.spec.js",
"landingPage.spec.js",
"languageTranslation.spec.js",
"edition-features.spec.js",
"logsqueries.sql-comments.spec.js",
"iam-form-validation.spec.js",
"regex-patterns-form-validation.spec.js",
"cipher-keys-form-validation.spec.js",
"settings-form-validation.spec.js",
"ai-toolsets-form-validation.spec.js",
"shared-components-form-validation.spec.js",
"onboarding-form-validation.spec.js",
"rum-form-validation.spec.js",
"login-form-validation.spec.js"
],
"disabled": []
},
{
"testfolder": "Logs-Builder-Advanced",
"actual_folder": "Logs",
"browser": "chrome",
"run_files": [
"logsQueryBuilder-editor.spec.js",
"logsQueryBuilder-filters-advanced.spec.js",
"logsquickmode.spec.js",
"logshistogram.spec.js",
"logsQuickPick.spec.js"
],
"disabled": []
},
{
"testfolder": "Logs-Builder-Basic",
"actual_folder": "Logs",
"browser": "chrome",
"run_files": [
"logsQueryBuilder-chart.spec.js",
"logsQueryBuilder-filters-basic.spec.js",
"pagination.spec.js",
"unflattened.spec.js"
],
"disabled": []
},
{
"testfolder": "Logs-Core",
"actual_folder": "Logs",
"browser": "chrome",
"run_files": [
"logspage.spec.js",
"logstable.spec.js",
"logsqueries.spec.js",
"join.spec.js",
"shareLink.spec.js",
"logsAnalyzeDimensions.spec.js",
"monaco-query-prefill.spec.js",
"logsqueries.matchall.spec.js",
"ftsDefaultColumn.spec.js",
"logsVisualizePersistence.spec.js"
],
"disabled": []
},
{
"testfolder": "Logs-Features",
"actual_folder": "Logs",
"browser": "chrome",
"run_files": [
"logs-autocomplete-suggestions.spec.js",
"logs-sql-autocomplete.spec.js",
"logsqueries.cte.spec.js",
"logsDownloads.spec.js",
"secondsPrecisionAdded.spec.js",
"searchpartition.spec.js",
"indexquery.spec.js",
"region.spec.js",
"timezoneDisplay.spec.js"
],
"disabled": [
{
"file": "searchJobInspector.spec.js",
"reason": "TODO: update for new correlation feature"
}
]
},
{
"_comment": "Own shard because isSelectStarForTable() only exists when the server runs with ZO_QUICK_MODE_ENABLED=true. That flag is read once at process start, so it cannot vary between tests sharing a backend \u2014 each shard gets its own OpenObserve process. Every other shard omits quick_mode_enabled and keeps the default (false).",
"testfolder": "Logs-SelectStar",
"actual_folder": "Logs",
"browser": "chrome",
"quick_mode_enabled": "true",
"run_files": [
"logsVisualizeSelectStar.spec.js"
],
"disabled": []
},
{
"testfolder": "Metrics",
"actual_folder": "Metrics",
"browser": "chrome",
"run_files": [
"metrics.spec.js",
"metrics-queries.spec.js",
"metrics-aggregations.spec.js",
"metrics-advanced.spec.js",
"metrics-config-tabs.spec.js",
"metrics-visualizations.spec.js",
"metrics-config.spec.js",
"metrics-promql-query-persistence.spec.js",
"metrics-table-column-order.spec.js",
"metrics-promql-builder.spec.js",
"promqlAutocomplete.spec.js",
"metrics-share-deep-link.spec.js",
"metrics-explorer-share-visualize.spec.js"
],
"disabled": []
},
{
"testfolder": "Pipelines",
"actual_folder": "Pipelines",
"browser": "chrome",
"run_files": [
"pipeline-conditions.spec.js",
"pipeline-conditions-validation.spec.js",
"pipelines.spec.js",
"pipeline-dynamic.spec.js",
"pipeline-core.spec.js",
"pipeline-traces.spec.js",
"pipeline-metrics.spec.js",
"pipeline-backfill.spec.js",
"pipeline-history.spec.js",
"scheduled-pipeline-query-builder.spec.js",
"pipelines-form-validation.spec.js"
],
"disabled": [
{
"file": "remotepipeline.spec.js",
"reason": ""
}
]
},
{
"testfolder": "Reports",
"actual_folder": "Reports",
"browser": "chrome",
"run_files": [
"reportsScheduleNow.spec.js",
"reportsScheduleLater.spec.js",
"reportFolders.spec.js",
"reports-bulk-operations.spec.js",
"reports-form-validation.spec.js",
"reportCsvMediaType.spec.js",
"scheduledReportsDrawer.spec.js"
],
"disabled": []
},
{
"testfolder": "RUM",
"_comment": "The RUM ingest/token/sourcemaps routes are part of the standard (OSS) router (src/api/http/src/handler/http/router/mod.rs), so these specs run against the OSS binary. Ingestion-auth negative cases live in the API suite (tests/api-testing/tests/rum).",
"actual_folder": "RUM",
"browser": "chrome",
"run_files": [
"rum-cdn-dataflow.spec.js",
"rum-npm-dataflow.spec.js",
"rum-page-dataflow.spec.js",
"rum-onboarding-snippets.spec.js",
"sourcemap-ui.spec.js",
"sourcemap-upload-pretty.spec.js"
],
"disabled": []
},
{
"testfolder": "RUM-Token",
"_comment": "rum-token.spec.js RESETS the org RUM token; running it beside the dataflow specs (workers run files in parallel) would 401 their in-flight SDK beacons. Own shard = own isolated instance \u2014 do NOT merge back into RUM.",
"actual_folder": "RUM",
"browser": "chrome",
"run_files": [
"rum-token.spec.js"
],
"disabled": []
},
{
"testfolder": "Streams",
"actual_folder": "Streams",
"browser": "chrome",
"run_files": [
"multiselect-stream.spec.js",
"streamname.spec.js",
"streaming.spec.js",
"stream-settings.spec.js",
"streams-form-validation.spec.js"
],
"disabled": []
},
{
"testfolder": "Traces",
"actual_folder": "Traces",
"browser": "chrome",
"run_files": [
"service-catalog.spec.js",
"tracesSearch.spec.js",
"traceQueryEditor.spec.js",
"traceErrorFilter.spec.js",
"traceDetails.spec.js",
"traceAdvancedFiltering.spec.js",
"tracesAnalyzeDimensions.spec.js",
"traces-autocomplete-suggestions.spec.js"
],
"disabled": []
}
]