adds make recipie to run integration tests locally - #7196
Merged
akshaydeo merged 1 commit intoSep 15, 2026
Merged
Conversation
Contributor
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
📝 SummarySummary by CodeRabbit
WalkthroughChangesIntegration test execution
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant Developer
participant MakeTarget
participant TestIntegrationsScript
participant Gateway
participant TestFiles
Developer->>MakeTarget: run test-integrations
MakeTarget->>TestIntegrationsScript: pass gateway and parallelism settings
TestIntegrationsScript->>Gateway: health-check or start gateway
TestIntegrationsScript->>TestFiles: run selected files in parallel
TestFiles-->>TestIntegrationsScript: streamed output and exit status
TestIntegrationsScript-->>Developer: statuses and failure report
Suggested reviewers: ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
akshaydeo
marked this pull request as ready for review
September 15, 2026 16:47
Contributor
Author
Merge activity
|
akshaydeo
deleted the
09-15-adds_make_recipie_to_run_integration_tests_locally
branch
September 15, 2026 16:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Adds a
make test-integrationstarget that runs both the Python and TypeScript SDK integration suites in parallel (one process per test file) against a single shared gateway, and improves the underlyingtest-integrations.shscript with live output streaming, a structured markdown failure report,INTEGRATION_TEST_FILTERsupport for narrowing to a single provider, andSKIP_GATEWAY_STARTsupport for attaching to an already-running gateway.Changes
make test-integrations: New Makefile target that delegates totest-integrations.sh --parallel-files. Detects whether a gateway is already servingHOST:PORTand setsSKIP_GATEWAY_START=1if so, reusestmp/bifrost-httpby default (skipping the full UI build), acceptsJOBS=NandINTEGRATION=<name>overrides, and validates bash 5.1+ before spending time on secrets or builds.SKIP_GATEWAY_START: When set, the script skips building the binary, skips starting the MCP fixture, and re-probes/healthon the existing server rather than launching its own.cleanup()leaves the reused server running since it did not start it.INTEGRATION_TEST_FILTER/--parallel-filesnarrowing: The filter is validated to[A-Za-z0-9_-]only (interpolated into a glob, so metacharacters would escape the test directories). In the parallel path it filters bothtest_<name>.pyandtest-<name>.test.tslists after globbing, errors if nothing matches, and lists available integrations to help correct typos. In the sequential path it warns that the filter is ignored rather than silently running the full suite.Live output streaming:
launch_test_filenow pipes each job throughteeso lines appear as they happen. When more than one file runs concurrently, anawkprefix ([label] line) keeps concurrent output attributable.PYTHONUNBUFFERED=1is exported so Python does not block-buffer into the pipe. Only failed jobs are replayed at the end; passing jobs are not echoed a second time.Markdown failure report:
write_failure_reportwritestest-reports/integration-failures.mdon every run (overwriting a stale red report on a green run). It extracts failed case names from pytest (::.*FAILED) and vitest (× suite > case) output after stripping ANSI escapes, copies each failed job's full log totest-reports/integration-<slug>.log, and includes a collapsible failure-output excerpt per file.TEST_FINAL_STATUS[]is introduced alongsideTEST_STATUSES[]because the throttle's bookkeeping array is empty for jobs the finalwaitreaps.mktempportability: Removed.logsuffixes frommktemptemplates. BSD/macOSmktemponly substitutes trailingXs, soname.XXXXXX.logis created literally and the second run fails with "File exists". GNUmktempaccepts a suffix flag, which is why this only manifests outside CI.bash version hint: The "bash 5.1 required" error now also prints the macOS remedy (
brew install bash).Trailing whitespace: Removed a stray trailing space in
cleanup().Type of change
Affected areas
How to test
After a run, inspect
test-reports/integration-failures.mdfor a structured digest andtest-reports/integration-<slug>.logfor each failed file's full output.Set
INTEGRATION_TEST_FILTER=openai(orINTEGRATION=openaivia the Makefile) to confirm the filter rejects invalid characters, errors on an unmatched name with a list of available integrations, and runs only the matching Python and TypeScript files.Breaking changes
Related issues
Security considerations
INTEGRATION_TEST_FILTERis validated to[A-Za-z0-9_-]before being interpolated into a glob. A path separator, glob metacharacter, or..sequence would be rejected, preventing the filter from reaching files outside the twotests/directories.mktemppaths use random suffixes rather than predictable names to avoid symlink-based truncation attacks in world-writable/tmp.Checklist
docs/contributing/README.mdand followed the guidelines