Skip to content

[OPIK-6707] [CI] feat: add v2 E2E PR-gate workflow + wire Allure reporter#6876

Merged
AndreiCautisanu merged 5 commits into
mainfrom
andreic/OPIK-6707-v2-e2e-ci-pr-gate
May 28, 2026
Merged

[OPIK-6707] [CI] feat: add v2 E2E PR-gate workflow + wire Allure reporter#6876
AndreiCautisanu merged 5 commits into
mainfrom
andreic/OPIK-6707-v2-e2e-ci-pr-gate

Conversation

@AndreiCautisanu
Copy link
Copy Markdown
Contributor

@AndreiCautisanu AndreiCautisanu commented May 27, 2026

Details

Adds the PR-gate CI workflow for the Opik 2.0 E2E suite (tests_end_to_end/e2e/), mirroring the v1 end2end_suites_typescript.yml. The v2 suite was previously run only manually against staging — this gives it a PR gate. Modernized vs v1: drops the test-helper-service and Python-SDK install steps (the v2 FastAPI bridge auto-spawns via Playwright's webServer and pins its own deps), adds uv setup + a bridge uv sync, and forces the 2.0 UI (TOGGLE_FORCE_WORKSPACE_VERSION=version_2).

  • end2end_suites_v2.ymlpull_request on tests_end_to_end/e2e/** + workflow_dispatch (tier choice t1/t2/t3). Builds Opik locally, waits for pods + backend health, runs npm run test:t1 (@t1-smoke) against localhost:5173, uploads playwright-report + test-results. Non-blocking on PRs (continue-on-error), mirroring v1.
  • playwright.config.ts + package.json — wire the allure-playwright reporter (none existed; design §6.5 called for it). Required so the deployed-environment job (comet-automation-tests, separate PR) can upload to Allure TestOps.

Change checklist

  • User facing
  • Documentation update

Issues

  • OPIK-6707

AI-WATERMARK

AI-WATERMARK: yes

  • Tools: Claude Code
  • Model(s): Claude Opus 4.7
  • Scope: Workflow file authoring + allure-playwright reporter wiring; design reconciled against v1 templates and the parent E2E infra spec.
  • Human verification: pending review.

Testing

Documentation

…rter

Add end2end_suites_v2.yml mirroring the v1 PR-gate for the Opik 2.0 E2E
suite: PR-triggered on tests_end_to_end/e2e/**, builds Opik locally with
the 2.0 UI forced on, runs the @t1-smoke tier against localhost:5173,
uploads Playwright report + test-results. Modernized vs v1 — drops the
test-helper-service and Python-SDK installs (the v2 bridge auto-spawns via
Playwright's webServer and pins its own deps), adds uv setup + bridge sync.

Wire the allure-playwright reporter into the e2e playwright.config so the
deployed-environment job (comet-automation-tests, separate PR) can upload
to Allure TestOps — the suite produced no allure-results before this.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AndreiCautisanu AndreiCautisanu requested review from a team as code owners May 27, 2026 10:12
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file Infrastructure tests Including test files, or tests related like configuration. typescript *.ts *.tsx labels May 27, 2026
Comment thread tests_end_to_end/e2e/playwright.config.ts
Comment thread .github/workflows/end2end_suites_v2.yml
Comment thread .github/workflows/end2end_suites_v2.yml
AndreiCautisanu and others added 2 commits May 27, 2026 18:38
Wrap the suite run in `allurectl watch` and add the ALLURE_* env block +
allurectl install, mirroring the v1 PR-gate. Every run now creates a
TestOps launch (project 1) rather than only uploading allure-results as a
GitHub artifact. ALLURE_TOKEN already exists in the repo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… for Allure

So the TestOps launch (and the Playwright trace viewer) renders each test as
a labelled timeline instead of one opaque block. Coarse phases at the test
level (seed / navigate / verify), fine steps inside each POM method, per the
CUJ retro rule §13. A failed assertion is now attributed to a named step at
both granularities, so it's clear where a run stopped.

The _seed/sdk-clients API sanity test is left flat — wrapping 3-line API
calls in steps would just add timeline noise.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AndreiCautisanu and others added 2 commits May 28, 2026 10:38
…waitFor fails fast

Without this, `locator.waitFor()` calls that don't pass an explicit
`timeout:` inherit the *test* timeout (180s on the slower CUJ tests). A
missing FE testid then burns the full test budget per attempt — observed
on the OPIK-6597 staging run: 3× 180s waiting for an undeployed
add-edit-rule-dialog testid.

`actionTimeout` is the Playwright equivalent of page.setDefaultTimeout —
applies to every action (click/fill/waitFor/etc.) when the call site
doesn't pass its own `timeout:`. POM methods that legitimately need
longer (trace-panel cold-load 30s, polling 90-120s) already pass
explicit timeouts and override this default.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AndreiCautisanu AndreiCautisanu merged commit bdf1d47 into main May 28, 2026
17 checks passed
@AndreiCautisanu AndreiCautisanu deleted the andreic/OPIK-6707-v2-e2e-ci-pr-gate branch May 28, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file Infrastructure tests Including test files, or tests related like configuration. typescript *.ts *.tsx

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants