-
Notifications
You must be signed in to change notification settings - Fork 1
153 lines (123 loc) · 3.81 KB
/
test.yml
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: Tests
on: [push, pull_request]
permissions:
contents: 'read'
pull-requests: 'write'
jobs:
test-api:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./server
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
registry-url: https://registry.npmjs.org/
- name: Cache API node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-api-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- name: Install dependencies
run: npm ci
- name: Test
run: npm test
- name: Upload coverage report
uses: actions/upload-artifact@v3
with:
name: api-coverage
path: ./server/coverage
retention-days: 1
test-frontend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./client
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
registry-url: https://registry.npmjs.org/
- name: Cache front end node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-front-end-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- name: Install dependencies
run: npm ci
- name: Test
run: npm run test:ci
- name: Upload coverage report
uses: actions/upload-artifact@v3
with:
name: frontend-coverage
path: ./client/coverage
retention-days: 1
coverage-report:
name: Generate coverage report
needs: [test-api, test-frontend]
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
defaults:
run:
working-directory: ./
steps:
- uses: actions/checkout@v3
- name: Download API coverage results
uses: actions/download-artifact@v3
with:
name: api-coverage
path: coverage/api
- name: Download Frontend coverage results
uses: actions/download-artifact@v3
with:
name: frontend-coverage
path: coverage/frontend
- name: Setup LCOV
run: sudo apt-get -y install lcov
shell: bash
- name: Report API code coverage
uses: zgosalvez/github-actions-report-lcov@v3
with:
coverage-files: coverage/api/lcov.info
artifact-name: api-code-coverage-report
github-token: ${{ secrets.GITHUB_TOKEN }}
update-comment: true
title-prefix: API Coverage
working-directory: ./server
- name: Report website code coverage
uses: zgosalvez/github-actions-report-lcov@v3
with:
coverage-files: coverage/frontend/lcov.info
artifact-name: frontend-code-coverage-report
github-token: ${{ secrets.GITHUB_TOKEN }}
update-comment: true
title-prefix: Website Coverage
working-directory: ./client