Skip to content

CI: Extract E2E tests into independent workflow #19673

@chargome

Description

@chargome

Linear ticket: https://linear.app/getsentry/issue/JS-1876

Depends on: #19677 (build output caching)
Parent: #19671

Goal

Extract E2E test jobs (job_e2e_prepare, job_e2e_tests, job_optional_e2e_tests) from build.yml into an independent ci-e2e.yml workflow. This is the first extraction because E2E tests are the most flaky and have the longest running time, making re-run wait times most painful.

New workflow: ci-e2e.yml

name: 'CI: E2E Tests'
on:
  push:
    branches: [develop, master, v9, v8, release/**]
  pull_request:
  merge_group:
    types: [checks_requested]
  workflow_dispatch:

Jobs

  1. restore_build — uses .github/actions/restore-build (from CI: Build output caching + cross-workflow restore-cache action #19677) to get build output via actions/cache/restore with Nx-cached fallback
  2. e2e_prepare — builds tarballs, generates test matrix (same as current job_e2e_prepare)
  3. e2e_tests — runs framework test apps against Verdaccio (same as current job_e2e_tests)
  4. optional_e2e_tests — canary/optional tests requiring secrets (same as current job_optional_e2e_tests)
  5. e2e_gate — gate job named E2E Tests Passed, checks all above jobs

Needs from metadata

The E2E jobs need is_base_branch, changed_any_code, and force_skip_cache from metadata. Either:

Transition steps

  1. Create ci-e2e.yml with all jobs above. E2E tests now run in both build.yml and ci-e2e.yml (dual-running).
  2. Verify ci-e2e.yml is stable over several days/PRs.
  3. Ruleset change (requires admin): Add E2E Tests Passed as required status check to all 4 rulesets (develop, master, v[89], v7).
  4. Remove job_e2e_prepare, job_e2e_tests, job_optional_e2e_tests from build.yml. Remove them from job_required_jobs_passed needs list.

Concurrency

Needs its own concurrency group to avoid cancelling other workflows:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

Metadata

Metadata

Assignees

No one assigned

    Labels

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions