Skip to content

chore(deps-dev): bump eslint from 8.45.0 to 9.38.0 #44

chore(deps-dev): bump eslint from 8.45.0 to 9.38.0

chore(deps-dev): bump eslint from 8.45.0 to 9.38.0 #44

name: Accessibility Diff
on:
pull_request:
types: [opened, synchronize]
workflow_dispatch:
jobs:
accessibility-diff:
runs-on: ubuntu-22.04
env:
PLAYWRIGHT_BROWSERS_PATH: .playwright
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: .playwright
key: playwright-${{ hashFiles('package-lock.json') }}
restore-keys: playwright-
- name: Install Python deps
run: python3 -m pip install pytest
- name: Run monitor unit tests
run: pytest -q tests/test_monitor.py
- name: Install dependencies
run: |
# prefer clean install, but fall back to `npm install` when lockfile and package.json are out of sync
npm ci || npm install --no-audit --no-fund
- name: Install Playwright browsers and dependencies
run: |
# Install Playwright browsers using the recommended CLI
npx playwright install --with-deps
- name: Start dev server
run: |
npm run dev -- --port 5173 &
env:
NODE_ENV: test
- name: Wait for server to be ready
run: |
for i in {1..10}; do
curl -sSf http://localhost:5173 && break
sleep 2
done
- name: Run Playwright accessibility tests
continue-on-error: true
run: |
npm run test:accessibility
- name: "VERIFY-SW: check service worker in dist"
if: always()
run: |
echo "VERIFY-SW: start"
if [ -f dist/service-worker.js ]; then
echo "VERIFY-SW: SW present - dist/service-worker.js exists"
else
echo "VERIFY-SW: SW missing - dist/service-worker.js not found"
fi
echo "VERIFY-SW: end"
- name: "Dry-run monitor (local report test) — exercise and verbose"
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "MONITOR: start (dry-run verbose)"
echo "MONITOR: invoking monitor with --local-report-dir playwright-report --dry-run --verbose"
python3 scripts/monitor_a11y_ci.py --branch "${{ github.head_ref }}" --local-report-dir playwright-report --dry-run --verbose || true
echo "MONITOR: end (dry-run)"
- name: "Debug: Check Playwright report"
if: always()
run: |
echo "DEBUG: listing playwright-report"
ls -la playwright-report || true
echo "DEBUG: searching for axe-results or base64 in report files"
grep -E "axe-results-.*\.json|base64" -R playwright-report || true
- name: "Collect playwright report and run a11y diff (auto-comment on PRs)"
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "MONITOR: start (final run)"
# Use the local playwright-report directory to avoid artifact download/auth issues
# Only auto-comment when this run is for a pull_request event and a real token is available
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "MONITOR: auto-comment mode (will post/update anchored PR comment)"
python3 scripts/monitor_a11y_ci.py --auto-comment --local-report-dir playwright-report || true
else
echo "MONITOR: not a pull_request event; performing dry-run"
echo "[DRY-RUN] Extracted axe-results:"
# Call monitor in dry-run mode but echo that it's a dry-run to make logs greppable
python3 scripts/monitor_a11y_ci.py --local-report-dir playwright-report --dry-run --verbose || true
fi
echo "MONITOR: end (final run)"