mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 00:08:55 +00:00
## In plain words Our website code and UI tests live here (openobserve), but the triggers that run the **enterprise** e2e tests live in the separate o2-enterprise repo. So when a PR here changes the website or tests, we don't find out it broke an *enterprise-only* test until it randomly surfaces in some later enterprise PR. This adds a **gate**: if a PR touches the website (`web/`) or UI tests (`tests/ui-testing/`), it must run the enterprise-only e2e tests **before it can merge** — so a breakage is caught on the PR that caused it, not days later somewhere else. ## What happens on a PR | PR changes | What the gate does | |---|---| | Nothing in `web/` or `tests/ui-testing/` | ✅ Passes instantly — never gets in the way of unrelated PRs | | Website/tests **+** `skip-ent-e2e` label | ✅ Passes — a deliberate, on-the-record opt-out | | Website/tests, but **no** `e2e` label | ❌ Fails with "add the `e2e` label to run enterprise tests" — so it can't be skipped by accident | | Website/tests **+** `e2e` label | Runs the enterprise tests over in o2-enterprise, waits for the result, and passes/fails with them. On failure it posts a "🚫 Needs Review" comment linking the run | The check always runs and reports a result on every PR (so unrelated PRs are never left hanging), and it's the check you mark **"required"** in branch protection to actually block a merge. ## How it works (technical) - Companion engine: **o2-enterprise PR https://github.com/openobserve/o2-enterprise/pull/2199** (`oss-pr-ent-gate.yml`). This workflow dispatches it, polls it to completion, and mirrors its pass/fail as this check. - "Enterprise-only tests" are **auto-computed, not a hand-kept list** — the engine diffs the two repos' Playwright test matrices (whatever the enterprise side runs that openobserve doesn't). ~15 specs today. - **Pure CI — no AI/LLM.** Deterministic dispatch + poll + comment. - Fork PRs pass with a notice (the token/branch isn't available to forks). ## Turn it on (one-time) - Make **`ent-e2e-gate`** a required status check on `main` in branch protection — the switch that actually enforces the block. - `secrets.ORG_ADMIN_TOKEN` — already present (the docgen / e2e-council callers use it). - `vars.ENT_GATE_REF` — set to `ci/ent-e2e-gate` until the companion engine PR merges, then change to `main`. - `vars.ENT_E2E_GATE_DISABLED = 'true'` — kill switch (gate passes without running anything). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>