From 5c25e729ef1e948475bf808a2e714e58f974b2ab Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Wed, 12 Nov 2025 13:30:28 -0300 Subject: [PATCH 1/2] feat(ci): add developer experience improvements (Phase 4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .github/workflows/dart-package-test.yml | 39 +++++++++++++++++++++++++ README.md | 9 ++++++ 2 files changed, 48 insertions(+) diff --git a/.github/workflows/dart-package-test.yml b/.github/workflows/dart-package-test.yml index c730351a1..af48cfb08 100644 --- a/.github/workflows/dart-package-test.yml +++ b/.github/workflows/dart-package-test.yml @@ -91,6 +91,8 @@ jobs: run: sleep 5 - name: Run tests + id: run_tests + continue-on-error: true run: | if [ "${{ inputs.test-concurrency }}" == "1" ]; then dart test --concurrency=1 @@ -98,6 +100,43 @@ jobs: dart test fi + - name: Generate test summary + if: always() + run: | + echo "## Test Results for ${{ inputs.package-name }} (SDK: ${{ matrix.sdk }})" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + if [ "${{ steps.run_tests.outcome }}" == "success" ]; then + echo "✅ All tests passed" >> $GITHUB_STEP_SUMMARY + else + echo "❌ Some tests failed" >> $GITHUB_STEP_SUMMARY + fi + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Package:** \`${{ inputs.package-name }}\`" >> $GITHUB_STEP_SUMMARY + echo "**SDK Version:** \`${{ matrix.sdk }}\`" >> $GITHUB_STEP_SUMMARY + echo "**Working Directory:** \`${{ inputs.working-directory }}\`" >> $GITHUB_STEP_SUMMARY + if [ "${{ inputs.needs-docker }}" == "true" ]; then + echo "**Docker Services:** ✓ Required" >> $GITHUB_STEP_SUMMARY + fi + + - name: Check test results + if: steps.run_tests.outcome != 'success' + run: exit 1 + + - name: Generate coverage report + if: matrix.sdk == 'stable' + run: | + dart pub global activate coverage + dart test --coverage=coverage + dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib + + - name: Upload coverage artifact + if: matrix.sdk == 'stable' + uses: actions/upload-artifact@v4 + with: + name: coverage-${{ inputs.package-name }} + path: ${{ inputs.working-directory }}/coverage/ + retention-days: 7 + - name: Stop Docker services if: ${{ inputs.needs-docker && always() }} run: | diff --git a/README.md b/README.md index 6da5f54d7..c5d4ca611 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,15 @@ # `Supabase Flutter` +[![gotrue](https://github.com/supabase/supabase-flutter/actions/workflows/gotrue.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/gotrue.yml) +[![postgrest](https://github.com/supabase/supabase-flutter/actions/workflows/postgrest.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/postgrest.yml) +[![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) +[![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) +[![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) +[![supabase](https://github.com/supabase/supabase-flutter/actions/workflows/supabase.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/supabase.yml) +[![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) +[![coverage](https://github.com/supabase/supabase-flutter/actions/workflows/coverage.yml/badge.svg)](https://github.com/supabase/supabase-flutter/actions/workflows/coverage.yml) + Flutter Client library for [Supabase](https://supabase.com/). - Documentation: https://supabase.com/docs/reference/dart/introduction From fc761859a95e1e828f441f3b40b6e0581a76d356 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Wed, 12 Nov 2025 13:53:58 -0300 Subject: [PATCH 2/2] refactor(ci): simplify Phase 4 - remove test summaries and coverage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplified Phase 4 developer experience improvements by removing: - Test result summaries (GitHub step summaries) - Coverage report generation - Coverage artifact uploads Phase 4 now only includes: - Workflow status badges in README.md This keeps the workflow simpler and focuses on essential visibility improvements through badges without the overhead of generating summaries and coverage reports that aren't needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/dart-package-test.yml | 39 ------------------------- 1 file changed, 39 deletions(-) diff --git a/.github/workflows/dart-package-test.yml b/.github/workflows/dart-package-test.yml index af48cfb08..c730351a1 100644 --- a/.github/workflows/dart-package-test.yml +++ b/.github/workflows/dart-package-test.yml @@ -91,8 +91,6 @@ jobs: run: sleep 5 - name: Run tests - id: run_tests - continue-on-error: true run: | if [ "${{ inputs.test-concurrency }}" == "1" ]; then dart test --concurrency=1 @@ -100,43 +98,6 @@ jobs: dart test fi - - name: Generate test summary - if: always() - run: | - echo "## Test Results for ${{ inputs.package-name }} (SDK: ${{ matrix.sdk }})" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - if [ "${{ steps.run_tests.outcome }}" == "success" ]; then - echo "✅ All tests passed" >> $GITHUB_STEP_SUMMARY - else - echo "❌ Some tests failed" >> $GITHUB_STEP_SUMMARY - fi - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Package:** \`${{ inputs.package-name }}\`" >> $GITHUB_STEP_SUMMARY - echo "**SDK Version:** \`${{ matrix.sdk }}\`" >> $GITHUB_STEP_SUMMARY - echo "**Working Directory:** \`${{ inputs.working-directory }}\`" >> $GITHUB_STEP_SUMMARY - if [ "${{ inputs.needs-docker }}" == "true" ]; then - echo "**Docker Services:** ✓ Required" >> $GITHUB_STEP_SUMMARY - fi - - - name: Check test results - if: steps.run_tests.outcome != 'success' - run: exit 1 - - - name: Generate coverage report - if: matrix.sdk == 'stable' - run: | - dart pub global activate coverage - dart test --coverage=coverage - dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib - - - name: Upload coverage artifact - if: matrix.sdk == 'stable' - uses: actions/upload-artifact@v4 - with: - name: coverage-${{ inputs.package-name }} - path: ${{ inputs.working-directory }}/coverage/ - retention-days: 7 - - name: Stop Docker services if: ${{ inputs.needs-docker && always() }} run: |