From 2f05f406b2b183b9bca0c61f14bacfc4bd215dec Mon Sep 17 00:00:00 2001 From: AhmadKharfan Date: Thu, 11 Sep 2025 06:42:44 +0000 Subject: [PATCH 1/3] add dummy text --- .../java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt b/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt index fd5378cce..cf7995d5a 100644 --- a/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt +++ b/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt @@ -274,7 +274,7 @@ private fun HomeScreenContent( onLoginButtonClick = interactionListener::onLoginButtonClick ) - Text("hello world haha") + } @Composable From 8d21ce5dc7fa549975eeed0ec3939f39a2344755 Mon Sep 17 00:00:00 2001 From: AhmadKharfan Date: Thu, 11 Sep 2025 06:55:50 +0000 Subject: [PATCH 2/3] add dummy text --- .github/workflows/ci_test_coverage.yml | 261 ++++++--------- .github/workflows/ci_verify_build_compile.yml | 296 ++++++++---------- .../screen/homeScreen/HomeScreen.kt | 2 +- 3 files changed, 234 insertions(+), 325 deletions(-) diff --git a/.github/workflows/ci_test_coverage.yml b/.github/workflows/ci_test_coverage.yml index df40d3bfb..cea01cb84 100644 --- a/.github/workflows/ci_test_coverage.yml +++ b/.github/workflows/ci_test_coverage.yml @@ -1,4 +1,4 @@ -name: CI - Smart Test & Coverage +name: CI โ€“ Optimized Test Coverage on: pull_request: @@ -11,7 +11,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: 0 + fetch-depth: 0 # Fetch full history for proper diff - name: Set up JDK 17 uses: actions/setup-java@v4 @@ -20,16 +20,6 @@ jobs: distribution: temurin cache: gradle - - name: ๐Ÿ“ Cache Gradle - uses: actions/cache@v4 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - .gradle/ - key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: gradle-${{ runner.os }}- - - name: Prepare google-services.json shell: bash run: | @@ -59,75 +49,81 @@ jobs: - name: ๐Ÿ” Detect modules needing tests id: test_changes run: | - BASE_SHA="${{ github.event.pull_request.base.sha }}" - HEAD_SHA="${{ github.event.pull_request.head.sha }}" - - echo "Comparing: $BASE_SHA...$HEAD_SHA" - - CHANGED_FILES=$(git diff --name-only $BASE_SHA $HEAD_SHA || echo "TEST_ALL") - - if [ "$CHANGED_FILES" = "TEST_ALL" ] || [ -z "$CHANGED_FILES" ]; then - echo "test_all=true" >> $GITHUB_OUTPUT - echo "โš ๏ธ Will test all modules" - exit 0 + # Get the base branch for comparison + if [ "${{ github.event_name }}" = "pull_request" ]; then + BASE_SHA="${{ github.event.pull_request.base.sha }}" + else + BASE_SHA="${{ github.event.before }}" fi + echo "Comparing against: $BASE_SHA" + + # Get changed files + CHANGED_FILES=$(git diff --name-only $BASE_SHA HEAD || echo "") echo "Changed files:" echo "$CHANGED_FILES" - # Check for root changes - if echo "$CHANGED_FILES" | grep -qE '^(build\.gradle|settings\.gradle|gradle\.properties|build-logic/)'; then - echo "test_all=true" >> $GITHUB_OUTPUT - echo "๐Ÿ”„ Root files changed - testing all" - exit 0 - fi - - echo "test_all=false" >> $GITHUB_OUTPUT - - # Function to check if module needs testing (only source code changes, not test-only changes) + # Function to check if module needs testing check_test_needed() { - local path="$1" - local flag="$2" - # Check for source code changes (src/main) or build file changes - if echo "$CHANGED_FILES" | grep -qE "^${path}/(src/main|build\.gradle)"; then - echo "${flag}=true" >> $GITHUB_OUTPUT - echo "โœ… $path needs testing (source changes)" + local module_path="$1" + local output_var="$2" + # Check if module has source changes (not just test changes) + if echo "$CHANGED_FILES" | grep -qE "^${module_path}/(src/main|build\.gradle)"; then + echo "${output_var}=true" >> $GITHUB_OUTPUT + echo "โœ… Module $module_path needs testing" else - echo "${flag}=false" >> $GITHUB_OUTPUT + echo "${output_var}=false" >> $GITHUB_OUTPUT fi } - # Check testable modules (typically domain, data, and some feature modules) + # Check modules that typically have unit tests check_test_needed "domain/vod" "test_domain_vod" check_test_needed "domain/identity" "test_domain_identity" - check_test_needed "data/repositories/vod" "test_data_repo_vod" - check_test_needed "data/repositories/identity" "test_data_repo_identity" + check_test_needed "data/repositories/vod" "test_data_repositories_vod" + check_test_needed "data/repositories/identity" "test_data_repositories_identity" check_test_needed "data/remote_data_source/vod" "test_data_remote_vod" check_test_needed "data/remote_data_source/identity" "test_data_remote_identity" check_test_needed "data/local_data_source/vod" "test_data_local_vod" check_test_needed "data/local_data_source/identity" "test_data_local_identity" - # Feature modules that might have testable logic - check_test_needed "feature/authentication/api" "test_auth_api" - check_test_needed "feature/home/api" "test_home_api" - check_test_needed "feature/user_profile/api" "test_profile_api" - check_test_needed "feature/playlists/api" "test_playlists_api" - check_test_needed "feature/search/api" "test_search_api" - check_test_needed "feature/media_details/api" "test_media_details_api" - check_test_needed "feature/onboarding/api" "test_onboarding_api" - check_test_needed "feature/category/api" "test_category_api" + # Feature modules that might have tests + check_test_needed "feature/authentication/api" "test_feature_auth_api" + check_test_needed "feature/authentication/presentation" "test_feature_auth_presentation" + check_test_needed "feature/home/api" "test_feature_home_api" + check_test_needed "feature/home/presentation" "test_feature_home_presentation" + check_test_needed "feature/user_profile/api" "test_feature_profile_api" + check_test_needed "feature/user_profile/presentation" "test_feature_profile_presentation" + check_test_needed "feature/playlists/api" "test_feature_playlists_api" + check_test_needed "feature/playlists/presentation" "test_feature_playlists_presentation" + check_test_needed "feature/search/api" "test_feature_search_api" + check_test_needed "feature/search/presentation" "test_feature_search_presentation" + check_test_needed "feature/media_details/api" "test_feature_media_details_api" + check_test_needed "feature/media_details/presentation" "test_feature_media_details_presentation" + check_test_needed "feature/onboarding/api" "test_feature_onboarding_api" + check_test_needed "feature/onboarding/presentation" "test_feature_onboarding_presentation" + check_test_needed "feature/category/api" "test_feature_category_api" + check_test_needed "feature/category/presentation" "test_feature_category_presentation" + + # Check for root-level changes + if echo "$CHANGED_FILES" | grep -qE '^(build\.gradle|settings\.gradle|gradle\.properties|build-logic/)'; then + echo "test_all=true" >> $GITHUB_OUTPUT + echo "โœ… Root build files changed - will test all modules" + else + echo "test_all=false" >> $GITHUB_OUTPUT + fi - name: ๐Ÿงช Run tests for changed modules run: | + TEST_TASKS="" + KOVER_TASKS="" + + # If root files changed, test everything if [ "${{ steps.test_changes.outputs.test_all }}" = "true" ]; then - echo "๐Ÿ”„ Running all tests" - ./gradlew test koverXmlReport koverHtmlReport --parallel --build-cache --no-daemon --continue + echo "๐Ÿ”„ Root files changed - running all tests" + ./gradlew test koverXmlReport koverHtmlReport --parallel --build-cache exit 0 fi - TEST_TASKS="" - KOVER_TASKS="" - # Domain modules if [ "${{ steps.test_changes.outputs.test_domain_vod }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :domain:vod:test" @@ -141,20 +137,19 @@ jobs: echo "๐Ÿ‘ค Testing domain:identity" fi - # Data repository modules - if [ "${{ steps.test_changes.outputs.test_data_repo_vod }}" = "true" ]; then + # Data layer modules + if [ "${{ steps.test_changes.outputs.test_data_repositories_vod }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :data:repositories:vod:test" KOVER_TASKS="$KOVER_TASKS :data:repositories:vod:koverXmlReport :data:repositories:vod:koverHtmlReport" echo "๐Ÿ“š Testing data:repositories:vod" fi - if [ "${{ steps.test_changes.outputs.test_data_repo_identity }}" = "true" ]; then + if [ "${{ steps.test_changes.outputs.test_data_repositories_identity }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :data:repositories:identity:test" KOVER_TASKS="$KOVER_TASKS :data:repositories:identity:koverXmlReport :data:repositories:identity:koverHtmlReport" echo "๐Ÿ“š Testing data:repositories:identity" fi - # Data remote source modules if [ "${{ steps.test_changes.outputs.test_data_remote_vod }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :data:remote_data_source:vod:test" KOVER_TASKS="$KOVER_TASKS :data:remote_data_source:vod:koverXmlReport :data:remote_data_source:vod:koverHtmlReport" @@ -167,7 +162,6 @@ jobs: echo "๐ŸŒ Testing data:remote_data_source:identity" fi - # Data local source modules if [ "${{ steps.test_changes.outputs.test_data_local_vod }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :data:local_data_source:vod:test" KOVER_TASKS="$KOVER_TASKS :data:local_data_source:vod:koverXmlReport :data:local_data_source:vod:koverHtmlReport" @@ -180,146 +174,83 @@ jobs: echo "๐Ÿ’พ Testing data:local_data_source:identity" fi - # Feature API modules (if they have business logic to test) - if [ "${{ steps.test_changes.outputs.test_auth_api }}" = "true" ]; then + # Feature API modules + if [ "${{ steps.test_changes.outputs.test_feature_auth_api }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :feature:authentication:api:test" KOVER_TASKS="$KOVER_TASKS :feature:authentication:api:koverXmlReport :feature:authentication:api:koverHtmlReport" echo "๐Ÿ”‘ Testing feature:authentication:api" fi - if [ "${{ steps.test_changes.outputs.test_home_api }}" = "true" ]; then + if [ "${{ steps.test_changes.outputs.test_feature_home_api }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :feature:home:api:test" KOVER_TASKS="$KOVER_TASKS :feature:home:api:koverXmlReport :feature:home:api:koverHtmlReport" echo "๐Ÿ  Testing feature:home:api" fi - if [ "${{ steps.test_changes.outputs.test_profile_api }}" = "true" ]; then - TEST_TASKS="$TEST_TASKS :feature:user_profile:api:test" - KOVER_TASKS="$KOVER_TASKS :feature:user_profile:api:koverXmlReport :feature:user_profile:api:koverHtmlReport" - echo "๐Ÿ‘ค Testing feature:user_profile:api" - fi - - if [ "${{ steps.test_changes.outputs.test_playlists_api }}" = "true" ]; then - TEST_TASKS="$TEST_TASKS :feature:playlists:api:test" - KOVER_TASKS="$KOVER_TASKS :feature:playlists:api:koverXmlReport :feature:playlists:api:koverHtmlReport" - echo "๐Ÿ“ Testing feature:playlists:api" - fi - - if [ "${{ steps.test_changes.outputs.test_search_api }}" = "true" ]; then - TEST_TASKS="$TEST_TASKS :feature:search:api:test" - KOVER_TASKS="$KOVER_TASKS :feature:search:api:koverXmlReport :feature:search:api:koverHtmlReport" - echo "๐Ÿ” Testing feature:search:api" - fi - - if [ "${{ steps.test_changes.outputs.test_media_details_api }}" = "true" ]; then - TEST_TASKS="$TEST_TASKS :feature:media_details:api:test" - KOVER_TASKS="$KOVER_TASKS :feature:media_details:api:koverXmlReport :feature:media_details:api:koverHtmlReport" - echo "๐Ÿ“บ Testing feature:media_details:api" - fi - - if [ "${{ steps.test_changes.outputs.test_onboarding_api }}" = "true" ]; then - TEST_TASKS="$TEST_TASKS :feature:onboarding:api:test" - KOVER_TASKS="$KOVER_TASKS :feature:onboarding:api:koverXmlReport :feature:onboarding:api:koverHtmlReport" - echo "๐Ÿš€ Testing feature:onboarding:api" - fi - - if [ "${{ steps.test_changes.outputs.test_category_api }}" = "true" ]; then - TEST_TASKS="$TEST_TASKS :feature:category:api:test" - KOVER_TASKS="$KOVER_TASKS :feature:category:api:koverXmlReport :feature:category:api:koverHtmlReport" - echo "๐Ÿ“‚ Testing feature:category:api" - fi + # Add more feature modules as needed... - # Execute tests + # Execute test tasks if [ -n "$TEST_TASKS" ]; then echo "๐Ÿš€ Running tests: $TEST_TASKS" - ./gradlew $TEST_TASKS --parallel --build-cache --no-daemon --continue + ./gradlew $TEST_TASKS --parallel --build-cache - # Generate coverage reports if [ -n "$KOVER_TASKS" ]; then - echo "๐Ÿ“Š Generating coverage reports" - ./gradlew $KOVER_TASKS --parallel --build-cache --no-daemon --continue + echo "๐Ÿ“Š Generating coverage reports: $KOVER_TASKS" + ./gradlew $KOVER_TASKS --parallel --build-cache fi - - echo "โœ… Tests completed!" else echo "โ„น๏ธ No modules need testing - skipping tests" fi - - name: ๐Ÿ” Verify coverage thresholds - if: success() + - name: ๐Ÿ” Run Kover verification for tested modules + if: steps.test_changes.outputs.test_all == 'true' || contains(steps.test_changes.outputs.*, 'true') continue-on-error: true run: | - # Only run koverVerify for modules that were tested VERIFY_TASKS="" - if [ "${{ steps.test_changes.outputs.test_all }}" = "true" ]; then - echo "๐Ÿ” Verifying coverage for all modules" - ./gradlew koverVerify --parallel --build-cache --no-daemon --continue - else - # Add verification tasks for tested modules - if [ "${{ steps.test_changes.outputs.test_domain_vod }}" = "true" ]; then - VERIFY_TASKS="$VERIFY_TASKS :domain:vod:koverVerify" - fi - if [ "${{ steps.test_changes.outputs.test_domain_identity }}" = "true" ]; then - VERIFY_TASKS="$VERIFY_TASKS :domain:identity:koverVerify" - fi - if [ "${{ steps.test_changes.outputs.test_data_repo_vod }}" = "true" ]; then - VERIFY_TASKS="$VERIFY_TASKS :data:repositories:vod:koverVerify" - fi - if [ "${{ steps.test_changes.outputs.test_data_repo_identity }}" = "true" ]; then - VERIFY_TASKS="$VERIFY_TASKS :data:repositories:identity:koverVerify" - fi + # Add koverVerify tasks for modules that were tested + if [ "${{ steps.test_changes.outputs.test_domain_vod }}" = "true" ]; then + VERIFY_TASKS="$VERIFY_TASKS :domain:vod:koverVerify" + fi - if [ -n "$VERIFY_TASKS" ]; then - echo "๐Ÿ” Verifying coverage: $VERIFY_TASKS" - ./gradlew $VERIFY_TASKS --parallel --build-cache --no-daemon --continue - fi + if [ "${{ steps.test_changes.outputs.test_domain_identity }}" = "true" ]; then + VERIFY_TASKS="$VERIFY_TASKS :domain:identity:koverVerify" + fi + + if [ "${{ steps.test_changes.outputs.test_data_repositories_vod }}" = "true" ]; then + VERIFY_TASKS="$VERIFY_TASKS :data:repositories:vod:koverVerify" + fi + + # Add more modules as needed... + + if [ -n "$VERIFY_TASKS" ]; then + echo "๐Ÿ” Verifying coverage: $VERIFY_TASKS" + ./gradlew $VERIFY_TASKS --parallel --build-cache fi - name: ๐Ÿ“Š Upload coverage to Codecov - if: always() + if: steps.test_changes.outputs.test_all == 'true' || contains(steps.test_changes.outputs.*, 'true') uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: | - **/build/reports/kover/report.xml - build/reports/kover/merged/report.xml + domain/vod/build/reports/kover/report.xml + domain/identity/build/reports/kover/report.xml + data/repositories/vod/build/reports/kover/report.xml + data/repositories/identity/build/reports/kover/report.xml + data/remote_data_source/vod/build/reports/kover/report.xml + data/remote_data_source/identity/build/reports/kover/report.xml + data/local_data_source/vod/build/reports/kover/report.xml + data/local_data_source/identity/build/reports/kover/report.xml flags: unittests name: novix-coverage-report fail_ci_if_error: false - - name: ๐Ÿ“‹ Upload test results and coverage reports - if: always() + - name: ๐Ÿ“ Upload test results + if: always() && (steps.test_changes.outputs.test_all == 'true' || contains(steps.test_changes.outputs.*, 'true')) uses: actions/upload-artifact@v4 with: - name: test-and-coverage-reports + name: test-results path: | **/build/test-results/test/TEST-*.xml - **/build/reports/kover/ - build/reports/kover/ - retention-days: 7 - - - name: ๐Ÿ“ Test Summary - if: always() - run: | - echo "## ๐Ÿงช Test Summary" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - - if [ "${{ steps.test_changes.outputs.test_all }}" = "true" ]; then - echo "- **Test Type**: Full test suite" >> $GITHUB_STEP_SUMMARY - echo "- **Reason**: Root files changed or unable to detect changes" >> $GITHUB_STEP_SUMMARY - else - echo "- **Test Type**: Selective testing" >> $GITHUB_STEP_SUMMARY - echo "- **Tested Modules**: Only modules with source code changes" >> $GITHUB_STEP_SUMMARY - fi - - # Count test files - TEST_FILES=$(find . -name "TEST-*.xml" -path "*/build/test-results/*" 2>/dev/null | wc -l) - echo "- **Test Files Generated**: $TEST_FILES" >> $GITHUB_STEP_SUMMARY - - # Check if any tests failed - if find . -name "TEST-*.xml" -path "*/build/test-results/*" -exec grep -l 'failures="[^0]"' {} + 2>/dev/null | grep -q .; then - echo "- **Status**: โŒ Some tests failed" >> $GITHUB_STEP_SUMMARY - else - echo "- **Status**: โœ… All tests passed" >> $GITHUB_STEP_SUMMARY - fi \ No newline at end of file + **/build/reports/kover/ \ No newline at end of file diff --git a/.github/workflows/ci_verify_build_compile.yml b/.github/workflows/ci_verify_build_compile.yml index 5e43df842..794ec4ab0 100644 --- a/.github/workflows/ci_verify_build_compile.yml +++ b/.github/workflows/ci_verify_build_compile.yml @@ -1,4 +1,4 @@ -name: CI - Smart Build +name: CI - Optimized Build on: pull_request: @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: 0 # Need full history for git diff + fetch-depth: 0 # Fetch full history for proper diff - name: Set up JDK 17 uses: actions/setup-java@v4 @@ -21,16 +21,6 @@ jobs: distribution: temurin cache: gradle - - name: ๐Ÿ“ Cache Gradle - uses: actions/cache@v4 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - .gradle/ - key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: gradle-${{ runner.os }}- - - name: Prepare google-services.json shell: bash run: | @@ -60,96 +50,87 @@ jobs: - name: ๐Ÿ” Detect changed modules id: changes run: | - BASE_SHA="${{ github.event.pull_request.base.sha }}" - HEAD_SHA="${{ github.event.pull_request.head.sha }}" - - echo "Comparing: $BASE_SHA...$HEAD_SHA" - - CHANGED_FILES=$(git diff --name-only $BASE_SHA $HEAD_SHA || echo "BUILD_ALL") - - if [ "$CHANGED_FILES" = "BUILD_ALL" ] || [ -z "$CHANGED_FILES" ]; then - echo "build_all=true" >> $GITHUB_OUTPUT - echo "โš ๏ธ Will build all modules" - exit 0 + # Get the base branch for comparison + if [ "${{ github.event_name }}" = "pull_request" ]; then + BASE_SHA="${{ github.event.pull_request.base.sha }}" + else + BASE_SHA="${{ github.event.before }}" fi + echo "Comparing against: $BASE_SHA" + + # Get changed files + CHANGED_FILES=$(git diff --name-only $BASE_SHA HEAD || echo "") echo "Changed files:" echo "$CHANGED_FILES" - # Check for root changes that require full build - if echo "$CHANGED_FILES" | grep -qE '^(build\.gradle|settings\.gradle|gradle\.properties|build-logic/)'; then - echo "build_all=true" >> $GITHUB_OUTPUT - echo "๐Ÿ”„ Root files changed - building all" - exit 0 - fi - - # Initialize flags - echo "build_all=false" >> $GITHUB_OUTPUT - - # Check each module path - check_module() { - local path="$1" - local flag="$2" - if echo "$CHANGED_FILES" | grep -q "^${path}/"; then - echo "${flag}=true" >> $GITHUB_OUTPUT - echo "โœ… $path changed" + # Function to check if module changed + check_module_changed() { + local module_path="$1" + local output_var="$2" + if echo "$CHANGED_FILES" | grep -q "^${module_path}/"; then + echo "${output_var}=true" >> $GITHUB_OUTPUT + echo "โœ… Module $module_path changed" else - echo "${flag}=false" >> $GITHUB_OUTPUT + echo "${output_var}=false" >> $GITHUB_OUTPUT fi } - # Core modules - check_module "design_system" "design_system_changed" - check_module "image_viewer" "image_viewer_changed" - - # Domain modules - check_module "domain/vod" "domain_vod_changed" - check_module "domain/identity" "domain_identity_changed" - - # Data modules - check_module "data/local_data_source/vod" "data_local_vod_changed" - check_module "data/remote_data_source/vod" "data_remote_vod_changed" - check_module "data/repositories/vod" "data_repo_vod_changed" - check_module "data/local_data_source/identity" "data_local_identity_changed" - check_module "data/remote_data_source/identity" "data_remote_identity_changed" - check_module "data/repositories/identity" "data_repo_identity_changed" + # Check each module + check_module_changed "app" "app_changed" + check_module_changed "data/repositories/vod" "data_repositories_vod_changed" + check_module_changed "data/remote_data_source/vod" "data_remote_vod_changed" + check_module_changed "data/local_data_source/vod" "data_local_vod_changed" + check_module_changed "data/repositories/identity" "data_repositories_identity_changed" + check_module_changed "data/remote_data_source/identity" "data_remote_identity_changed" + check_module_changed "data/local_data_source/identity" "data_local_identity_changed" + check_module_changed "domain/vod" "domain_vod_changed" + check_module_changed "domain/identity" "domain_identity_changed" + check_module_changed "design_system" "design_system_changed" + check_module_changed "image_viewer" "image_viewer_changed" + check_module_changed "tvapp" "tvapp_changed" # Feature modules - check_module "feature/authentication/api" "auth_api_changed" - check_module "feature/authentication/presentation" "auth_presentation_changed" - check_module "feature/home/api" "home_api_changed" - check_module "feature/home/presentation" "home_presentation_changed" - check_module "feature/user_profile/api" "profile_api_changed" - check_module "feature/user_profile/presentation" "profile_presentation_changed" - check_module "feature/playlists/api" "playlists_api_changed" - check_module "feature/playlists/presentation" "playlists_presentation_changed" - check_module "feature/search/api" "search_api_changed" - check_module "feature/search/presentation" "search_presentation_changed" - check_module "feature/media_details/api" "media_details_api_changed" - check_module "feature/media_details/presentation" "media_details_presentation_changed" - check_module "feature/onboarding/api" "onboarding_api_changed" - check_module "feature/onboarding/presentation" "onboarding_presentation_changed" - check_module "feature/category/api" "category_api_changed" - check_module "feature/category/presentation" "category_presentation_changed" - - # App modules - check_module "app" "app_changed" - check_module "tvapp" "tvapp_changed" + check_module_changed "feature/authentication/api" "feature_auth_api_changed" + check_module_changed "feature/authentication/presentation" "feature_auth_presentation_changed" + check_module_changed "feature/home/api" "feature_home_api_changed" + check_module_changed "feature/home/presentation" "feature_home_presentation_changed" + check_module_changed "feature/user_profile/api" "feature_profile_api_changed" + check_module_changed "feature/user_profile/presentation" "feature_profile_presentation_changed" + check_module_changed "feature/playlists/api" "feature_playlists_api_changed" + check_module_changed "feature/playlists/presentation" "feature_playlists_presentation_changed" + check_module_changed "feature/search/api" "feature_search_api_changed" + check_module_changed "feature/search/presentation" "feature_search_presentation_changed" + check_module_changed "feature/media_details/api" "feature_media_details_api_changed" + check_module_changed "feature/media_details/presentation" "feature_media_details_presentation_changed" + check_module_changed "feature/onboarding/api" "feature_onboarding_api_changed" + check_module_changed "feature/onboarding/presentation" "feature_onboarding_presentation_changed" + check_module_changed "feature/category/api" "feature_category_api_changed" + check_module_changed "feature/category/presentation" "feature_category_presentation_changed" + + # Check for root-level changes (build scripts, etc.) + if echo "$CHANGED_FILES" | grep -qE '^(build\.gradle|settings\.gradle|gradle\.properties|build-logic/)'; then + echo "root_changed=true" >> $GITHUB_OUTPUT + echo "โœ… Root build files changed - will build all modules" + else + echo "root_changed=false" >> $GITHUB_OUTPUT + fi - - name: ๐Ÿ—๏ธ Smart Build + - name: ๐Ÿ—๏ธ Build changed modules and dependents run: | - if [ "${{ steps.changes.outputs.build_all }}" = "true" ]; then - echo "๐Ÿ”„ Building all modules" - ./gradlew assemble -x lintVitalRelease -x lint --parallel --build-cache --no-daemon + BUILD_TASKS="" + + # If root files changed, build everything + if [ "${{ steps.changes.outputs.root_changed }}" = "true" ]; then + echo "๐Ÿ”„ Root files changed - building all modules" + ./gradlew assemble -x lintVitalRelease -x lint --parallel --build-cache exit 0 fi - BUILD_TASKS="" - - # Build core modules if changed + # Core/foundational modules (these affect many others) if [ "${{ steps.changes.outputs.design_system_changed }}" = "true" ]; then BUILD_TASKS="$BUILD_TASKS :design_system:assemble" - echo "๐ŸŽจ Building design_system" + echo "๐Ÿ“ฑ Building design_system" fi if [ "${{ steps.changes.outputs.image_viewer_changed }}" = "true" ]; then @@ -157,7 +138,7 @@ jobs: echo "๐Ÿ–ผ๏ธ Building image_viewer" fi - # Build domain modules if changed + # Domain modules if [ "${{ steps.changes.outputs.domain_vod_changed }}" = "true" ]; then BUILD_TASKS="$BUILD_TASKS :domain:vod:assemble" echo "๐ŸŽฌ Building domain:vod" @@ -168,137 +149,134 @@ jobs: echo "๐Ÿ‘ค Building domain:identity" fi - # Build data modules if changed (with dependencies) + # Data layer modules if [ "${{ steps.changes.outputs.data_local_vod_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :data:local_data_source:vod:assemble :domain:vod:assemble" - echo "๐Ÿ’พ Building data:local_data_source:vod + dependencies" + BUILD_TASKS="$BUILD_TASKS :data:local_data_source:vod:assemble" + echo "๐Ÿ’พ Building data:local_data_source:vod" fi if [ "${{ steps.changes.outputs.data_remote_vod_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :data:remote_data_source:vod:assemble :domain:vod:assemble" - echo "๐ŸŒ Building data:remote_data_source:vod + dependencies" + BUILD_TASKS="$BUILD_TASKS :data:remote_data_source:vod:assemble" + echo "๐ŸŒ Building data:remote_data_source:vod" fi - if [ "${{ steps.changes.outputs.data_repo_vod_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :data:repositories:vod:assemble :domain:vod:assemble :data:local_data_source:vod:assemble :data:remote_data_source:vod:assemble" - echo "๐Ÿ“š Building data:repositories:vod + dependencies" + if [ "${{ steps.changes.outputs.data_repositories_vod_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :data:repositories:vod:assemble" + echo "๐Ÿ“š Building data:repositories:vod" fi if [ "${{ steps.changes.outputs.data_local_identity_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :data:local_data_source:identity:assemble :domain:identity:assemble" - echo "๐Ÿ’พ Building data:local_data_source:identity + dependencies" + BUILD_TASKS="$BUILD_TASKS :data:local_data_source:identity:assemble" + echo "๐Ÿ’พ Building data:local_data_source:identity" fi if [ "${{ steps.changes.outputs.data_remote_identity_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :data:remote_data_source:identity:assemble :domain:identity:assemble" - echo "๐ŸŒ Building data:remote_data_source:identity + dependencies" + BUILD_TASKS="$BUILD_TASKS :data:remote_data_source:identity:assemble" + echo "๐ŸŒ Building data:remote_data_source:identity" fi - if [ "${{ steps.changes.outputs.data_repo_identity_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :data:repositories:identity:assemble :domain:identity:assemble :data:local_data_source:identity:assemble :data:remote_data_source:identity:assemble" - echo "๐Ÿ“š Building data:repositories:identity + dependencies" + if [ "${{ steps.changes.outputs.data_repositories_identity_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :data:repositories:identity:assemble" + echo "๐Ÿ“š Building data:repositories:identity" fi - # Build feature API modules if changed - if [ "${{ steps.changes.outputs.auth_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:authentication:api:assemble :domain:identity:assemble" - echo "๐Ÿ”‘ Building feature:authentication:api + dependencies" + # Feature API modules + if [ "${{ steps.changes.outputs.feature_auth_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:authentication:api:assemble" + echo "๐Ÿ”‘ Building feature:authentication:api" fi - if [ "${{ steps.changes.outputs.home_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:home:api:assemble :domain:vod:assemble" - echo "๐Ÿ  Building feature:home:api + dependencies" + if [ "${{ steps.changes.outputs.feature_home_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:home:api:assemble" + echo "๐Ÿ  Building feature:home:api" fi - if [ "${{ steps.changes.outputs.profile_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:user_profile:api:assemble :domain:identity:assemble" - echo "๐Ÿ‘ค Building feature:user_profile:api + dependencies" + if [ "${{ steps.changes.outputs.feature_profile_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:user_profile:api:assemble" + echo "๐Ÿ‘ค Building feature:user_profile:api" fi - if [ "${{ steps.changes.outputs.playlists_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:playlists:api:assemble :domain:vod:assemble" - echo "๐Ÿ“ Building feature:playlists:api + dependencies" + if [ "${{ steps.changes.outputs.feature_playlists_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:playlists:api:assemble" + echo "๐Ÿ“ Building feature:playlists:api" fi - if [ "${{ steps.changes.outputs.search_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:search:api:assemble :domain:vod:assemble" - echo "๐Ÿ” Building feature:search:api + dependencies" + if [ "${{ steps.changes.outputs.feature_search_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:search:api:assemble" + echo "๐Ÿ” Building feature:search:api" fi - if [ "${{ steps.changes.outputs.media_details_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:media_details:api:assemble :domain:vod:assemble" - echo "๐Ÿ“บ Building feature:media_details:api + dependencies" + if [ "${{ steps.changes.outputs.feature_media_details_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:media_details:api:assemble" + echo "๐Ÿ“บ Building feature:media_details:api" fi - if [ "${{ steps.changes.outputs.onboarding_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:onboarding:api:assemble :domain:identity:assemble" - echo "๐Ÿš€ Building feature:onboarding:api + dependencies" + if [ "${{ steps.changes.outputs.feature_onboarding_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:onboarding:api:assemble" + echo "๐Ÿš€ Building feature:onboarding:api" fi - if [ "${{ steps.changes.outputs.category_api_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:category:api:assemble :domain:vod:assemble" - echo "๐Ÿ“‚ Building feature:category:api + dependencies" + if [ "${{ steps.changes.outputs.feature_category_api_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:category:api:assemble" + echo "๐Ÿ“‚ Building feature:category:api" fi - # Build feature presentation modules if changed - if [ "${{ steps.changes.outputs.auth_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:authentication:presentation:assemble :feature:authentication:api:assemble :domain:identity:assemble :design_system:assemble" - echo "๐Ÿ”‘ Building feature:authentication:presentation + dependencies" + # Feature presentation modules + if [ "${{ steps.changes.outputs.feature_auth_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:authentication:presentation:assemble" + echo "๐Ÿ”‘ Building feature:authentication:presentation" fi - if [ "${{ steps.changes.outputs.home_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:home:presentation:assemble :feature:home:api:assemble :domain:vod:assemble :design_system:assemble :image_viewer:assemble" - echo "๐Ÿ  Building feature:home:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_home_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:home:presentation:assemble" + echo "๐Ÿ  Building feature:home:presentation" fi - if [ "${{ steps.changes.outputs.profile_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:user_profile:presentation:assemble :feature:user_profile:api:assemble :domain:identity:assemble :design_system:assemble :image_viewer:assemble" - echo "๐Ÿ‘ค Building feature:user_profile:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_profile_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:user_profile:presentation:assemble" + echo "๐Ÿ‘ค Building feature:user_profile:presentation" fi - if [ "${{ steps.changes.outputs.playlists_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:playlists:presentation:assemble :feature:playlists:api:assemble :domain:vod:assemble :design_system:assemble" - echo "๐Ÿ“ Building feature:playlists:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_playlists_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:playlists:presentation:assemble" + echo "๐Ÿ“ Building feature:playlists:presentation" fi - if [ "${{ steps.changes.outputs.search_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:search:presentation:assemble :feature:search:api:assemble :domain:vod:assemble :design_system:assemble :image_viewer:assemble" - echo "๐Ÿ” Building feature:search:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_search_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:search:presentation:assemble" + echo "๐Ÿ” Building feature:search:presentation" fi - if [ "${{ steps.changes.outputs.media_details_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:media_details:presentation:assemble :feature:media_details:api:assemble :domain:vod:assemble :design_system:assemble :image_viewer:assemble" - echo "๐Ÿ“บ Building feature:media_details:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_media_details_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:media_details:presentation:assemble" + echo "๐Ÿ“บ Building feature:media_details:presentation" fi - if [ "${{ steps.changes.outputs.onboarding_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:onboarding:presentation:assemble :feature:onboarding:api:assemble :domain:identity:assemble :design_system:assemble" - echo "๐Ÿš€ Building feature:onboarding:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_onboarding_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:onboarding:presentation:assemble" + echo "๐Ÿš€ Building feature:onboarding:presentation" fi - if [ "${{ steps.changes.outputs.category_presentation_changed }}" = "true" ]; then - BUILD_TASKS="$BUILD_TASKS :feature:category:presentation:assemble :feature:category:api:assemble :domain:vod:assemble :design_system:assemble" - echo "๐Ÿ“‚ Building feature:category:presentation + dependencies" + if [ "${{ steps.changes.outputs.feature_category_presentation_changed }}" = "true" ]; then + BUILD_TASKS="$BUILD_TASKS :feature:category:presentation:assemble" + echo "๐Ÿ“‚ Building feature:category:presentation" fi - # Build app modules if changed (they depend on everything they use) + # Main app modules if [ "${{ steps.changes.outputs.app_changed }}" = "true" ]; then BUILD_TASKS="$BUILD_TASKS :app:assemble" - echo "๐Ÿ“ฑ Building app (will pull all dependencies automatically)" + echo "๐Ÿ“ฑ Building app" fi if [ "${{ steps.changes.outputs.tvapp_changed }}" = "true" ]; then BUILD_TASKS="$BUILD_TASKS :tvapp:assemble" - echo "๐Ÿ“บ Building tvapp (will pull all dependencies automatically)" + echo "๐Ÿ“บ Building tvapp" fi - # Execute build if any modules need building + # Execute build tasks if [ -n "$BUILD_TASKS" ]; then - # Remove duplicates and execute - UNIQUE_TASKS=$(echo $BUILD_TASKS | tr ' ' '\n' | sort -u | tr '\n' ' ') - echo "๐Ÿš€ Executing: ./gradlew $UNIQUE_TASKS" - ./gradlew $UNIQUE_TASKS -x lintVitalRelease -x lint --parallel --build-cache --no-daemon - echo "โœ… Build completed successfully!" + echo "๐Ÿš€ Executing build tasks: $BUILD_TASKS" + ./gradlew $BUILD_TASKS -x lintVitalRelease -x lint --parallel --build-cache else echo "โ„น๏ธ No modules changed - skipping build" fi \ No newline at end of file diff --git a/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt b/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt index cf7995d5a..93169fb97 100644 --- a/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt +++ b/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt @@ -274,7 +274,7 @@ private fun HomeScreenContent( onLoginButtonClick = interactionListener::onLoginButtonClick ) - + Text("add new test") } @Composable From 1cc67435f9a76fa1df283d3c810f991203987342 Mon Sep 17 00:00:00 2001 From: AhmadKharfan Date: Thu, 11 Sep 2025 07:02:44 +0000 Subject: [PATCH 3/3] add dummy text --- .github/workflows/ci_test_coverage.yml | 95 ++++++++++++++++++- .../screen/homeScreen/HomeScreen.kt | 1 + 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_test_coverage.yml b/.github/workflows/ci_test_coverage.yml index cea01cb84..ec778e865 100644 --- a/.github/workflows/ci_test_coverage.yml +++ b/.github/workflows/ci_test_coverage.yml @@ -181,13 +181,95 @@ jobs: echo "๐Ÿ”‘ Testing feature:authentication:api" fi + if [ "${{ steps.test_changes.outputs.test_feature_auth_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:authentication:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:authentication:presentation:koverXmlReport :feature:authentication:presentation:koverHtmlReport" + echo "๐Ÿ”‘ Testing feature:authentication:presentation" + fi + if [ "${{ steps.test_changes.outputs.test_feature_home_api }}" = "true" ]; then TEST_TASKS="$TEST_TASKS :feature:home:api:test" KOVER_TASKS="$KOVER_TASKS :feature:home:api:koverXmlReport :feature:home:api:koverHtmlReport" echo "๐Ÿ  Testing feature:home:api" fi - # Add more feature modules as needed... + if [ "${{ steps.test_changes.outputs.test_feature_home_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:home:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:home:presentation:koverXmlReport :feature:home:presentation:koverHtmlReport" + echo "๐Ÿ  Testing feature:home:presentation" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_profile_api }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:user_profile:api:test" + KOVER_TASKS="$KOVER_TASKS :feature:user_profile:api:koverXmlReport :feature:user_profile:api:koverHtmlReport" + echo "๐Ÿ‘ค Testing feature:user_profile:api" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_profile_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:user_profile:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:user_profile:presentation:koverXmlReport :feature:user_profile:presentation:koverHtmlReport" + echo "๐Ÿ‘ค Testing feature:user_profile:presentation" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_playlists_api }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:playlists:api:test" + KOVER_TASKS="$KOVER_TASKS :feature:playlists:api:koverXmlReport :feature:playlists:api:koverHtmlReport" + echo "๐Ÿ“ Testing feature:playlists:api" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_playlists_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:playlists:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:playlists:presentation:koverXmlReport :feature:playlists:presentation:koverHtmlReport" + echo "๐Ÿ“ Testing feature:playlists:presentation" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_search_api }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:search:api:test" + KOVER_TASKS="$KOVER_TASKS :feature:search:api:koverXmlReport :feature:search:api:koverHtmlReport" + echo "๐Ÿ” Testing feature:search:api" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_search_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:search:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:search:presentation:koverXmlReport :feature:search:presentation:koverHtmlReport" + echo "๐Ÿ” Testing feature:search:presentation" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_media_details_api }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:media_details:api:test" + KOVER_TASKS="$KOVER_TASKS :feature:media_details:api:koverXmlReport :feature:media_details:api:koverHtmlReport" + echo "๐Ÿ“บ Testing feature:media_details:api" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_media_details_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:media_details:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:media_details:presentation:koverXmlReport :feature:media_details:presentation:koverHtmlReport" + echo "๐Ÿ“บ Testing feature:media_details:presentation" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_onboarding_api }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:onboarding:api:test" + KOVER_TASKS="$KOVER_TASKS :feature:onboarding:api:koverXmlReport :feature:onboarding:api:koverHtmlReport" + echo "๐Ÿš€ Testing feature:onboarding:api" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_onboarding_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:onboarding:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:onboarding:presentation:koverXmlReport :feature:onboarding:presentation:koverHtmlReport" + echo "๐Ÿš€ Testing feature:onboarding:presentation" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_category_api }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:category:api:test" + KOVER_TASKS="$KOVER_TASKS :feature:category:api:koverXmlReport :feature:category:api:koverHtmlReport" + echo "๐Ÿ“‚ Testing feature:category:api" + fi + + if [ "${{ steps.test_changes.outputs.test_feature_category_presentation }}" = "true" ]; then + TEST_TASKS="$TEST_TASKS :feature:category:presentation:test" + KOVER_TASKS="$KOVER_TASKS :feature:category:presentation:koverXmlReport :feature:category:presentation:koverHtmlReport" + echo "๐Ÿ“‚ Testing feature:category:presentation" + fi # Execute test tasks if [ -n "$TEST_TASKS" ]; then @@ -221,7 +303,14 @@ jobs: VERIFY_TASKS="$VERIFY_TASKS :data:repositories:vod:koverVerify" fi - # Add more modules as needed... + if [ "${{ steps.test_changes.outputs.test_data_repositories_identity }}" = "true" ]; then + VERIFY_TASKS="$VERIFY_TASKS :data:repositories:identity:koverVerify" + fi + + # Add more verification tasks for other modules as needed + if [ "${{ steps.test_changes.outputs.test_feature_home_presentation }}" = "true" ]; then + VERIFY_TASKS="$VERIFY_TASKS :feature:home:presentation:koverVerify" + fi if [ -n "$VERIFY_TASKS" ]; then echo "๐Ÿ” Verifying coverage: $VERIFY_TASKS" @@ -242,6 +331,8 @@ jobs: data/remote_data_source/identity/build/reports/kover/report.xml data/local_data_source/vod/build/reports/kover/report.xml data/local_data_source/identity/build/reports/kover/report.xml + feature/home/presentation/build/reports/kover/report.xml + feature/authentication/presentation/build/reports/kover/report.xml flags: unittests name: novix-coverage-report fail_ci_if_error: false diff --git a/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt b/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt index 93169fb97..d6a7890fa 100644 --- a/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt +++ b/feature/home/presentation/src/main/java/com/sanaa/presentation/screen/homeScreen/HomeScreen.kt @@ -275,6 +275,7 @@ private fun HomeScreenContent( ) Text("add new test") + Text("add another text") } @Composable