Skip to content

Commit e6119f3

Browse files
Daily Test Coverage Improver - Updates to complete configuration (#4762)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Jong Eun Lee <[email protected]>
1 parent eb2a1cf commit e6119f3

File tree

1 file changed

+167
-0
lines changed
  • .github/actions/daily-test-improver/coverage-steps

1 file changed

+167
-0
lines changed
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
name: 'Coverage Steps for Daily Test Improver'
2+
description: 'Builds projects, runs tests, generates coverage reports for React and backend.ai-ui packages'
3+
4+
runs:
5+
using: 'composite'
6+
steps:
7+
# Step 1: Setup Node.js and pnpm
8+
- name: Install pnpm
9+
uses: pnpm/action-setup@v4
10+
with:
11+
version: latest
12+
run_install: false
13+
14+
- name: Setup Node.js
15+
uses: actions/setup-node@v4
16+
with:
17+
node-version-file: ".nvmrc"
18+
cache: "pnpm"
19+
20+
- name: Get pnpm store directory
21+
shell: bash
22+
run: |
23+
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
24+
echo "Step: Get pnpm store directory" >> coverage-steps.log
25+
26+
- name: Setup pnpm cache
27+
uses: actions/cache@v4
28+
with:
29+
path: ${{ env.STORE_PATH }}
30+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
31+
restore-keys: |
32+
${{ runner.os }}-pnpm-store-
33+
34+
# Step 2: Install dependencies
35+
- name: Install dependencies
36+
shell: bash
37+
run: |
38+
echo "Step: Installing dependencies..." >> coverage-steps.log
39+
pnpm install 2>&1 | tee -a coverage-steps.log
40+
41+
# Step 3: Build and test React project with coverage
42+
- name: Build React GraphQL types
43+
shell: bash
44+
working-directory: ./react
45+
run: |
46+
echo "Step: Building React GraphQL types..." >> ../coverage-steps.log
47+
pnpm run relay 2>&1 | tee -a ../coverage-steps.log
48+
49+
- name: Run React tests with coverage
50+
shell: bash
51+
working-directory: ./react
52+
run: |
53+
echo "Step: Running React tests with coverage..." >> ../coverage-steps.log
54+
echo "Coverage output will be saved to: react/coverage/" >> ../coverage-steps.log
55+
pnpm run test -- --coverage --coverageDirectory=coverage 2>&1 | tee -a ../coverage-steps.log
56+
echo "React tests completed" >> ../coverage-steps.log
57+
58+
# Step 4: Run backend.ai-ui tests with coverage
59+
- name: Run backend.ai-ui tests with coverage
60+
shell: bash
61+
working-directory: ./packages/backend.ai-ui
62+
run: |
63+
echo "Step: Running backend.ai-ui tests with coverage..." >> ../../coverage-steps.log
64+
echo "Coverage output will be saved to: packages/backend.ai-ui/coverage/" >> ../../coverage-steps.log
65+
pnpm run test -- --coverage --coverageDirectory=coverage 2>&1 | tee -a ../../coverage-steps.log
66+
echo "backend.ai-ui tests completed" >> ../../coverage-steps.log
67+
68+
# Step 5: Create combined coverage directory
69+
- name: Create combined coverage directory
70+
shell: bash
71+
run: |
72+
echo "Step: Creating combined coverage directory..." >> coverage-steps.log
73+
mkdir -p coverage/combined 2>&1 | tee -a coverage-steps.log
74+
75+
# Step 6: Copy coverage reports to combined directory
76+
- name: Copy coverage reports
77+
shell: bash
78+
run: |
79+
echo "Step: Copying coverage reports to combined directory..." >> coverage-steps.log
80+
# Copy React coverage
81+
if [ -d "react/coverage" ]; then
82+
cp -r react/coverage coverage/react
83+
echo "React coverage copied" >> coverage-steps.log
84+
else
85+
echo "Warning: React coverage not found" >> coverage-steps.log
86+
fi
87+
# Copy backend.ai-ui coverage
88+
if [ -d "packages/backend.ai-ui/coverage" ]; then
89+
cp -r packages/backend.ai-ui/coverage coverage/backend-ai-ui
90+
echo "backend.ai-ui coverage copied" >> coverage-steps.log
91+
else
92+
echo "Warning: backend.ai-ui coverage not found" >> coverage-steps.log
93+
fi
94+
95+
# Step 7: Merge coverage reports
96+
- name: Merge coverage reports
97+
shell: bash
98+
run: |
99+
echo "Step: Merging coverage reports..." >> coverage-steps.log
100+
# Try to merge if both coverage-final.json files exist
101+
if [ -f "react/coverage/coverage-final.json" ] && [ -f "packages/backend.ai-ui/coverage/coverage-final.json" ]; then
102+
mkdir -p coverage/temp
103+
cp react/coverage/coverage-final.json coverage/temp/react-coverage.json
104+
cp packages/backend.ai-ui/coverage/coverage-final.json coverage/temp/backend-ai-ui-coverage.json
105+
npx nyc merge coverage/temp coverage/combined/coverage-final.json 2>&1 | tee -a coverage-steps.log
106+
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
107+
echo "Combined coverage report generated at: coverage/combined/" >> coverage-steps.log
108+
else
109+
echo "Coverage files not found for merging, keeping separate reports" >> coverage-steps.log
110+
fi
111+
112+
# Step 8: Generate coverage summary
113+
- name: Generate coverage summary
114+
shell: bash
115+
run: |
116+
echo "Step: Generating coverage summary..." >> coverage-steps.log
117+
echo "" >> coverage-steps.log
118+
echo "========================================" >> coverage-steps.log
119+
echo "COVERAGE SUMMARY" >> coverage-steps.log
120+
echo "========================================" >> coverage-steps.log
121+
122+
# React coverage summary
123+
if [ -f "react/coverage/lcov-report/index.html" ]; then
124+
echo "" >> coverage-steps.log
125+
echo "React Project Coverage:" >> coverage-steps.log
126+
cd react && pnpm run test -- --coverage --coverageReporters=text-summary 2>&1 | grep -A 10 "Coverage summary" | tee -a ../coverage-steps.log || true
127+
cd ..
128+
fi
129+
130+
# backend.ai-ui coverage summary
131+
if [ -f "packages/backend.ai-ui/coverage/lcov-report/index.html" ]; then
132+
echo "" >> coverage-steps.log
133+
echo "backend.ai-ui Project Coverage:" >> coverage-steps.log
134+
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
135+
cd ../..
136+
fi
137+
138+
# Combined coverage if available
139+
if [ -f "coverage/combined/lcov-report/index.html" ]; then
140+
echo "" >> coverage-steps.log
141+
echo "Combined Coverage Report available at: coverage/combined/lcov-report/index.html" >> coverage-steps.log
142+
fi
143+
144+
echo "========================================" >> coverage-steps.log
145+
echo "" >> coverage-steps.log
146+
147+
# Step 9: Upload coverage reports as artifacts
148+
- name: Upload coverage artifacts
149+
uses: actions/upload-artifact@v4
150+
with:
151+
name: coverage
152+
path: |
153+
coverage/
154+
coverage-steps.log
155+
retention-days: 7
156+
157+
- name: Final log message
158+
shell: bash
159+
run: |
160+
echo "Step: Coverage generation complete!" >> coverage-steps.log
161+
echo "Coverage artifacts uploaded with name: 'coverage'" >> coverage-steps.log
162+
echo "" >> coverage-steps.log
163+
echo "Coverage reports available at:" >> coverage-steps.log
164+
echo " - React: coverage/react/lcov-report/index.html" >> coverage-steps.log
165+
echo " - backend.ai-ui: coverage/backend-ai-ui/lcov-report/index.html" >> coverage-steps.log
166+
echo " - Combined: coverage/combined/lcov-report/index.html (if merge successful)" >> coverage-steps.log
167+
cat coverage-steps.log

0 commit comments

Comments
 (0)