Skip to content

Commit 49137ec

Browse files
test: Add coverage steps configuration for daily test improver
1 parent eb2a1cf commit 49137ec

1 file changed

Lines changed: 178 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)