## Summary
- Added `playwright_regression.yml` with one-shard-per-spec parallelism
(11 regression specs)
- Removed `RegressionSet` shard from main `playwright.yml` (tests now
run via dedicated regression workflow)
- Added `Cache test failures to TestDino` step to regression workflow
(matching main playwright.yml)
- Uses `ubicloud-standard-8` runners for all regression jobs
## Schedule
- Auto-triggers every 4 hours starting from 9 AM IST (3:30, 7:30, 11:30,
15:30, 19:30, 23:30 UTC)
- Manual trigger via `workflow_dispatch`
## Test Plan
- [ ] Confirm `playwright_regression.yml` appears in Actions tab
- [ ] Trigger a manual run to verify all 11 regression specs run in
parallel
- [ ] Verify `playwright.yml` no longer includes RegressionSet shard
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
## Summary
- Split regression tests out of main `playwright.yml` into a dedicated
`playwright_regression.yml` workflow
- Regression tests now run with **one shard per spec** for maximum
parallelism
- Removed `RegressionSet` shard from main `playwright.yml`
## Schedule
- Auto-triggers every 4 hours starting from 9 AM IST (3:30, 7:30, 11:30,
15:30, 19:30, 23:30 UTC)
- Manual trigger via `workflow_dispatch` on any branch (always runs on
localhost)
## Test Plan
- [ ] Confirm `playwright_regression.yml` appears in Actions tab
- [ ] Trigger a manual run to verify all 10 regression specs run in
parallel
- [ ] Verify `playwright.yml` no longer includes RegressionSet shard
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
## Summary
- Skip TestDino "Cache test failures" and "Upload to TestDino" steps
when all tests pass
- Both steps now gate on `needs.ui_integration_tests.result ==
'failure'` so they only run when at least one test shard failed
- The retry mechanism (`tdpw last-failed`) is unaffected — when there
are failures the cache step still runs, and the re-run flow works as
before
## Why
TestDino bills per test case uploaded. Running both steps on green
builds wastes quota with zero value since the user only uses TestDino
for failure analysis.
## Changes
- `merge_and_upload_reports` job: "Cache test failures" step condition
changed from `always()` to `needs.ui_integration_tests.result ==
'failure'`
- `merge_and_upload_reports` job: "Upload to TestDino" step condition
changed from `(success() || failure())` to
`needs.ui_integration_tests.result == 'failure'`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
## Summary
- Adds 18 new POM methods to `alertsPage.js` for stream-type/query-mode
coherence verification, chart state assertions, query editor
interaction, and aggregation field filtering
- Adds 5 helper methods to `alertCreationWizard.js` for full editor
open/close, stream switching, and query execution
- Adds new regression spec `alerts-stream-switching-regression.spec.js`
covering 5 closed bugs:
| Bug | Description |
|-----|-------------|
| #11580 | Metrics+PromQL -> Logs, PromQL editor persists |
| #11572 | Logs -> Metrics -> Logs, chart error "No field named value" |
| #11571 | Builder -> SQL, chart blank table instead of line |
| #11573 | Full editor open/close blanks the graph |
| #11578 | Agg functions don't filter to integer fields |
## Test plan
- [ ] Run `alerts-stream-switching-regression.spec.js` against dev
environment
- [ ] All 5 tests pass with no raw selectors in spec (POM-compliant)
- [ ] Chart assertions verify canvas child exists (not just bounding
box)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Build frontend and Rust binary in parallel using /tmp/dist trick
Remove VITE_COVERAGE/COVERAGE env vars and coverage instrumentation
Remove generate_coverage_report job and all nyc upload/report steps
Rename artifact debug-binary → release-ci-binary, add frontend-dist
artifact
Update playwright_summary needs to drop generate_coverage_report
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
## Summary
- Adds `github.event.pull_request.base.ref == 'main'` guard to the "Add
milestone to PR" step
- PRs opened against non-main branches (feature, release, etc.) will no
longer receive auto-assigned milestones
- Issue milestone logic is unchanged (issues don't have a target branch)
## Test plan
- [ ] PR opened against `main` → milestone is assigned (existing
behavior preserved)
- [ ] PR opened against a non-`main` branch (e.g., `feature/xyz`) →
milestone step is skipped
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
## Summary
- In `playwright_summary`, `merge_and_upload_reports` result of
`failure` is now treated as non-blocking (same as `success`/`skipped`)
- The Playwright summary check will pass even if the TestDino
merge/upload job fails (e.g. network issues, bad token, API outage)
- Actual test results (`build_binary`, `ui_integration_tests`) still
gate the summary as before
## Why
The TestDino upload is observability/reporting infrastructure — it
should never cause a PR's required check to fail when the tests
themselves passed. Previously a transient TestDino failure would block
merges.
## Test plan
- [ ] Verify `playwright_summary` passes when `merge_and_upload_reports`
succeeds (existing behavior)
- [ ] Verify `playwright_summary` passes when `merge_and_upload_reports`
fails (new behavior)
- [ ] Verify `playwright_summary` still fails when
`ui_integration_tests` fails (unchanged)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Auto-assigns the PR creator as assignee when a PR is opened or marked
ready for review
- Auto-assigns the issue creator if no assignee is set when an issue is
opened
- Adds both PRs and issues to org Project (number 19)
- Sets the lowest open milestone on PRs (non-draft) and issues that
don't already have one set
**Milestone selection logic:**
- Prefers the lowest semver milestone whose due date has not yet passed
(milestones with no due date are treated as not expired)
- If all milestones are past due, falls back to the most recently
expired one
Uses `ORG_ADMIN_TOKEN` (fine-grained PAT) for all operations. Workflow
uses `pull_request_target` so fork PRs also get metadata without needing
checkout.
## Test plan
- [ ] Open a non-draft PR → creator assigned, lowest non-expired
milestone set, added to project
- [ ] Open a PR when all milestones are past due →
least-recently-expired milestone is set
- [ ] Open a PR that already has a milestone → milestone not overwritten
- [ ] Open an issue with no assignee → creator assigned, milestone set,
added to project
- [ ] Open an issue with an existing assignee → assignee not overwritten
## Summary
- Replaces `label_milestone.yml` and `get_next_milestone.js` with a
single `auto-assign-metadata.yml`
- Fixes a bug in the old workflow where `github.event` (object) was
compared to a string instead of `github.event_name`, causing milestone
assignment to silently never run
## What the workflow does
| Trigger | Actions |
|---|---|
| PR opened / ready for review | Assign creator, set lowest open
milestone (skip if already set), add to project board |
| Issue opened | Assign creator (if unassigned), set lowest open
milestone (skip if already set), add to project board |
## Requirements
Org-level secret `ORG_ADMIN_TOKEN` (fine-grained PAT) with:
- Repository permissions: Issues (R/W), Pull requests (R/W)
- Organization permissions: Projects (R/W)
Following fixes and enhancements have been made:
**Service Discovery**:
- default field tracker is now used to distinguish services as well in
absence of a user config, the system works out of box
- UI issues
- incorrect field was displayed when a card in recommendation was
clicked
- scope/workload selectors were leftover
- stream based service search
**Incidents**:
- AI Analysis failure now emits a failure event correctly, avoiding
false-positive and preventing UI from getting stuck when a prior
`AIAnalysisBegin` event remained in place
- correlate alerts by alert ID, this was a regression after correlation
revamp, useful for correlation in absence of alert ID
- fix sqlx issue wherein `u64` wasn't supported for sqlite, now turned
into `i64`
**Service graph**:
- now ingests using HTTP bulk API. Was failing since recently moved
service graph daemon to alertmanager, which used internal ingest call,
which was unsupported on alertmanager
- Also add Python 2.0 license support for JS
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: ByteBaker <undefined@users.noreply.github.com>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Add merge_group event trigger to all required CI workflows so they run
when PRs enter the merge queue. Fix github.event.pull_request references
in dispatch-event-enterprise.yml to handle merge_group context.
Add Playwright E2E tests for the new autocomplete value suggestions
feature that persists field values in IndexedDB and shows them when
typing `field =`.
Tests cover:
- IndexedDB capture from field expansion (Values API)
- IndexedDB capture from search results (marked as expected-to-fail due
to bug)
- Autocomplete suggestions for operators: =, !=, <>, >=, <=, IN, NOT IN,
LIKE
- Numeric value quoting (no quotes for numbers)
- TTL expiry filtering
- Stream/org isolation
- Traces page autocomplete
Note: One test marked as expected-to-fail due to BLOCKER BUG where
captureFromSearchHits() doesn't write to IndexedDB (schemaFields
filtering issue)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Neha P <undefined@users.noreply.github.com>