name: extension # Lint + unit tests. The sign-and-publish dance moved into build.yml's # `sign-extension` job (2026-05-25) — `:latest` now always bundles the XPI # because sign-extension runs as a build-web dependency in the SAME workflow, # eliminating the prior race between build.yml and a separate extension.yml. # Signed XPIs are cached in Forgejo Release Assets named `ext-`. on: push: branches: [dev, main] paths: - 'extension/**' - '.forgejo/workflows/extension.yml' # test/version.spec.js asserts ci.yml's extension-version guard never # ignores a file web-ext actually packages, so a ci.yml-only edit can # break this suite and must trigger it. - '.forgejo/workflows/ci.yml' pull_request: branches: [main] paths: - 'extension/**' - '.forgejo/workflows/ci.yml' workflow_dispatch: jobs: lint: runs-on: python-ci container: image: node:24-bookworm-slim steps: - uses: actions/checkout@v4 # Not --no-save: vitest and web-ext are both real devDependencies now, # and the suite needs vitest resolvable from node_modules. - name: Install dev dependencies run: cd extension && npm install --no-audit --no-fund - name: Lint run: cd extension && npm run lint # Pure-logic specs over lib/url.js and lib/platforms.js plus manifest / # package version-consistency checks. No browser, no network. - name: Unit tests run: cd extension && npm run test:unit