Skip to content

Commit 5c25e72

Browse files
grdsdevclaude
andcommitted
feat(ci): add developer experience improvements (Phase 4)
This commit adds several developer experience improvements to the CI workflows: 1. **Workflow Status Badges**: Added badges for all package workflows to the main README.md, providing at-a-glance visibility of test status for each package. 2. **Test Summaries**: Added automatic test result summaries to workflow runs using GitHub Actions job summaries. Each test run now generates a formatted summary showing pass/fail status, package name, SDK version, and whether Docker services were required. 3. **Coverage Reporting**: Added test coverage generation for stable SDK runs. Coverage reports are generated using the `coverage` package and uploaded as artifacts for 7 days, allowing developers to download and review coverage locally. These improvements enhance visibility into CI status and make it easier to understand test results at a glance. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 8ff46ff commit 5c25e72

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

.github/workflows/dart-package-test.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,52 @@ jobs:
9191
run: sleep 5
9292

9393
- name: Run tests
94+
id: run_tests
95+
continue-on-error: true
9496
run: |
9597
if [ "${{ inputs.test-concurrency }}" == "1" ]; then
9698
dart test --concurrency=1
9799
else
98100
dart test
99101
fi
100102
103+
- name: Generate test summary
104+
if: always()
105+
run: |
106+
echo "## Test Results for ${{ inputs.package-name }} (SDK: ${{ matrix.sdk }})" >> $GITHUB_STEP_SUMMARY
107+
echo "" >> $GITHUB_STEP_SUMMARY
108+
if [ "${{ steps.run_tests.outcome }}" == "success" ]; then
109+
echo "✅ All tests passed" >> $GITHUB_STEP_SUMMARY
110+
else
111+
echo "❌ Some tests failed" >> $GITHUB_STEP_SUMMARY
112+
fi
113+
echo "" >> $GITHUB_STEP_SUMMARY
114+
echo "**Package:** \`${{ inputs.package-name }}\`" >> $GITHUB_STEP_SUMMARY
115+
echo "**SDK Version:** \`${{ matrix.sdk }}\`" >> $GITHUB_STEP_SUMMARY
116+
echo "**Working Directory:** \`${{ inputs.working-directory }}\`" >> $GITHUB_STEP_SUMMARY
117+
if [ "${{ inputs.needs-docker }}" == "true" ]; then
118+
echo "**Docker Services:** ✓ Required" >> $GITHUB_STEP_SUMMARY
119+
fi
120+
121+
- name: Check test results
122+
if: steps.run_tests.outcome != 'success'
123+
run: exit 1
124+
125+
- name: Generate coverage report
126+
if: matrix.sdk == 'stable'
127+
run: |
128+
dart pub global activate coverage
129+
dart test --coverage=coverage
130+
dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib
131+
132+
- name: Upload coverage artifact
133+
if: matrix.sdk == 'stable'
134+
uses: actions/upload-artifact@v4
135+
with:
136+
name: coverage-${{ inputs.package-name }}
137+
path: ${{ inputs.working-directory }}/coverage/
138+
retention-days: 7
139+
101140
- name: Stop Docker services
102141
if: ${{ inputs.needs-docker && always() }}
103142
run: |

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
# `Supabase Flutter`
44

5+
[![gotrue](https://github.com/supabase/supabase-flutter/actions/workflows/gotrue.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/gotrue.yml)
6+
[![postgrest](https://github.com/supabase/supabase-flutter/actions/workflows/postgrest.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/postgrest.yml)
7+
[![storage_client](https://github.com/supabase/supabase-flutter/actions/workflows/storage_client.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/storage_client.yml)
8+
[![realtime_client](https://github.com/supabase/supabase-flutter/actions/workflows/realtime_client.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/realtime_client.yml)
9+
[![functions_client](https://github.com/supabase/supabase-flutter/actions/workflows/functions_client.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/functions_client.yml)
10+
[![supabase](https://github.com/supabase/supabase-flutter/actions/workflows/supabase.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/supabase.yml)
11+
[![supabase_flutter](https://github.com/supabase/supabase-flutter/actions/workflows/supabase_flutter.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/supabase_flutter.yml)
12+
[![coverage](https://github.com/supabase/supabase-flutter/actions/workflows/coverage.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/coverage.yml)
13+
514
Flutter Client library for [Supabase](https://supabase.com/).
615

716
- Documentation: https://supabase.com/docs/reference/dart/introduction

0 commit comments

Comments
 (0)