-
Notifications
You must be signed in to change notification settings - Fork 0
75 lines (65 loc) · 2.01 KB
/
unit-tests.yml
File metadata and controls
75 lines (65 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
name: Unit Tests
on:
schedule:
- cron: '0 9 * * 1' # Every Monday at 09:00 UTC
push:
branches:
- main
pull_request:
merge_group:
permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-latest
outputs:
# On scheduled runs there is no diff to compare — always run tests.
# On push/PR, only run when relevant files changed.
code: ${{ github.event_name == 'schedule' || steps.filter.outputs.code == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Detect relevant file changes
uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
if: github.event_name != 'schedule'
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:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup
- 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)"