Skip to content

ci: run backend tests for provider bundle changes - #14606

Merged
erichare merged 1 commit into
release-1.12.0from
ci/bundles-python-path-filter-1120
Aug 16, 2026
Merged

ci: run backend tests for provider bundle changes#14606
erichare merged 1 commit into
release-1.12.0from
ci/bundles-python-path-filter-1120

Conversation

@erichare

@erichare erichare commented Aug 16, 2026

Copy link
Copy Markdown
Member

Port of #14605 to release-1.12.0. Identical one-hunk change; .github/changes-filter.yaml is byte-identical across the two branches.

Summary

Adds src/bundles/** to the python path filter in .github/changes-filter.yaml.

Why

.github/workflows/ci.yml gates the backend suite on the python filter:

  test-backend:
    if: |
      ...
        needs.path-filter.outputs.python == 'true')

That gate was added in #13614 (2026-06-15) to stop frontend-only PRs from paying for the backend suite. But the python filter still lists only src/backend/**, src/lfx/**, pyproject.toml and uv.lock — it never learned about src/bundles/** after the bundle metapackage split.

So a PR that only touches a provider bundle resolves python=false and skips the entire backend suite, including the bundle's own tests under src/bundles/*/tests/.

Before the gate landed, this was invisible: #13514 changed exactly two files — src/bundles/ibm/.../db2_vector.py and src/bundles/ibm/tests/test_db2_vector.py — and still ran all 17 backend jobs, because test-backend was then gated only on docs-only != 'true'. The same PR today would run none of them, and the test file it modified would never execute.

Bundle PRs that happen to touch uv.lock or pyproject.toml (most new bundles do) still match the filter, which is why this hasn't bitten yet — but any edit confined to an existing bundle's Python silently loses backend coverage.

Blast radius

path-filter.outputs.python has four consumers in ci.yml:

Line Consumer Effect
253 test-backend now runs for bundle-only PRs — the fix
340 test-templates now runs for bundle-only PRs — desirable; bundle components appear in starter templates
200 docs-only computation only ever makes docs-only harder to be true; cannot mis-skip
493 CI Success echo cosmetic

No effect on Playwright shard selection — that is driven by the separate suite filters (components, workspace, api, …), which are deliberately left alone here. See the note below.

Deliberately not changed

I also considered adding src/bundles/** to the components suite filter, but that would reduce coverage. When no suite matches, typescript_test.yml falls through to @release:

if [[ ${#TAGS[@]} -eq 0 ]]; then
  SUITES='["release"]'
  TAGS=("@release")

So bundle-only PRs already get the full @release suite (~411 tests, 70 shards — #13514 ran 64 shards under the smaller suite of the time). Mapping bundles to components would narrow that to @components (~73 tests, 16 shards). The frontend side is already behaving conservatively and is left as-is.

Two adjacent gaps, both out of scope here:

  • docker filter also omits src/bundles/**, so bundle-only PRs skip test-docker even though bundles ship in the full image.
  • scripts/check_changes_filter.py (the "Validate Filter Coverage" step) only inspects paths under src/frontend/, which is why no one was told about this. Widening it to src/bundles/ would catch the next instance.

Validation

  • .github/changes-filter.yaml parses; python list contains src/bundles/**.
  • Confirmed against the current ci.yml that all four outputs.python consumers behave as tabulated above.

Summary by CodeRabbit

  • Chores
    • Updated change classification so modifications within bundle files are recognized as Python-related changes.

The `python` path filter never learned about `src/bundles/**` after the
bundle metapackage split. Since #13614 gated `test-backend` on
`path-filter.outputs.python == 'true'`, a PR that only touches a provider
bundle reports `python=false` and skips the entire backend suite -
including the bundle's own tests under `src/bundles/*/tests/`.

Add `src/bundles/**` to the `python` filter so bundle-only PRs run the
backend suite (and `test-templates`, which shares the same output).
@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d39d3b84-9ea4-4c39-8da3-92f7941add94

📥 Commits

Reviewing files that changed from the base of the PR and between 531e38a and b92513b.

📒 Files selected for processing (1)
  • .github/changes-filter.yaml

Included review availability: Your plan includes up to 10 reviews per rolling hour; 7 remain after this review.


Walkthrough

The Python change-detection filter now includes src/bundles/**, so bundle-only changes are classified as Python changes.

Changes

Python Change Detection

Layer / File(s) Summary
Extend Python path filter
.github/changes-filter.yaml
The Python filter now includes src/bundles/**.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to b9251

This change makes backend and template checks run for provider-bundle-only updates; no actionable merge-blocking risk remains beyond normal checks and review.


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Test Coverage For New Implementations ❌ Error The PR fixes a CI-filter bug, but its only changed file is YAML; no regression test verifies that bundle paths set python=true and run backend tests. Add a regression test for .github/changes-filter.yaml that covers bundle source and test paths and verifies the backend job gate.
✅ Passed checks (8 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the change to run backend tests when provider bundle changes occur.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Test Quality And Coverage ✅ Passed The diff changes only .github/changes-filter.yaml; it adds no implementation, endpoint, async function, or test. The test-quality criteria are not applicable.
Test File Naming And Structure ✅ Passed The HEAD^..HEAD diff contains only .github/changes-filter.yaml; no test files or test code changed, so this naming and structure check is not applicable.
Excessive Mock Usage Warning ✅ Passed The PR changes only .github/changes-filter.yaml. It adds no test files, test code, or mock usage, so the excessive-mock check is not applicable.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/bundles-python-path-filter-1120

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Test Coverage Advisor

No source changes detected without accompanying tests. Thanks for keeping coverage up! 🎉

Advisory check only — never blocks merge.

@erichare
erichare merged commit a8112bb into release-1.12.0 Aug 16, 2026
27 checks passed
@erichare
erichare deleted the ci/bundles-python-path-filter-1120 branch August 16, 2026 15:13
@github-actions

Copy link
Copy Markdown
Contributor

Frontend Unit Test Coverage Report

Coverage Summary

Lines Statements Branches Functions
Coverage: 53%
53.1% (78276/147387) 70.94% (11090/15631) 48.77% (1831/3754)

Unit Test Results

Tests Skipped Failures Errors Time
6143 0 💤 0 ❌ 0 🔥 22m 55s ⏱️

@codecov

codecov Bot commented Aug 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 59.09%. Comparing base (3560dda) to head (b92513b).
⚠️ Report is 3 commits behind head on release-1.12.0.

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##           release-1.12.0   #14606      +/-   ##
==================================================
- Coverage           64.96%   59.09%   -5.88%     
==================================================
  Files                2456     2417      -39     
  Lines              251060   241666    -9394     
  Branches            34946    19890   -15056     
==================================================
- Hits               163102   142802   -20300     
- Misses              85893    96800   +10907     
+ Partials             2065     2064       -1     
Flag Coverage Δ
frontend 53.10% <ø> (-9.69%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 946 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant