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, so folding a browser suite into either would blow that cap # and slow the local fast path. Before this workflow every browser-level # guarantee in this repo held only when a human remembered to run it. # # 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 — which is what makes them # runnable here at all: the runner executes the job in a container against # the host's docker socket, so a `-v "$PWD:/work"` source path is resolved # by the host daemon and mounts an empty directory, and the runner image's # node is 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. # # 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