diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2cdb325..5b3b0de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,13 @@ jobs: - name: Run Tests run: yarn test + - name: Upload coverage reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: coverage/ + - name: Assert that every file that should be public has been exported run: ./scripts/assert_export.sh @@ -99,9 +106,28 @@ jobs: -scheme "sample" \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,OS=latest,name=iPhone 16 Pro' \ + -enableCodeCoverage YES \ + -resultBundlePath TestResults.xcresult \ -only-testing:sampleTests \ test | bundle exec xcpretty && exit ${PIPESTATUS[0]} + - name: Install Slather + run: gem install slather + + - name: Generate iOS HTML Report + working-directory: ./sample/ios + run: | + slather coverage --html --output-directory html-report --scheme sample --workspace sample.xcworkspace sample.xcodeproj + + - name: Upload iOS coverage + if: always() + uses: actions/upload-artifact@v4 + with: + name: ios-coverage + path: | + sample/ios/TestResults.xcresult + sample/ios/html-report/ + test-android: needs: test-rn runs-on: macOS-13 @@ -134,4 +160,11 @@ jobs: - name: Run SDK Unit Tests working-directory: ./sample/android - run: ./gradlew :react-native-usercentrics:test + run: ./gradlew :react-native-usercentrics:koverXmlReport :react-native-usercentrics:koverHtmlReport + + - name: Upload Android coverage + if: always() + uses: actions/upload-artifact@v4 + with: + name: android-coverage + path: android/build/reports/kover/ diff --git a/android/build.gradle.kts b/android/build.gradle.kts index cb4f624..d307d90 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -11,6 +11,7 @@ val isHermesEnabled = BooleanProperty("hermesEnabled") plugins { id("com.android.library") id("kotlin-android") + id("org.jetbrains.kotlinx.kover") version "0.9.1" } if (isNewArchitectureEnabled) { @@ -37,6 +38,11 @@ android { } + buildTypes { + getByName("debug") { + } + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 diff --git a/package.json b/package.json index 6b0f805..52077fb 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,16 @@ "jsx", "json", "node" + ], + "collectCoverage": true, + "collectCoverageFrom": [ + "src/**/*.{ts,tsx}", + "!src/**/*.d.ts" + ], + "coverageDirectory": "coverage", + "coverageReporters": [ + "text", + "lcov" ] }, "directories": {