Skip to content

CI: Extract browser integration tests into independent workflow #19674

@chargome

Description

@chargome

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

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

Goal

Extract browser integration test jobs (job_browser_playwright_tests, job_browser_loader_tests) from build.yml into an independent ci-browser-tests.yml workflow.

New workflow: ci-browser-tests.yml

name: 'CI: Browser 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. browser_playwright_tests — 13 bundle types × browsers, ESM sharded 4 ways (same as current job_browser_playwright_tests). Runs on ubuntu-24.04-large-js.
  3. browser_loader_tests — 7 loader bundle variants (same as current job_browser_loader_tests). Runs on ubuntu-24.04-large-js.
  4. browser_tests_gate — gate job named Browser Tests Passed, checks all above jobs

Playwright caching

The .github/actions/install-playwright composite action handles Playwright browser caching. This already uses actions/cache and works cross-workflow. No changes needed.

Conditional execution

Current jobs check changed_browser_integration to skip when browser integration test files haven't changed. This workflow needs the same logic — either inline the change detection or call reusable-metadata.yml.

Transition steps

  1. Create ci-browser-tests.yml. Browser tests now run in both build.yml and ci-browser-tests.yml (dual-running).
  2. Verify stability over several days/PRs.
  3. Ruleset change (requires admin): Add Browser Tests Passed as required status check to all 4 rulesets.
  4. Remove job_browser_playwright_tests, job_browser_loader_tests from build.yml and from job_required_jobs_passed needs list.

Concurrency

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