Skip to content

perf(tests): speed up E2E test suite #132

perf(tests): speed up E2E test suite

perf(tests): speed up E2E test suite #132

Workflow file for this run

name: Unit Tests
on:
push:
branches:
- main
pull_request:
merge_group:
permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-latest
outputs:
code: ${{ steps.filter.outputs.code }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Detect relevant file changes
uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
id: filter
with:
filters: |
code:
- '**/*.js'
- '**/*.ts'
- '**/*.css'
- 'tests/**'
- 'package*.json'
test:
needs: changes
if: needs.changes.outputs.code == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '22'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build generated files needed for tests
run: npm run build:milestones && npm run build:js
- name: Run type check
run: npm run typecheck
- name: Run tests with coverage
run: npm run test:ci
- name: Upload coverage to Codecov
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: unit
verbose: true
fail_ci_if_error: false
unit-test-status:
needs: [changes, test]
if: always()
runs-on: ubuntu-latest
steps:
- name: Report status
run: |
if [[ "${{ needs.test.result }}" == "failure" ]]; then
echo "Unit tests failed"
exit 1
fi
echo "Unit tests passed or were skipped (no relevant files changed)"