Skip to content

[Feature]: Add automated GitHub Actions CI workflow for ESLint, Prettier check, and cross-browser build validation #62

Description

@prince-pokharna

Summary

The project has a .github/ directory but the CI setup, while referenced in CONTRIBUTING.md as a requirement for PRs, is not verified to be fully functional or comprehensive. A browser extension that ships to the Chrome Web Store, Firefox Add-ons, and Microsoft Edge Add-ons needs a robust automated build validation that confirms the extension builds correctly for all three targets on every PR — not just passes a linter.

Problem

  • The current CI (if present) does not confirm that build.sh runs successfully and produces valid dist/chrome/, dist/firefox/, and dist/edge/ directories.
  • ESLint and Prettier are run locally but there is no enforcement gate at the PR level that blocks merges on violations.
  • A manifest or content script error that breaks one browser's build (e.g., a Manifest V3 API used in the Firefox V2 build) would not be caught automatically.
  • There are no automated checks confirming that the webextension-polyfill is correctly bundled into all build targets.

Proposed Solution

# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  lint-and-format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - name: ESLint
        run: npm run lint
      - name: Prettier check
        run: npx prettier --check .

  build:
    runs-on: ubuntu-latest
    needs: lint-and-format
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - name: Build all targets
        run: npm run build
      - name: Verify dist structure
        run: |
          test -d dist/chrome && echo "Chrome build OK"
          test -d dist/firefox && echo "Firefox build OK"
          test -d dist/edge && echo "Edge build OK"
          test -f dist/chrome/manifest.json && echo "Chrome manifest present"
          test -f dist/firefox/manifest.json && echo "Firefox manifest present"

Additional Notes

  • The Verify dist structure step is a lightweight sanity check confirming all build targets were produced.
  • I will also add a web-ext lint step using Mozilla's web-ext tool to validate the Firefox extension manifest against the AMO submission requirements, which helps catch Firefox-specific issues before store submission.

Could you please assign this issue to me?

Labels: enhancement, ci/cd, help wanted, GSSoC 2026

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions