name: e2e on: [push] # The browser end-to-end suites, one job per browser, deliberately kept out # 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 blow 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 this # 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. # # Each job is one script and nothing else. Both scripts need docker and # nothing else — they deliver the repo to the daemon as a build context and # build the extension inside the pinned image — so neither depends on the # runner image's toolchain, which ships a node too old to install this # repo's dependencies. # # These jobs REPORT, they do not gate. Whether a check blocks a merge is # Gitea branch protection, which this repo does not configure, so a failure # here is a red mark a reviewer has to account for rather than a hard # block. Making e2e-chrome a required check is the intended end state and # is deliberately not done yet: the Chrome suite is flaky under load today, # and a gate that fails at random teaches people to merge past red. # # Nothing here may pass vacuously. There is no continue-on-error and no # `|| true`. Both scripts exit non-zero when docker is missing, when the # image build fails, and when the browser fails to start; the Chrome # harness aborts the suite outright 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/test-e2e e2e-firefox: runs-on: ubuntu-latest steps: # actions/checkout v4.2.2, 2026-02-22 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - run: script/test-e2e-firefox