codecov: # Don't block CI if codecov fails to process reports require_ci_to_pass: false notify: after_n_builds: 1 # Comment after each report (don't wait for all) coverage: precision: 2 round: down # Display range from 30-100% to provide meaningful color gradients range: "30...100" status: project: # Backend coverage strategy: Aspirational target for progress tracking # Current coverage: ~33%, Target: 55% (intentionally higher than current) # This creates visual progress indicators (red->yellow->green) without blocking PRs # Shows improvement over time while encouraging better test coverage backend: target: 55% # Threshold: Allowable drop in coverage before failing the check # 5% = coverage can drop from 33% to 28% without failing status # Higher threshold to avoid blocking PRs during improvement phase threshold: 5% flags: - backend # Frontend coverage: Realistic target based on current state # Current coverage: ~1.5%, Target: 10% (achievable improvement goal) frontend: target: 10% # Threshold: Allowable drop in coverage before failing the check # 1% = coverage can drop from 1.5% to 0.5% without failing status # Small threshold appropriate for very low baseline coverage threshold: 1% flags: - frontend # LFX coverage: Target for core package (excludes components) # Components (third-party integrations) tracked separately # Current core coverage: ~44%, Target: 60% (aspirational improvement) lfx: target: 60% # Threshold: Allowable drop in coverage before failing the check # 5% = coverage can drop from 44% to 39% without failing status threshold: 5% flags: - lfx # New code coverage requirements - realistic target for current state # Encourages testing new features without blocking development patch: default: target: 40% threshold: 5% # PR comment configuration - what information to show in coverage reports comment: layout: "reach,diff,flags,tree" # Show coverage, changes, flags, and file tree behavior: default require_changes: false # Comment even if no changes require_base: false # Don't require base branch comparison require_head: true # Require current branch coverage # Define separate coverage tracking for frontend, backend, and lfx flags: backend: paths: - src/backend/ carryforward: true # Preserve coverage data across builds if missing frontend: paths: - src/frontend/ carryforward: true # Preserve coverage data across builds if missing lfx: paths: - src/lfx/ carryforward: true # Preserve coverage data across builds if missing # Define coverage components for granular reporting component_management: default_rules: # default rules that will be inherited by all components statuses: - type: project # in this case every component that doens't have a status defined will have a project type one target: auto branches: - "!main" individual_components: - component_id: backend_components name: "Backend Components" paths: - src/backend/base/langflow/components/** # Note: Many components excluded by .coveragerc (bundled + legacy) # This tracks coverage of remaining "core" components only # Files/directories to exclude from coverage calculations ignore: # Database migrations - infrastructure code, not business logic - "src/backend/base/langflow/alembic/**" # Test files themselves don't need coverage - "src/backend/tests/**" - "src/frontend/tests/**" - "src/frontend/test-results/**" - "src/lfx/tests/**" # Build artifacts and dependencies - "**/__pycache__/**" - "**/*.pyc" - "**/node_modules/**" - "**/coverage/**" # Python package init files - typically just imports - "**/__init__.py" # Database migrations - "**/migrations/**" # LFX components - third-party integrations tracked separately - "src/lfx/components/**"