diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae1bbc73..5f094407 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,12 +61,21 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + - name: Install lcov + run: sudo apt-get update && sudo apt-get install -y lcov - name: Get dependencies run: flutter pub get - name: Run all tests run: flutter test --reporter=expanded --coverage - name: Check coverage run: dart scripts/check_coverage.dart coverage/lcov.info + - name: Generate HTML report + run: genhtml coverage/lcov.info -o coverage/html + - name: Upload coverage report + uses: actions/upload-artifact@v4 + with: + name: flutter-coverage-report + path: coverage/html test-android: name: Test Android @@ -98,21 +107,29 @@ jobs: - name: Validate Gradle working-directory: ./example/android run: dart ../../scripts/check_gradle_version.dart - - name: Run all tests + - name: Run all tests and coverage working-directory: ./example/android - run: ./gradlew :usercentrics_sdk:test + run: ./gradlew :usercentrics_sdk:testDebugUnitTest :usercentrics_sdk:koverHtmlReportDebug + - name: List coverage files + working-directory: ./example + run: find build -name "*.html" -o -name "index.html" | head -20 + - name: Upload coverage report + uses: actions/upload-artifact@v4 + with: + name: android-coverage-report + path: example/build/usercentrics_sdk/reports/kover/htmlDebug test-ios: name: Test iOS needs: [ lint, format, pub-dry-run ] - runs-on: macos-13 + runs-on: macos-14 timeout-minutes: 20 steps: - name: Setup code uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '14.2' + xcode-version: '15.4' - name: Checkout code uses: actions/checkout@v4 - name: Setup Flutter @@ -128,6 +145,9 @@ jobs: - name: Run all tests working-directory: ./example/ios run: ../../scripts/ios_unit_tests.sh + - name: Show coverage report + working-directory: ./example/ios + run: xcrun xccov view --report TestResults.xcresult build-android: name: Build Android Example @@ -148,14 +168,14 @@ jobs: build-ios: name: Build iOS Example needs: [ lint, format, pub-dry-run ] - runs-on: macos-13 + runs-on: macos-14 timeout-minutes: 20 steps: - name: Setup code uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '14.2' + xcode-version: '15.4' - name: Checkout code uses: actions/checkout@v4 - name: Setup Flutter diff --git a/android/build.gradle b/android/build.gradle index 297ee13c..a9376c4d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -13,6 +13,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlinx:kover-gradle-plugin:0.7.6" } } @@ -25,6 +26,7 @@ rootProject.allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +apply plugin: 'org.jetbrains.kotlinx.kover' android { namespace "com.usercentrics.sdk" diff --git a/scripts/ios_unit_tests.sh b/scripts/ios_unit_tests.sh index 838508e6..5ef7da96 100755 --- a/scripts/ios_unit_tests.sh +++ b/scripts/ios_unit_tests.sh @@ -1,5 +1,9 @@ #!/bin/sh -xe +rm -rf TestResults.xcresult + xcodebuild test -workspace 'Runner.xcworkspace' \ -scheme 'Runner' \ - -destination 'platform=iOS Simulator,name=iPhone 14 Pro' + -destination 'platform=iOS Simulator,name=iPhone 15 Pro' \ + -enableCodeCoverage YES \ + -resultBundlePath TestResults