generated from neurobagel/react-bagel
-
Notifications
You must be signed in to change notification settings - Fork 0
145 lines (117 loc) · 3.62 KB
/
tests.yaml
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
name: tests
on:
push:
branches:
- main
pull_request:
merge_group:
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up node env
uses: actions/setup-node@v4
with:
node-version: 20
- name: Create .env file
run: |
echo -e "NB_OPENNEURO_UPLOAD_API=${{ secrets.NB_OPENNEURO_UPLOAD_API }}\nNB_USERNAME=${{ secrets.NB_USERNAME }}\nNB_PASSWORD=${{ secrets.NB_PASSWORD }}" > .env
- name: build
run: npm install && npm run build
- name: Run end to end tests
uses: cypress-io/github-action@v6
with:
wait-on: http://localhost:5173
start: npm run preview
component: false
- name: Upload e2e coverage artifact
uses: actions/upload-artifact@v4
with:
name: e2eCov
path: coverage
component:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create .env file
run: |
echo -e "NB_OPENNEURO_UPLOAD_API=${{ secrets.NB_OPENNEURO_UPLOAD_API }}\nNB_USERNAME=${{ secrets.NB_USERNAME }}\nNB_PASSWORD=${{ secrets.NB_PASSWORD }}" > .env
- name: build
run: npm install && npm run build
- name: Run component tests
uses: cypress-io/github-action@v6
with:
component: true
- name: Upload component coverage artifact
uses: actions/upload-artifact@v4
with:
name: compCov
path: coverage
unit:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run unit tests
run: npm run test:unit
- name: Upload unit coverage artifact
uses: actions/upload-artifact@v4
with:
name: unitCov
path: coverage
merge-coverage:
# Run this job only if both e2e and component tests passed
needs: [e2e, component, unit]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Setup
run: npm install
- name: Download e2e coverage artifacts
uses: actions/download-artifact@v4
with:
name: e2eCov
path: e2eCov
- name: Download component coverage artifacts
uses: actions/download-artifact@v4
with:
name: compCov
path: compCov
- name: Download unit coverage artifacts
uses: actions/download-artifact@v4
with:
name: unitCov
path: unitCov
- name: Install nyc
run: npm install -g nyc
- name: Merge coverage reports
run: |
mkdir -p combined_coverage final_coverage
nyc merge e2eCov combined_coverage/e2e.json
nyc merge compCov combined_coverage/component.json
nyc merge unitCov combined_coverage/unit.json
nyc merge combined_coverage final_coverage/combined-coverage.json
- name: Generate final coverage report
run: nyc report --reporter=lcov --temp-dir final_coverage --report-dir ./coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage/lcov.info
flags: tests
name: codecov-combined
fail_ci_if_error: true