mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 08:09:22 +00:00
## Problem `reportFolders.spec.js` failed intermittently in CI. `P2: Move button disabled when source equals destination` failed on all 3 retries with a freshly-created report each time — the signature of poisoned shared state, not timing flake. ## Root causes Four independent test-side defects, all rooted in specs sharing one org, one user, and one `default` folder under `fullyParallel: true, workers: 5`: 1. **Reports bound to a stranger's dashboard.** `createReportViaApi` ignored the dashboard the test had just created and attached to `dashboards[0]` — whichever dashboard sorted first alphabetically in the shared folder. Deleting a dashboard removes its reports, so a neighbouring spec's cleanup made the report vanish mid-test. 2. **Blanket cleanups.** `cleanupDashboards()` deletes *every* dashboard owned by the automation user — every other spec's included (16 in one observed run). `reportFolders` also deleted every report matching `test_report_`, which swept up `scheduledReportsDrawer`'s `test_report_sched_*`. 3. **Bulk select-all across the shared folder.** `reports-bulk-operations` did "select all in `default` → bulk move/delete". Under parallel load that captured other specs' reports. Confirmed on a live server: `reportFolders`' report was found sitting in `bulk_test_folder_*`, created 78ms apart. 4. **A retry that could never succeed.** `expectReportVisibleInTable` retried by re-typing the same value into the search box. The Vue model never changed, and the in-folder search is a client-side filter over already-fetched rows — it cannot pull in a report the page hasn't loaded. The poll burned its full 45s doing nothing. Separately, `clickMove()` swallowed its dialog-close wait, so a move that never landed passed silently and failed a *later* test instead. ## Changes