name: e2e
on: [push]

# The browser end-to-end suites, one job per browser, deliberately not part
# of the check workflow. REPO_POLICIES.md caps make test at 20 seconds and
# script/cibuild is a plain `docker build .` whose Dockerfile runs
# make check; folding a browser suite into either would break that cap and
# slow the local fast path. These jobs are the automatic run the suites
# never had: before this workflow, every browser-level guarantee in the
# repo held only when a human remembered to run it by hand.
#
# One job per browser rather than two steps in one job, so a Chrome failure
# does not hide the Firefox result.
#
# These jobs REPORT, they do not gate: nothing merges or refuses to merge on
# their result by itself. Gitea decides that in branch protection, which
# this repo does not set, so a failure here is a red mark the reviewer must
# account for rather than a hard block. Making e2e a required check is the
# right end state and is deliberately not done yet, because the Chrome
# suite is flaky today under load (see the tracker) and a gate that fails
# at random teaches people to merge past red.
#
# Nothing here is allowed to pass vacuously. There is no continue-on-error
# and no `|| true`: script/test-e2e and script/test-e2e-firefox both exit
# non-zero when docker is missing, when the extension build is absent, and
# when the browser fails to start, and the Chrome harness aborts the whole
# suite if its network interception is not in effect.
jobs:
    e2e-chrome:
        runs-on: ubuntu-latest
        steps:
            # actions/checkout v4.2.2, 2026-02-22
            - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
            - run: script/bootstrap
            - run: make test-e2e

    e2e-firefox:
        runs-on: ubuntu-latest
        steps:
            # actions/checkout v4.2.2, 2026-02-22
            - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
            - run: script/bootstrap
            - run: make test-e2e-firefox
