-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathaction.yml
More file actions
167 lines (149 loc) · 7.11 KB
/
action.yml
File metadata and controls
167 lines (149 loc) · 7.11 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
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: 'Coverage Steps for Daily Test Improver'
description: 'Builds projects, runs tests, generates coverage reports for React and backend.ai-ui packages'
runs:
using: 'composite'
steps:
# Step 1: Setup Node.js and pnpm
- name: Install pnpm
uses: pnpm/action-setup@v5
with:
version: 11
run_install: false
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
echo "Step: Get pnpm store directory" >> coverage-steps.log
- name: Setup pnpm cache
uses: actions/cache@v5
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
# Step 2: Install dependencies
- name: Install dependencies
shell: bash
run: |
echo "Step: Installing dependencies..." >> coverage-steps.log
pnpm install --frozen-lockfile 2>&1 | tee -a coverage-steps.log
# Step 3: Build and test React project with coverage
- name: Build React GraphQL types
shell: bash
working-directory: ./react
run: |
echo "Step: Building React GraphQL types..." >> ../coverage-steps.log
pnpm run relay 2>&1 | tee -a ../coverage-steps.log
- name: Run React tests with coverage
shell: bash
working-directory: ./react
run: |
echo "Step: Running React tests with coverage..." >> ../coverage-steps.log
echo "Coverage output will be saved to: react/coverage/" >> ../coverage-steps.log
pnpm run test --coverage --coverageDirectory=coverage 2>&1 | tee -a ../coverage-steps.log
echo "React tests completed" >> ../coverage-steps.log
# Step 4: Run backend.ai-ui tests with coverage
- name: Run backend.ai-ui tests with coverage
shell: bash
working-directory: ./packages/backend.ai-ui
run: |
echo "Step: Running backend.ai-ui tests with coverage..." >> ../../coverage-steps.log
echo "Coverage output will be saved to: packages/backend.ai-ui/coverage/" >> ../../coverage-steps.log
pnpm run test --coverage --coverageDirectory=coverage 2>&1 | tee -a ../../coverage-steps.log
echo "backend.ai-ui tests completed" >> ../../coverage-steps.log
# Step 5: Create combined coverage directory
- name: Create combined coverage directory
shell: bash
run: |
echo "Step: Creating combined coverage directory..." >> coverage-steps.log
mkdir -p coverage/combined 2>&1 | tee -a coverage-steps.log
# Step 6: Copy coverage reports to combined directory
- name: Copy coverage reports
shell: bash
run: |
echo "Step: Copying coverage reports to combined directory..." >> coverage-steps.log
# Copy React coverage
if [ -d "react/coverage" ]; then
cp -r react/coverage coverage/react
echo "React coverage copied" >> coverage-steps.log
else
echo "Warning: React coverage not found" >> coverage-steps.log
fi
# Copy backend.ai-ui coverage
if [ -d "packages/backend.ai-ui/coverage" ]; then
cp -r packages/backend.ai-ui/coverage coverage/backend-ai-ui
echo "backend.ai-ui coverage copied" >> coverage-steps.log
else
echo "Warning: backend.ai-ui coverage not found" >> coverage-steps.log
fi
# Step 7: Merge coverage reports
- name: Merge coverage reports
shell: bash
run: |
echo "Step: Merging coverage reports..." >> coverage-steps.log
# Try to merge if both coverage-final.json files exist
if [ -f "react/coverage/coverage-final.json" ] && [ -f "packages/backend.ai-ui/coverage/coverage-final.json" ]; then
mkdir -p coverage/temp
cp react/coverage/coverage-final.json coverage/temp/react-coverage.json
cp packages/backend.ai-ui/coverage/coverage-final.json coverage/temp/backend-ai-ui-coverage.json
npx nyc merge coverage/temp coverage/combined/coverage-final.json 2>&1 | tee -a coverage-steps.log
npx nyc report --temp-dir coverage/combined --reporter=html --reporter=lcov --reporter=text-summary --report-dir coverage/combined 2>&1 | tee -a coverage-steps.log
echo "Combined coverage report generated at: coverage/combined/" >> coverage-steps.log
else
echo "Coverage files not found for merging, keeping separate reports" >> coverage-steps.log
fi
# Step 8: Generate coverage summary
- name: Generate coverage summary
shell: bash
run: |
echo "Step: Generating coverage summary..." >> coverage-steps.log
echo "" >> coverage-steps.log
echo "========================================" >> coverage-steps.log
echo "COVERAGE SUMMARY" >> coverage-steps.log
echo "========================================" >> coverage-steps.log
# React coverage summary
if [ -f "react/coverage/lcov-report/index.html" ]; then
echo "" >> coverage-steps.log
echo "React Project Coverage:" >> coverage-steps.log
cd react && pnpm run test --coverage --coverageReporters=text-summary 2>&1 | grep -A 10 "Coverage summary" | tee -a ../coverage-steps.log || true
cd ..
fi
# backend.ai-ui coverage summary
if [ -f "packages/backend.ai-ui/coverage/lcov-report/index.html" ]; then
echo "" >> coverage-steps.log
echo "backend.ai-ui Project Coverage:" >> coverage-steps.log
cd packages/backend.ai-ui && pnpm run test --coverage --coverageReporters=text-summary 2>&1 | grep -A 10 "Coverage summary" | tee -a ../../coverage-steps.log || true
cd ../..
fi
# Combined coverage if available
if [ -f "coverage/combined/lcov-report/index.html" ]; then
echo "" >> coverage-steps.log
echo "Combined Coverage Report available at: coverage/combined/lcov-report/index.html" >> coverage-steps.log
fi
echo "========================================" >> coverage-steps.log
echo "" >> coverage-steps.log
# Step 9: Upload coverage reports as artifacts
- name: Upload coverage artifacts
uses: actions/upload-artifact@v5
with:
name: coverage
path: |
coverage/
coverage-steps.log
retention-days: 7
- name: Final log message
shell: bash
run: |
echo "Step: Coverage generation complete!" >> coverage-steps.log
echo "Coverage artifacts uploaded with name: 'coverage'" >> coverage-steps.log
echo "" >> coverage-steps.log
echo "Coverage reports available at:" >> coverage-steps.log
echo " - React: coverage/react/lcov-report/index.html" >> coverage-steps.log
echo " - backend.ai-ui: coverage/backend-ai-ui/lcov-report/index.html" >> coverage-steps.log
echo " - Combined: coverage/combined/lcov-report/index.html (if merge successful)" >> coverage-steps.log
cat coverage-steps.log