mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 00:08:55 +00:00
fddf2cf2640ddfb00eaaa3f34e8942511b2ba430
31
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
d9d128d61c |
fix: Serviceaccount1 (#13257)
Improve UI for creating service accounts. Improve UI for accessing MCP server. |
||
|
|
3c8f106425 |
test(e2e): stabilize alpha1 cloud E2E — shared https-ingestion fix + Streams revamp/cloud-race/CI-flake fixes (#13191)
## What Stabilizes the **Streams** shard of the alpha1 cloud E2E suite (`playwright_alpha1.yml`) to green after the UX revamp — plus a shared node-fetch protocol fix that unblocks ingestion for several non-Streams shards too. Rebased on `main` (no longer stacked on #13155). Un-skips the multistream **interesting-fields** test, and rewrites the **extended-retention** flow for the revamped UI (page-object retained, but the test itself is currently re-skipped — see fix 8). ## Root cause & fixes 1. **https ingestion rejected in shared fetch helpers.** `apiUtils.js`, `apiCleanup.js`, `pipelinesPage.js`, `streamsPage.js`, `model-pricing.spec.js` still forced an `http.Agent` on node-fetch → `Protocol "https:" not supported` against alpha's https ingestion URL, killing every multiselect / streamname / streaming ingestion. Replaced the single `http.Agent` with a protocol-selecting agent (an `http.Agent` for `http://` and an `https.Agent` for `https://`), passed as a function so node-fetch picks per-URL. Same fix as #13155's `ingestionPage.js`. 2. **Add Stream dialog selectors** (`streamsPage.js`). The revamped form is an `ODialog`: the panel is `add-stream-dialog`; save/cancel/close are the ODialog-owned `o-dialog-primary/secondary/close-btn` ids (scoped under the panel). The old `add-stream-title` / `save-stream-btn` / `add-stream-cancel/close-btn` no longer exist on the dialog. 3. **Streams-page navigation** (`streamsFormValidationPage.js`). The `/streams` left-nav tile is now a hover-flyout group — navigate by URL (`/web/streams?org_identifier=…`) and wait for the Add Stream button (rendered only after zoConfig loads, `v-if="isSchemaUDSEnabled"`) before clicking. 4. **Casing-preservation test skipped on cloud** (`streamname.spec.js`). Alpha runs the server default `ZO_FORMAT_STREAM_NAME_TO_LOWERCASE=true` (local CI sets it `false`), so stream names are always lowercased there — the feature under test is off. `test.skip(isCloudEnvironment(), …)`. 5. **TC002 cloud async-delete race** (`streamsPage.js`). A just-deleted stream lingers "being deleted" server-side after it leaves the streams list, so the recreate POST 400s; the create eventually goes through, so a follow-up "already exists" is treated as created. Also re-clicks Save when no POST fires (submit occasionally doesn't reach the form under parallel load), asserts name/retention values stick before saving, and adds `_waitForStreamGoneCloud` so `deleteStreamViaAPI` polls the streams list until the stream is actually gone. Success is now signalled by the dialog closing (the toast auto-dismisses), and both create and retention saves capture the API response so a server-side failure shows in the test log. 6. **streaming field-list waits** (`streamsPage.js`). `kubernetesContainerName` filters the field list and waits for the expand toggle before clicking — the cloud field list populates slowly. 7. **`managementPage.goToManagement` retry.** Under parallel-worker load the first settings-nav click can land before the nav is interactive; retry (`expect().toPass`) until the settings page renders. 8. **Un-skipped / rewritten for the revamped UI:** - **interesting-fields** (`multiselect-stream.spec.js`): **un-skipped.** Enable quick mode and hover the field row so the (ⓘ) toggle renders. Locators live in the page object (`logsPage.hoverAndClickInterestingFieldLast()` + reused `clickLogTableColumnSource()`), not in the spec. - **extended-retention** (`stream-settings.spec.js`): the page-object flow was rewritten for the new date-range calendar (`daterangecalendar-cell-*`), OTable row checkbox, and shared `ConfirmDialog` — **but the test is currently `test.skip`ed.** Clicking the Extended Retention tab collapses the entire Stream Detail drawer on alpha's deployed build (DOM elements drop 274 → 2), so the picker never renders. Verified by live DOM diff; sibling Settings-tab tests still pass, so it's a deployed-frontend regression, not test flakiness. Skipped with a documented reason; re-enable once the tab renders its panel again. 9. **CI-flake stabilization pass** (`logsPage.js`, `streamsPage.js`) — from alpha1 Streams CI run 29504364410: - **`clickInterestingFields`** (`logsPage.js`): an instant `isVisible()` check raced the field list re-rendering after the query completed, then toggled quick mode (already on) which churned the utilities menu. Now asserts quick mode on once (idempotent) and waits deterministically (20s + fallback) for the interesting buttons to render. - **`navigateToExtendedRetention`** (`streamsPage.js`): replaced fixed `waitForUI(2000)/(1000)` sleeps with real waits — schema dialog tab bar visible, then the date-picker button visible — so "date-time-btn not visible" can't recur. - **`navigateToStreamExplorer` / `searchStream` / `clickAddStreamButton`** (`streamsPage.js`): wait for the streams search input / add-stream button to actually render before interacting instead of a fixed 1s wait, removing the 45s click timeouts on slow CI. ## Validation - **Local (alpha, CI conditions — 3 workers):** Streams shard green (30 passed / 2 skipped / 0 failed; TC002 stable 3/3) prior to the extended-retention re-skip. With extended-retention now skipped (fix 8), that test moves to the skipped column. - **CI:** https://github.com/openobserve/o2-enterprise/actions/runs/29328193145 · flake triage from run 29504364410. ## Notes - `pipelinesPage.js` / `model-pricing.spec.js` receive the same shared protocol fix as collateral, so a couple of non-Streams shards benefit too. - The extended-retention page-object rewrite (calendar / OTable / ConfirmDialog) is kept and correct; only the test invocation is skipped pending the alpha drawer fix. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
702af87f0b |
test: add alert history and report bulk-ops E2E tests (main / UX revamp) (#12883)
## Summary Port of [#12882](https://github.com/openobserve/openobserve/pull/12882) (v0.80.0) adapted for main branch's UX revamp. **Alerts — `alerts-history.spec.js` (6 tests)** - All selectors identical to v0.80.0 — `AlertHistory.vue` data-test attrs unchanged in main - `expectDetailsDialogVisible()` updated to use `data-test="alert-history-details-dialog"` (ODialog) instead of `.alert-details-dialog` CSS class **Reports — `reports-bulk-operations.spec.js` (6 tests)** - Bulk pause/resume tests **omitted** — `report-list-pause-reports-btn` / `report-list-resume-reports-btn` do not exist in main's `ReportList.vue` (only row-level pause exists) - Bulk delete confirmation updated for `ConfirmDialog`'s new ODialog pattern: `[data-test="confirm-dialog"] [data-test="o-dialog-primary-btn"]` - `cancelBulkDelete` updated to use `o-dialog-secondary-btn` ## Key selector changes from v0.80.0 → main | Component | v0.80.0 | main | |---|---|---| | Alert details dialog | `.alert-details-dialog` (CSS class) | `[data-test="alert-history-details-dialog"]` | | Confirm button | `[data-test="confirm-button"]` | `[data-test="confirm-dialog"] [data-test="o-dialog-primary-btn"]` | | Cancel button | `[data-test="cancel-button"]` | `[data-test="confirm-dialog"] [data-test="o-dialog-secondary-btn"]` | ## Related PRs - v0.80.0 OSS: #12882 - v0.80.0 ENT: openobserve/o2-enterprise#2017 ## Test plan - [ ] CI passes on `main` - [ ] Alert history: 6 tests green - [ ] Report bulk operations: 6 tests green (move, delete, cancel ×2, hidden, select-all) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
5ea540c0d6 |
fix(test): extend keep-alive/compress fix to GeneralTests, Streams, Reports, SDR jobs (#12804)
## Summary Applies the same node-fetch v2 fix from PR #12799 (pipelines) to all remaining CI jobs that show \"Premature close\" / ECONNRESET failures: - **apiUtils.js** (`sendRequest`): adds `compress:false` + `noKeepAliveAgent` — fixes **Streams** job (`multiselect-stream.spec.js`, `streamname.spec.js`) - **apiCleanup.js** (`_fetch`): same fix on the node-fetch fallback path — fixes **Reports** job (dashboard/report API calls) - **model-pricing.spec.js**: wraps `node-fetch` with a local safe-fetch shim — fixes **GeneralTests** job (`/llm/models` premature close) - **streamsPage.js**: replaces four dynamic `node-fetch` imports with a shared `_nodeFetchSafe` helper - **ingestionPage.js**: adds `fetchWithRetry` around native fetch to handle transient `ECONNRESET`/premature close in `beforeEach` ingestion **SDR fix:** `regexPatternManagement.spec.js` — `AddRegexPattern.vue` migrated to `OForm` with submit-time Zod validation (`AddRegexPattern.schema.ts`). The `ODrawer` primary button is no longer disabled for empty fields; validation triggers on click and keeps the drawer open on error. Replaces stale `expect(isDisabled).toBeTruthy()` checks with click-then-expect-drawer-still-visible assertions. ## Root cause (same as #12799) `node-fetch` v2 defaults to `keepAlive: true` (connection pooling) and `compress: true` (Gunzip stream). When the server closes a pooled connection early, the Gunzip stream throws \"Premature close\". Because the dead socket stays in the pool, retries hit the same socket. `keepAlive: false` + `compress: false` eliminates both failure modes. ## Test plan - [ ] GeneralTests / `model-pricing.spec.js` — no more premature close on `/llm/models` - [ ] Streams / `multiselect-stream.spec.js` + `streamname.spec.js` — no more premature close on ingestion - [ ] Reports / `reportsScheduleNow.spec.js` — no more premature close during beforeEach ingestion - [ ] SDR / `regexPatternManagement.spec.js` — validation test passes with updated assertion 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
4ca7a04864 |
test: model pricing E2E tests (13 journey flows) + Build tab timing fix (#12525)
## Summary - **13 Playwright E2E journey tests** for the Model Pricing feature (\`/settings/model_pricing\`), consolidating all P0–P2 scenarios into journey-based flows - New page object \`ModelPricingPage\` under \`pages/generalPages/\` - API cleanup integrated into the centralized \`APICleanup\` class and called from \`cleanup.spec.js\` - CI matrix updated: \`ZO_MODEL_PRICING_ENABLED=true\` env var added; \`model-pricing.spec.js\` added to the \`GeneralTests\` job - **Bug fix**: \`waitForBuildTabLoaded\` now polls the Monaco editor for non-empty content (Phase 3), fixing a timing race where Build tab SQL tests read an empty query string on slower CI machines ## Test coverage | Journey | Scenarios covered | |---------|------------------| | List, tabs & search | Controls, tab switching, search, built-in tab | | Create & validation | All form validation cases + successful save | | Edit, cancel & delete | Full lifecycle | | Duplicate & clone | Org model duplicate + built-in clone | | Bulk actions | Select, export JSON, bulk delete | | Toggle | Disable/re-enable with correct visual state | | Test match dialog | Empty state, no-result, clear, match result | | Import | Valid JSON, correction flow, cancel | | Editor features | Multi-tier, pricing template, pattern examples | | Pricing drawer | Overflow link → drawer with all price keys | | Empty state | CTA when org has no custom models | | Cost applied | LLM span matched → cost stored correctly | | No matching model | Unknown model name → zero cost stored | ## Bug fix: Build tab query editor timing \`waitForBuildTabLoaded\`'s Phase 2 (chart-type-selected signal) fires as soon as \`initializeFromQuery\` sets the chart type — before \`makeAutoSQLQuery\` has run. On slower CI machines this left \`queries[0].query\` empty when tests read the editor, causing the "SQL ON + Auto mode" and "Auto → Custom" tests to receive \`""\` instead of generated SQL. Phase 3 polls the Monaco editor (\`[data-test="logs-search-bar-query-editor"]\`) for non-empty content, confirming \`onBuildQueryGenerated\` has been called and the query is ready. ## Test plan - [x] All 13 model pricing tests pass locally - [x] \`logsQueryBuilder-editor.spec.js\` (23 tests) — all pass with Phase 3 fix applied - [x] Sentinel code audit passed (no blocking issues) - [x] API cleanup added to \`cleanup.spec.js\` via \`apiCleanup.cleanupModelPricingModels()\` — 404-safe for instances where the feature is disabled 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
ab86391649 |
test: add E2E tests for report folders functionality (#11985)
## Summary
- **Add `reportFoldersPage.js`** page object with 30+ methods for folder
CRUD, report move, search, and cross-folder toggle
- **Add `reportFolders.spec.js`** with 12 tests covering:
- **P0 Smoke**: Sidebar renders with default folder, create new folder
- **P1 Functional**: Create report via API (creates temp dashboard from
scratch), move report between folders, cross-folder search, folder
sidebar search filter
- **P2 Edge Cases**: Move button disabled when source=destination, save
disabled for empty name, cancel closes dialog, default folder has no
edit/delete options, special characters allowed in folder names
- **Cleanup**: Deletes all test reports, folders, and leaves no
resources behind
- **Add `createDashboardViaApi`** to apiCleanup.js — creates a minimal
v8 dashboard from scratch, removing dependency on pre-existing
dashboards
- **Add `createReportViaApi`**, `fetchReportFolders`,
`deleteReportFolder`, `cleanupReportFolders` methods to apiCleanup.js
- Register ReportFoldersPage in PageManager
## Approach
- Everything created from scratch — unique report via API, unique
folders via UI, all cleaned up afterward
- No dependency on pre-existing dashboards or reports
- Zero `waitForTimeout` calls — all waits use `waitForLoadState`,
`waitFor({ state: 'visible/hidden' })`, or role-based waits
- Serial execution (tests build on each other: create folder → create
report → move report → cleanup)
## Test Results
```
12 passed (2.1m)
```
## CI Integration
- Added to `.github/workflows/playwright.yml` under `Reports` testfolder
alongside existing report tests
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|
|
79b86199a4 |
test: Alerts cloud compatibility for alpha1 E2E (Set2) (#10813)
## Summary - Make all 8 Alerts spec files cloud-compatible for alpha1 environment - Replace `process.env.ORGNAME` with `getOrgIdentifier()` from cloud-auth.js - Replace `getAuthToken()` (email:password) with `getAuthHeaders()` for cloud passcode-based auth in 3 files with API calls (alerts-scheduled-features, alerts-incident-correlation, alerts-vrl-encoding) ## Test plan - [ ] All existing self-hosted E2E tests still pass - [ ] Alpha1 cloud E2E Alerts shard passes --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Shrinath Rao <undefined@users.noreply.github.com> |
||
|
|
befa1883a0 |
test: add alpha1 cloud compatibility for E2E logs tests (#10763)
## Summary - Add cloud auth infrastructure (`cloud-env.js`, `cloud-auth.js`) for cloud/self-hosted switching - Centralize ingestion auth via `getAuthHeaders()` across all ingestion utilities (data, trace, service-graph, metrics) - Refactor `commonActions.js` from `exec(curl)` to `page.request.post()` for cloud cookie compatibility - Enhance `cloudLoginPage.js` + `page-manager.js` for conditional cloud page objects - Update `global-setup-alpha1.js` to fetch org identifier and passcode from cloud session - Fix `global-teardown.js` race condition with proper error handling - Replace `console.log` with `testLogger` in `commonActions.js`, `ingest-service-graph.spec.js`, `scripts/ingest-service-graph.js` - Replace raw selectors with POM methods (`applyQueryButton`, VRL editor, pagination, time range) - Add missing test tags to `searchpartition`, `unflattened`, `ingest-service-graph` specs - Fix `networkidle` → `domcontentloaded` across multiple spec files ## Companion PR - Enterprise: sets `IS_CLOUD=true` in alpha1 E2E workflow ## Test plan - [ ] Self-hosted E2E tests pass (no behavioral changes — only routing through POM + testLogger) - [ ] Alpha1 cloud E2E tests pass with cloud auth enabled - [ ] Verify no credential leaks in logs (passcode/password values never logged) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Shrinath Rao <undefined@users.noreply.github.com> |
||
|
|
06f095a628 | test: add E2E Playwright tests for Service Graph feature (#10653) | ||
|
|
dac030f64d |
test: add cleanup patterns for RBAC test artifacts (#10245)
## Summary - Add enrichment table cleanup patterns for orphaned RBAC test data: - `viewer_created_et_*`, `partial_access_et_*`, `health_check_*` - `enrich_basic_*`, `enrich_duplicate_*`, `enrich_invalid_*`, `enrich_protocols_*` - `enrich_table_*`, `enrich_update_append_*`, `enrich_update_replace_*` - `editor_create_test_*` - Add alert cleanup prefixes for RBAC test alerts: - `user_delete_test_*`, `user_update_test_*` - `viewer_delete_test_*`, `viewer_update_test_*` - `editor_create_test_*`, `editor_delete_test_*` - Add stream cleanup patterns: `backfill_source_*`, `backfill_dest_*` - Add log response body on URL enrichment table fetch failure for debugging - Fix precise regex for cleanup-only detection in global-setup.js - Fix null check before Object.keys() in cleanupUrlEnrichmentTables ## Why These patterns clean up orphaned test data from o2-enterprise RBAC tests when individual test teardown fails due to: - Test crashes/failures mid-execution - CI/CD timeouts killing jobs before teardown - API deletion failures during teardown The Playwright cleanup.spec.js serves as a safety net for all orphaned data. ## Test plan - [x] Patterns validated against actual orphaned data on dev2.internal.zinclabs.dev - [x] Source tests identified in o2-enterprise RBAC test files |
||
|
|
d1d643814e |
test: enhance cleanup patterns for orphaned test data (#10232)
### **User description**
## Summary
- Add URL enrichment tables cleanup support via new
`/api/{org}/enrichment_tables/status` endpoint
- Add cleanup patterns for orphaned streams, functions, pipelines, and
enrichment tables
- Skip data ingestion when running cleanup.spec.js alone (optimization
for cleanup-only runs)
## Changes
### URL Enrichment Tables (apiCleanup.js)
- `fetchUrlEnrichmentTables()` - Fetches URL-based tables from status
API
- `cleanupUrlEnrichmentTables(patterns)` - Cleans up tables showing "NaN
MB" in UI
### New Cleanup Patterns (cleanup.spec.js)
**Streams:**
- `e2e_apostrophe_*` - Bug #9475 apostrophe test streams
- `e2e_traces_pipeline_test`
- `e2e_traces_<timestamp>_<suffix>`
**Functions:**
- `vrl_func_*` - Pipeline VRL function tests
- `vrl_traces_func_*` - Traces VRL function tests
- `vrl_metrics_func_*` - Metrics VRL function tests
**Pipelines:**
- `metrics-pipeline-*`
- `traces-pipeline-*`
- `condition-pipeline-*`
- `metrics-condition-pipeline-*`
**URL Enrichment Tables:**
- `schema_mismatch_*`, `schema_view_*`, `url_404_*`, `url_lifecycle_*`
- `invalid_url_*`, `cancel_test_*`, `toggle_test_*`, `edit_form_*`
### Global Setup Optimization (global-setup.js)
- Auto-detect cleanup-only runs via `process.argv`
- Skip logs, metrics, and traces ingestion for cleanup runs
## Test plan
- [ ] Run cleanup.spec.js standalone and verify no data ingestion occurs
- [ ] Verify orphaned test data is cleaned up correctly
___
### **PR Type**
Enhancement, Tests
___
### **Description**
- Add URL enrichment tables cleanup methods
- Extend cleanup.spec.js with new regex patterns
- Invoke cleanupUrlEnrichmentTables in tests
- Skip data ingestion on cleanup-only runs
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>apiCleanup.js</strong><dd><code>Add URL enrichment
tables cleanup</code>
</dd></summary>
<hr>
tests/ui-testing/pages/apiCleanup.js
<ul><li>Added fetchUrlEnrichmentTables method<br> <li> Added
cleanupUrlEnrichmentTables method<br> <li> Handled fetch and delete
errors</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10232/files#diff-537fe76c0d8e26e81c5f77c83bd0ee35daaa973822105c809bf83171a26b33c5">+79/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>global-setup.js</strong><dd><code>Skip ingestion in
cleanup-only runs</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/utils/global-setup.js
<ul><li>Introduced isCleanupOnly flag<br> <li> Skipped data ingestion
for cleanup-only runs<br> <li> Retained conditional ingestion logic</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10232/files#diff-06323dad7214f86b41b62e121e716eeea0054bc4d950c6bcf4a0efe53894acc8">+20/-14</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>cleanup.spec.js</strong><dd><code>Extend cleanup test
patterns and URL tables</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/cleanup.spec.js
<ul><li>Updated pipeline cleanup regex patterns<br> <li> Extended
function cleanup patterns<br> <li> Modified enrichment tables
patterns<br> <li> Added cleanupUrlEnrichmentTables invocation</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10232/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983">+27/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
7300708a46 |
test: add E2E tests for Correlation Settings page + fix CI TestDino rerun issue (#10124)
## Summary - Adds E2E tests for Correlation Settings page (#9790) - Fixes CI failure when TestDino rerun optimization skips tests ## CI Fix Details ### Problem When TestDino's rerun optimization skips tests (because they already passed in a previous run), the `merge_and_upload_reports` job was failing: 1. Tests skip → no blob reports uploaded 2. Merge step found no artifacts, checked job status, saw all succeeded 3. Old code just did `exit 0` without creating `report.json` 4. Upload step failed: "JSON report not found" This happened on: - https://github.com/openobserve/openobserve/actions/runs/21205291873 - https://github.com/openobserve/openobserve/actions/runs/21207884853 ### Root Cause The TestDino rerun optimization works across different `run_id`s (based on cache), not just attempts. So even a "fresh" run (attempt 1) can have all tests skip if a previous run for the same PR/branch cached that all tests passed. ### Fix 1. **Merge Reports step**: Create empty `report.json` and HTML when all tests skip (aligns with ENT repo which already has this fix) 2. **Cache step**: Changed error message to notice for graceful handling 3. **Upload step**: Added safety check to skip if `report.json` doesn't exist ## Test plan - [x] Correlation Settings E2E tests pass locally - [ ] CI workflow handles rerun scenarios gracefully --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
791914fb44 |
test: add cleanup pattern for destination1-999 in alert and pipeline destinations (#10085)
## Summary
- Add regex pattern `/^destination\d{1,3}$/` to alert destinations
cleanup in `cleanup.spec.js`
- Update pipeline destinations pattern from `\d{2,3}` to `\d{1,3}` to
cover 1-3 digits
- Update `apiCleanup.js` `completeCascadeCleanup()` to support both
string prefixes and RegExp patterns
This cleans up leftover test destinations like `destination4`,
`destination44`, `destination444`, etc.
## Changes
### cleanup.spec.js
- Added `/^destination\d{1,3}$/` pattern to alert destinations array
(line 35)
- Updated pipeline destinations pattern to `/^destination\d{1,3}$/`
(line 128)
### apiCleanup.js
- Updated `completeCascadeCleanup()` to handle both string prefixes and
RegExp patterns in `destinationPrefixes` parameter
- Updated JSDoc to reflect new parameter type: `Array<string|RegExp>`
- Filter logic now checks `instanceof RegExp` to use `.test()` for regex
or `.startsWith()` for strings
## Test plan
- [x] Verified patterns match intended destination names
(destination1-999)
- [ ] Run cleanup spec to verify alert destinations are deleted
- [ ] Run cleanup spec to verify pipeline destinations are deleted
|
||
|
|
0cf0e8937c |
fix(tests): implement POM compliance for metrics tests (72% complete)
Major refactoring to fix Page Object Model violations in metrics test suite. This addresses critical code quality issues identified in the Sentinel audit. ## Changes ### Page Objects Enhanced - **metricsPage.js**: Added 350+ lines of new methods - Data visualization verification methods - Config sidebar operations - Stream selection, date ranges, notifications - Chart types, inputs, and generic UI helpers ### Test Files Fixed (5/8 - 62.5%) - ✅ **metrics-advanced.spec.js**: Fixed 13 POM violations - ✅ **metrics-aggregations.spec.js**: Fixed 8 POM violations - ✅ **metrics-config-tabs.spec.js**: Fixed 31/33 POM violations - ✅ **metrics-queries.spec.js**: Fixed 28 POM violations - ✅ **metrics-visualizations.spec.js**: Fixed 44 POM violations ### Additional Fixes - **apiCleanup.js**: Fixed error handling consistency - Unified error response format (message vs error field) - Added explicit code: 200 for successful responses ## Statistics - **Violations Fixed**: 132/184 (72%) - **Helper Functions Refactored**: 3 (eliminated 200+ lines of duplication) - **All fixed files**: ✓ Syntax validated ## Remaining Work - metrics-config.spec.js: 28 violations - metrics.spec.js: 30 violations - See POM_COMPLIANCE_FIXES_SUMMARY.md for completion guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|
|
a7f2d458d1 |
fix: correct deleteMetricsStream API call parameters
- Add delete_all=true parameter for complete stream deletion - Change error return format to use 'message' field (consistent with logs cleanup) - Ensures metrics cleanup matches logs cleanup pattern 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|
|
626e7bd9fa |
fix: add safety check to metrics cleanup to prevent accidental deletion
Add validation to ensure patterns array is not empty before attempting to clean up metrics streams. This prevents accidental deletion of all metrics streams if the method is called without proper patterns. Safety improvement for cleanupMetricsStreams() method. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|
|
0a8d1e4312 |
test: add metrics streams cleanup to pre-test cleanup
Add metrics-specific cleanup methods to handle test metrics data: - Add fetchMetricsStreams() to fetch metrics streams via API - Add deleteMetricsStream() to delete individual metrics streams - Add cleanupMetricsStreams() to clean up test metrics streams Update cleanup.spec.js to include metrics cleanup: - Clean up test metrics streams matching patterns - Protect 'default' metrics stream (primary test stream) - Support patterns: test_*_metrics, e2e_metrics_*, otlp_test_*, etc. This ensures metrics test data is cleaned up between test runs, similar to existing logs stream cleanup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|
|
8bf9eac8a2 |
test: Functions test suite rework - 67% reduction with full validation coverage (#9957)
## Summary Rework of the Functions test suite to reduce test count while maintaining 100% validation coverage. | Metric | Before | After | Change | |--------|--------|-------|--------| | **UI Tests** | 36 | 12 | **-67%** | | **API Tests (Python)** | 0 | 16 | +16 new | | **Validation coverage** | 100% | 100% | Preserved | | **CI Integration** | ❌ | ✅ | Added | **Cleanup performed:** - 3 placeholder tests removed (only had logging, no assertions) - 1 duplicate test removed - 4 cross-file duplicates deduplicated ## What Changed ### Test File Consolidation | Original Spec Files | Final Spec File | Original | Final | Reduction | |---------------------|-----------------|----------|-------|-----------| | `meta-org-js-restriction.spec.js` + `javascript-functions.spec.js` | `js-transform-type.spec.js` | 22 | 6 | 73% | | `result-array-functions.spec.js` | `row-expansion.spec.js` | 14 | 6 | 57% | | **Total** | **2 files** | **36** | **12** | **67%** | ### New Python API Tests Added 16 comprehensive API tests in `tests/api-testing/tests/test_functions_meta_org_restriction.py`: | Category | Count | Tests | |----------|-------|-------| | JS Restriction (blocked in default org) | 5 | create/test/update blocked | | VRL Functions (work in default org) | 4 | create/test/update works | | Auto-Detection | 2 | trans_type auto-detection | | Error Messages | 2 | content and consistency | | Edge Cases | 3 | empty/invalid/case-sensitivity | ### Critical Bugs Fixed 1. **Missing `_meta` org navigation** - JavaScript functions are ONLY allowed in `_meta` organization. Tests were navigating to default org. 2. **Python API tests using wrong field names** - Create/Update use `transType` (camelCase), Test endpoint uses `trans_type` (snake_case). 3. **Missing pipeline cleanup pattern** - Added `realfile*` pattern that was causing 409 errors. ## Files Modified ### UI Tests (Final) - `tests/ui-testing/playwright-tests/Functions/js-transform-type.spec.js` (6 tests) - `tests/ui-testing/playwright-tests/Functions/row-expansion.spec.js` (6 tests) ### UI Tests (Removed/Consolidated) - `meta-org-js-restriction.spec.js` → merged into `js-transform-type.spec.js` - `javascript-functions.spec.js` → merged into `js-transform-type.spec.js` - `result-array-functions.spec.js` → renamed to `row-expansion.spec.js` ### Cleanup Infrastructure - `tests/ui-testing/playwright-tests/cleanup.spec.js` - Consolidated function cleanup, added realfile* pattern - `tests/ui-testing/pages/apiCleanup.js` - Added org-aware cleanup methods ### API Tests (New) - `tests/api-testing/tests/test_functions_meta_org_restriction.py` - 16 new tests ### CI Integration - `.github/workflows/playwright.yml` - Added Functions test matrix entry ## Final Test List (12 UI Tests) ### js-transform-type.spec.js (6 tests) | # | Test | Priority | |---|------|----------| | 1 | P0: JavaScript function creation flow in _meta org | @smoke, @P0 | | 2 | P0: JS function creation and validation flow | @smoke, @P0 | | 3 | P1: JS function execution and error handling | @P1 | | 4 | P1: JS function error cases | @P1 | | 5 | P0: Default org - JS hidden, VRL works | @smoke, @P0 | | 6 | P1: Radio visibility across orgs | @P1 | ### row-expansion.spec.js (6 tests) | # | Test | Priority | |---|------|----------| | 1 | P0: VRL row expansion creation and validation flow | @smoke, @P0 | | 2 | P2: VRL row expansion edge cases | @P2 | | 3 | P0: JS row expansion creation and validation flow | @smoke, @P0 | | 4 | P1: JS row expansion edge cases and transformations | @P1 | | 5 | P1: Compare VRL and JS row expansion output | @P1 | | 6 | P1: Pipeline integration and error handling | @P1 | ## Test plan - [x] All 12 UI tests passing locally - [x] All 16 Python API tests passing locally - [x] Sentinel audit passed (POM compliant, no raw selectors) - [x] Hard assertions applied (no soft assertions) - [ ] CI pipeline runs successfully |
||
|
|
d852e7656b |
test: refactor alerts module with POM architecture and comprehensive e2e coverage (#9717)
### **User description** ## Summary Complete refactoring of the Alerts UI testing module with Page Object Model architecture, comprehensive E2E test coverage, and improved test stability. ## Key Changes ### 🏗️ Architecture Refactoring Refactored monolithic `AlertsPage` (2300+ lines) into modular Page Object classes: | Module | Responsibility | |--------|---------------| | `AlertCreationWizard` | Alert creation flows (real-time, scheduled, multi-condition, deduplication) | | `AlertManagement` | CRUD operations (update, clone, pause, resume, delete, search) | | `AlertBulkOperations` | Bulk operations (select, pause/unpause, move across folders) | | `AlertsPage` | Main entry point, folder operations, UI validations, import/export | ### 🧪 Test Coverage All 12 Alerts tests passing: | Spec File | Tests | Coverage | |-----------|-------|----------| | `alerts-e2e-flow.spec.js` | 1 | Complete E2E flow: CRUD, clone, pause/resume, move, search | | `alerts-ui-operations.spec.js` | 4 | Template/destination CRUD, scheduled alerts, UI validations | | `alerts-import.spec.js` | 3 | Import/export alerts, templates, destinations (URL + file) | | `alerts-advanced.spec.js` | 4 | Multi-condition alerts, AND/OR toggle, bulk operations, deduplication | ### 🔧 Stability Fixes - Added `test.slow()` for long-running E2E flow test - Fixed `moveAllAlertsToFolder` with proper success message assertion - Fixed `deleteAllAlertsInFolder` by removing redundant verification - Fixed `verifyAlertCreated` with navigation fallback for reliability - Fixed `selectMultipleAlerts` with visibility check and search fallback - Added post-creation waits in alert wizard to handle async UI updates ### 📝 Code Quality - Cleaned up redundant comments across all alerts files - Removed obvious "what" comments, kept meaningful "why" explanations - Preserved section dividers for navigation in long methods - Maintained JSDoc for method documentation ## New Page Object Methods ### AlertCreationWizard - `createAlert()` - Standard real-time alert with column/operator/value - `createAlertWithDefaults()` - Resilient creation using first available column - `createScheduledAlertWithSQL()` - Scheduled alert with SQL query - `createAlertWithMultipleConditions()` - Multi-condition alert with AND operator - `createScheduledAlertWithDeduplication()` - Scheduled alert with dedup config - `testConditionOperatorToggle()` - Tests AND/OR toggle functionality ### AlertManagement - `updateAlert()` - Edit alert via wizard - `cloneAlert()` - Clone with stream selection - `pauseAlert()` / `resumeAlert()` - Toggle alert state - `deleteAlertByRow()` / `deleteImportedAlert()` - Delete operations - `searchAlert()` / `searchAndDeleteAlert()` - Search operations ### AlertBulkOperations - `selectMultipleAlerts()` - Select multiple alerts for bulk ops - `bulkPauseAlerts()` / `bulkUnpauseAlerts()` - Bulk state toggle - `moveAllAlertsToFolder()` - Move alerts between folders - `deleteAllAlertsInFolder()` - Clean folder contents ## Test Results ``` Running 12 tests using 4 workers 12 passed (~6.2m) ``` ## Test Plan - [x] All 12 alerts tests passing locally - [x] Tests are independent and cleanup after themselves - [x] No regressions in existing functionality ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Refactor AlertsPage into modular PageObjects - Centralize and expose locators in a map - Delegate creation, management, bulk operations - Add advanced E2E tests for multi-condition, bulk, dedup features - Enhance LogsPage.selectStream with configurable wait ___ ### Diagram Walkthrough ```mermaid flowchart LR AP["AlertsPage"] ACW["AlertCreationWizard"] AM["AlertManagement"] ABO["AlertBulkOperations"] AP -- "delegates to" --> ACW AP -- "delegates to" --> AM AP -- "delegates to" --> ABO ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>alertsPage.js</strong><dd><code>Modularize AlertsPage with submodules and locators</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d">+569/-1059</a></td> </tr> <tr> <td><strong>alertManagement.js</strong><dd><code>Introduce AlertManagement module for CRUD</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-53afe97106daddb1fb35c3624ccedc99f21476946edc181f6287f7e8fd1bbf37">+509/-0</a> </td> </tr> <tr> <td><strong>alertCreationWizard.js</strong><dd><code>Introduce AlertCreationWizard module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-3b0a08b55d132502596d17c9d5f197de6d4779684de96ce570282e2402942e2e">+1024/-0</a></td> </tr> <tr> <td><strong>alertBulkOperations.js</strong><dd><code>Introduce AlertBulkOperations module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-dea39c18fea38783c9ef4ae71e11021eaa3663b7012ae1c481a30277139a6907">+299/-0</a> </td> </tr> <tr> <td><strong>logsPage.js</strong><dd><code>Enhance selectStream with apiWaitMs parameter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-8045b343491d8943869c1af74cdafab204dc49c02a70294417e73f47d35e0b59">+10/-6</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>alerts-advanced.spec.js</strong><dd><code>Add advanced E2E tests for alerts features</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-710af4a4eaad54a1ddd5acf0d62f977bfa18c95462b38c4f84593a970297754d">+194/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>8 files</summary><table> <tr> <td><strong>alertDestinationsPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-57e5c53b4ef998b3d8708149620ff94dcc46807927f1a3a9e9f28ed3ebe25b0a">+95/-0</a> </td> </tr> <tr> <td><strong>alertTemplatesPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-f4ebd248b2140051e74dbbbd1aabe344f01c80704ce5857e9c28a04350e018f3">+74/-4</a> </td> </tr> <tr> <td><strong>apiCleanup.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-537fe76c0d8e26e81c5f77c83bd0ee35daaa973822105c809bf83171a26b33c5">+133/-221</a></td> </tr> <tr> <td><strong>commonActions.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-4d726dd2bdb34b2c90a31798ff49b6df5bc952bd049b7c38bebb18b6db0076e2">+156/-0</a> </td> </tr> <tr> <td><strong>alerts-e2e-flow.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-32972e38c1fe0e8bb887f9f254b3130916a36f96ea924f9987493d44efefeab9">+38/-23</a> </td> </tr> <tr> <td><strong>alerts-import.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-62b6ec4818685eacc0a934d68aaadfd73b512ef4f4be25fcd5135b97c2844912">+54/-106</a></td> </tr> <tr> <td><strong>alerts-ui-operations.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-c9b523b5f5dea834b69abdf20f4acef361bdf37b1585c450e10238b1d1984f2e">+38/-82</a> </td> </tr> <tr> <td><strong>cleanup.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9717/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
e96db6332b |
test(dashboard): fix flaky tests in deployed environment (#9511)
### **User description** …riables ___ ### **PR Type** Tests, Enhancement ___ ### **Description** - Refine chart-render wait logic with class checks - Integrate values-stream helper in variable dropdown - Standardize relative time ranges to 30m - Improve streaming test with API wait loops ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Formatting</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>apiCleanup.js</strong><dd><code>Remove extraneous newline at EOF</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-537fe76c0d8e26e81c5f77c83bd0ee35daaa973822105c809bf83171a26b33c5">+1/-1</a> </td> </tr> <tr> <td><strong>cleanup.spec.js</strong><dd><code>Remove trailing blank line</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>dashboard-panel-actions.js</strong><dd><code>Refine waitForChartToRender class checks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-d29713fdcc11cbc93bda29da5261da389226cd718e4292a1c2cd96629f573a80">+27/-10</a> </td> </tr> <tr> <td><strong>dashboard-variables.js</strong><dd><code>Add stream helper and input typing delay</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-67d38d39bb67f4a0cbfa473ee81ad50b1fffebc40c635417e58905f3c865a6e2">+18/-3</a> </td> </tr> <tr> <td><strong>dashboard-streaming.spec.js</strong><dd><code>Add API wait loops in streaming test</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-92f44296937f53cb448371d1c61510c8c910fbecab83b02b8e89490d5832be19">+36/-4</a> </td> </tr> <tr> <td><strong>streaming-helpers.js</strong><dd><code>Implement waitForValuesStreamComplete utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-ba793998d7c077815ee18543001a519b7d45a9236990b60d256124a4b30d48cb">+65/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>6 files</summary><table> <tr> <td><strong>dashboard-geoMap.spec.js</strong><dd><code>Update time range to 30m</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-6ae8394cd6b915e6d55a179cf6c7dc32992b8ebbd5d9aac177c0cbd1b9f351b3">+1/-1</a> </td> </tr> <tr> <td><strong>dashboard-html-chart.spec.js</strong><dd><code>Set html chart time to 30m</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-02c503aa87193168f5aa83c8105c376ea0c4dc45e6c7bd6f255b693bf7ebc462">+1/-1</a> </td> </tr> <tr> <td><strong>dashboard-multi-y-axis.spec.js</strong><dd><code>Update multi-y-axis time to 30m</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-e90516a105c0b17c8e04c18e2b67ac10af213dbdd208fa4414cdcb7e377e6ee5">+2/-2</a> </td> </tr> <tr> <td><strong>dashboard-transpose.spec.js</strong><dd><code>Change transpose time range to 30m</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-da631007cea76a4bc59e4acd1195b59ae4131cd5208d21a9c1f94d3913911dc4">+1/-1</a> </td> </tr> <tr> <td><strong>dashboard.spec.js</strong><dd><code>Adjust gauge and table time ranges to 15m</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-d0fa0042783dc109334b05266edce228bad97adcb568dd1e447920596238e9b4">+5/-5</a> </td> </tr> <tr> <td><strong>dashboard2.spec.js</strong><dd><code>Standardize dashboard2 time to 30m</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-8c9189e9e3950fff987c45ee8116d89f15f8fdec5baad209bef6f5858f3b3045">+7/-7</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>playwright.yml</strong><dd><code>Fix typo in run_files list</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9511/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+1/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> |
||
|
|
e0d23c42a7 |
fix(e2e): resolve SDR test failures with test isolation and retry logic (#9632)
## Summary - Add unique testRunId to pattern and stream names for test isolation during parallel execution - Add retry logic to `checkPatternExists` for backend indexing delays (3 attempts with 2s wait) - Add search box filtering in `selectStream` for reliable stream selection in long lists - Add retry logic for Stream Detail button in stream association page - Fix ingestion retry with exponential backoff for "stream being deleted" errors - Update regexPatternManagement test with unique pattern names to avoid conflicts ## Test plan - [x] All 23 SDR tests pass reliably in parallel execution - [x] Verified tests pass when run individually and as a suite - [x] No regressions in other test suites |
||
|
|
790bd9a0bd | test: e2e streams race condition fix (#9631) | ||
|
|
d1dc54ff42 |
test: updated cleanup spec file to follow framework and add more pipe… (#9543)
…line patterns |
||
|
|
6ae38d5ce2 |
test(e2e): refactor pipeline condition tests and fix data ingestion timeout (#9528)
## Summary
Refactored pipeline condition tests into 2 new spec files for better
organization and maintainability, fixed data ingestion timeout issue,
and added comprehensive test coverage for pipeline conditions.
## Changes
- Refactored pipeline condition tests into 2 new spec files for better
organization
- Added 14 new comprehensive test cases (7 UI-based + 7 API-based
validation tests)
- Fixed beforeEach timeout issue by reducing data ingestion from 3,800+
to 10 records per stream
- Added cleanup patterns for `e2e_conditions_*` streams to prevent data
accumulation
- Updated apiCleanup.js to include 7 new stream names in pipeline
cleanup
- Removed outdated comments referencing conditional wait logic
- Added page object methods for condition testing in pipelinesPage.js,
logsPage.js, and streamsPage.js
## Test Coverage
### pipeline-conditions.spec.js (7 tests - all passing ✅)
- Basic condition operations with multiple operators (=, !=, Contains,
NotContains, >=)
- Condition groups, nesting, and reordering
- Field validation and error messages
- Complex operator precedence (A OR B AND C)
- Multiple conditions (A, B, C, D)
- Condition node deletion
- Comparison operators validation
### pipeline-conditions-validation.spec.js (7 tests - API-based)
- Operator precedence validation
- Nested groups with AND/OR logic
- Numeric comparisons
- String operators (case-insensitive Contains)
## Performance
- Reduced test execution time from 180s timeout to ~4.6 minutes for full
suite
- 100% pass rate for active UI tests (7/7)
## Files Changed
- `.github/workflows/playwright.yml` - Updated test configuration
- `tests/test-data/data_100.json` - Added test data for validation tests
- `tests/test-data/sample_pipeline_template.json` - Added pipeline
template
- `tests/ui-testing/pages/apiCleanup.js` - Added stream cleanup patterns
- `tests/ui-testing/pages/pipelinesPages/pipelinesPage.js` - Added
condition testing methods
- `tests/ui-testing/pages/logsPages/logsPage.js` - Added data ingestion
helpers
- `tests/ui-testing/pages/streamsPages/streamsPage.js` - Added stream
management helpers
-
`tests/ui-testing/playwright-tests/Pipelines/pipeline-conditions.spec.js`
- Refactored UI tests
-
`tests/ui-testing/playwright-tests/Pipelines/pipeline-conditions-validation.spec.js`
- New API validation tests
- `tests/ui-testing/playwright-tests/cleanup.spec.js` - Added
e2e_conditions_* pattern
## Testing
All 7 UI-based tests passing with 100% pass rate.
|
||
|
|
b3ed038bc4 | test: updated cleanup spec file (#9487) | ||
|
|
7c3ed151fe | test: added saved view cleanup to cleanup spec file (#9451) | ||
|
|
f74c90413b | test: stabilising logs core, reports, pipelines import tests for env (#9246) | ||
|
|
264316516d | test: env runs stabilisation fix, sdr, reports (#9242) | ||
|
|
7a37f760e9 |
test: stabilised logo management test and added cleanup for logo mana… (#9234)
…gement |
||
|
|
98e35c1632 |
test: added ent tags to all enterprise tests (#9040)
Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai> |
||
|
|
f61b715a1e |
test: Cleanup Mechanism and ENV Runs for e2e tests (#8839)
### **PR Type** Enhancement, Tests ___ ### **Description** - Add robust alerts cleanup utilities - Improve UI flows and resiliency - Support deployed env testing delays - Add CI cleanup and health checks ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["Playwright UI flows hardened"] API["APICleanup cascade (Alerts→Folders→Destinations→Templates)"] CI["CI workflow targets deployed env"] Delay["Configurable test step delay"] Data["Global ingestion more robust"] UI -- "uses" --> API CI -- "runs cleanup.spec" --> API CI -- "health checks + env vars" --> Data Delay -- "slows page ops" --> UI Data -- "ingest logs with parsing" --> UI ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>7 files</summary><table> <tr> <td><strong>alertDestinationsPage.js</strong><dd><code>Add search, cascade-safe delete, bulk prefix cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-57e5c53b4ef998b3d8708149620ff94dcc46807927f1a3a9e9f28ed3ebe25b0a">+178/-0</a> </td> </tr> <tr> <td><strong>alertTemplatesPage.js</strong><dd><code>Add template search, in-use handling, prefix cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-f4ebd248b2140051e74dbbbd1aabe344f01c80704ce5857e9c28a04350e018f3">+177/-2</a> </td> </tr> <tr> <td><strong>alertsPage.js</strong><dd><code>Harden alert actions, bulk deletion, search across folders</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d">+280/-9</a> </td> </tr> <tr> <td><strong>apiCleanup.js</strong><dd><code>New API-based cascade cleanup utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-537fe76c0d8e26e81c5f77c83bd0ee35daaa973822105c809bf83171a26b33c5">+399/-0</a> </td> </tr> <tr> <td><strong>page-manager.js</strong><dd><code>Wire APICleanup into PageManager</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df">+4/-0</a> </td> </tr> <tr> <td><strong>baseFixtures.js</strong><dd><code>Add configurable test step delay hooks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-c4c5ee7fbb248d1ab14d3d4e33ffb9626f9aab74c9e0207fcfc08051c8c3c7ee">+46/-0</a> </td> </tr> <tr> <td><strong>global-setup.js</strong><dd><code>Harden login and ingestion with diagnostics</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-06323dad7214f86b41b62e121e716eeea0054bc4d950c6bcf4a0efe53894acc8">+61/-22</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>commonActions.js</strong><dd><code>Fix ingestion URLs to use org variable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-4d726dd2bdb34b2c90a31798ff49b6df5bc952bd049b7c38bebb18b6db0076e2">+4/-4</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>alerts-e2e-flow.spec.js</strong><dd><code>Pre-move folder cleanup and stabilization</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-32972e38c1fe0e8bb887f9f254b3130916a36f96ea924f9987493d44efefeab9">+13/-3</a> </td> </tr> <tr> <td><strong>alerts-import.spec.js</strong><dd><code>Use dedicated invalid import test data</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-62b6ec4818685eacc0a934d68aaadfd73b512ef4f4be25fcd5135b97c2844912">+1/-1</a> </td> </tr> <tr> <td><strong>cleanup.spec.js</strong><dd><code>New pre-test API cleanup spec</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983">+29/-0</a> </td> </tr> <tr> <td><strong>invalid-alert.json</strong><dd><code>Add invalid alert sample for import tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-c695f71048e9393a45d3e3e3e415696559fecf3ba85712e7c3f366092f53f424">+24/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>playwright.yml</strong><dd><code>Target deployed env; add cleanup job and health checks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8839/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+123/-65</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |