name: CI on: push: branches: [master, main] pull_request: branches: [master, main] jobs: quality: name: Lint + tests runs-on: ubuntu-latest defaults: run: working-directory: automation steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" cache: pip cache-dependency-path: automation/pyproject.toml - name: Set up Node (JS syntax check only) uses: actions/setup-node@v4 with: node-version: "20" - name: Syntax-check extension JS working-directory: ${{ github.workspace }} run: | set -euo pipefail for f in \ extension/core/dom.js \ extension/core/prompt.js \ extension/page-patcher.js \ extension/content.js \ extension/background.js \ extension/popup.js do node --check "$f" echo "OK $f" done python3 -m json.tool extension/manifest.json >/dev/null echo "OK extension/manifest.json" - name: Verify shared-core symlinks working-directory: ${{ github.workspace }} run: | set -euo pipefail test -L automation/context_extractor/js/dom.js test -L automation/context_extractor/js/prompt.js diff -q automation/context_extractor/js/dom.js extension/core/dom.js diff -q automation/context_extractor/js/prompt.js extension/core/prompt.js - name: Install package + dev deps run: | python -m pip install --upgrade pip pip install -e ".[dev]" - name: Install Playwright Chromium run: playwright install --with-deps chromium - name: Pytest run: pytest -q - name: Package extension zip (smoke) working-directory: ${{ github.workspace }} run: | python3 scripts/package_extension.py test -f dist/context-extractor-extension.zip