Expose ExtractorSession for Playwright/camoufox-js so Node automations can import context dumps instead of shelling out to the Python package. Same fixture as the Python tests; wired into Makefile and Gitea CI.
111 lines
2.9 KiB
YAML
111 lines
2.9 KiB
YAML
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
|
|
test -L automation-js/src/js/dom.js
|
|
test -L automation-js/src/js/prompt.js
|
|
diff -q automation-js/src/js/dom.js extension/core/dom.js
|
|
diff -q automation-js/src/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
|
|
|
|
quality-js:
|
|
name: automation-js (vitest + real Chromium)
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: automation-js
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
|
|
- name: Install deps
|
|
run: npm install
|
|
|
|
- name: Install Playwright Chromium
|
|
run: npx playwright install --with-deps chromium
|
|
|
|
- name: Typecheck
|
|
run: npm run typecheck
|
|
|
|
- name: Vitest
|
|
run: npm test
|
|
|
|
- name: Build (verifies dist/js copy step)
|
|
run: npm run build
|