Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
b637d9f
test(vcr): classify cache verdicts, detect live calls, surface cost l…
cursoragent May 13, 2026
9330001
test(vcr): drop dead 'from respx import MockRouter' imports
cursoragent May 13, 2026
656377b
test(image_edits): regenerate fixtures per call instead of holding op…
cursoragent May 13, 2026
dd89b93
fix(vcr): match real Bedrock hostnames in live-call probe
cursoragent May 13, 2026
ba0f4c1
fix(vcr): cover full RFC1918 172.16.0.0/12 range in local prefixes
cursoragent May 13, 2026
b13ae8d
fix(image_edits): drop _RewindableImage to prevent infinite multipart…
cursoragent May 13, 2026
3390fc1
test(vcr): mark Bedrock prompt-caching cross-call tests VCR-incompatible
cursoragent May 13, 2026
a82c240
test(vcr): tighten OVERFLOW classification and switch respx detection…
cursoragent May 13, 2026
1ea600b
fix(vcr): aggregate worker stats on the controller so the session sum…
claude May 13, 2026
a8f1940
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
claude May 13, 2026
649eb2d
fix(guardrails): improve CrowdStrike AIDR input handling (#26658)
kenany May 14, 2026
65d6ad8
feat(lasso): add tool-calling support to LassoGuardrail (#27648)
vladpolevoi May 14, 2026
a6494e6
perf: eliminate per-request callback scanning on proxy hot path (#27858)
yassin-berriai May 14, 2026
867470f
ci(mutmut): enable mutate_only_covered_lines to fit in CI budget (#27…
ryan-crabbe-berri May 14, 2026
7a462a4
fix(rate-limit): stop v3 limiter from leaking internal stash to provi…
mateo-berri May 14, 2026
9b6ab55
fix: allow for allowlisted redirect URIs (#27761)
dennishenry May 14, 2026
39e1831
Emit native web_search_tool_result blocks for Anthropic clients (Clau…
ishaan-berri May 14, 2026
e25a988
ci(codecov): restore litellm/ prefix on uploaded coverage paths
yuneng-berri May 14, 2026
3f6c009
chore(ci): remove unused GitHub Actions workflows and orphan files
yuneng-berri May 14, 2026
ea2c5cf
Revert "ci(codecov): restore litellm/ prefix on uploaded coverage paths"
yuneng-berri May 14, 2026
16bd819
Merge pull request #27795 from BerriAI/litellm_vcr-cache-observabilit…
yuneng-berri May 14, 2026
c82acbc
test(ui): preserve global Button/Tooltip mocks in per-file @tremor/re…
yuneng-berri May 14, 2026
538092a
ci: use --cov=./litellm so coverage paths resolve unambiguously in Co…
yuneng-berri May 14, 2026
d4be90c
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri May 14, 2026
27de654
Merge pull request #27957 from BerriAI/litellm_/blissful-hawking-dfd43c
yuneng-berri May 14, 2026
5176e22
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri May 14, 2026
5aabfcc
fix(mcp): allow delegate PKCE bypass for internal MCP servers
Sameerlite May 15, 2026
bcbae93
Merge pull request #27958 from BerriAI/litellm_/funny-williams-dab711
yuneng-berri May 15, 2026
d855e56
chore(mcp): warn on internal + upstream PKCE delegate
Sameerlite May 15, 2026
02a9317
fix(mcp): dedupe load_servers_from_config alias block
Sameerlite May 15, 2026
4e2b2d9
fix(mcp): expose delegate_auth_to_upstream in MCP server list rows (#…
Sameerlite May 15, 2026
fe755ee
feat(proxy): fix vector store retrieve/list/update/delete without mod…
Sameerlite May 15, 2026
cbdc70d
fix(managed_batches): convert raw output_file_id to managed ID in Che…
Sameerlite May 15, 2026
c2efe9e
fix(vertex-ai): fix zero cost/usage on completed Vertex AI batch jobs…
Sameerlite May 15, 2026
fd92769
Merge pull request #27960 from BerriAI/litellm_/peaceful-jang-c0e43b
shin-berri May 15, 2026
106b2f2
Merge pull request #27977 from BerriAI/litellm_mcp_internal_delegate_…
Sameerlite May 15, 2026
50df072
feat: add weighted-routing failover (#27980)
Sameerlite May 15, 2026
f9ba70d
fix(bedrock-mantle): use /anthropic/v1/messages path for Mantle endpo…
ishaan-berri May 15, 2026
2f041a5
fix(utils): import get_secret at runtime (#28014)
Sameerlite May 15, 2026
0d8c913
fix(proxy): make /config/update env-var encryption idempotent
yuneng-berri May 15, 2026
a4a1726
test(proxy): add endpoint-level regression for /config/update double-…
yuneng-berri May 15, 2026
2c733c0
chore(ci): modernize model references in tests and configs (#27856)
mateo-berri May 15, 2026
361a84c
Merge pull request #28022 from BerriAI/litellm_/hardcore-albattani-e5…
yuneng-berri May 15, 2026
953a8b1
test(proxy): isolate run_server CLI tests from prisma DB-setup path
yuneng-berri May 15, 2026
ed8a8a6
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri May 15, 2026
c459646
feat: add OTEL GenAI latest-experimental semantic convention support …
Michael-RZ-Berri May 16, 2026
aebb606
chore: retrigger CI
yuneng-berri May 16, 2026
fec4ae6
test(ci): add reasoning_effort grid v4 e2e regression suite
mateo-berri May 16, 2026
4327427
fix(reasoning_effort_grid_v4): cleanup unused fixture, parse converse…
cursoragent May 16, 2026
51dff1f
fix(reasoning_effort_grid_v4): grant sonnet-4-6 entries the max-effor…
cursoragent May 16, 2026
f77324d
refactor(tests): move reasoning_effort grid suite under llm_translati…
mateo-berri May 16, 2026
d084782
Merge branch 'litellm_grid-v4-e2e-tests-cZRwz' of http://127.0.0.1:41…
mateo-berri May 16, 2026
c706184
Merge pull request #28029 from BerriAI/litellm_/determined-yalow-811fee
yuneng-berri May 16, 2026
11393f8
test(interactions): validate response fields against Interaction schema
yuneng-berri May 16, 2026
39a1d43
test(fireworks): replace deprecated llama-v3p3-70b-instruct model
yuneng-berri May 16, 2026
9770efe
test(fireworks): mock document-inlining test instead of live call
yuneng-berri May 16, 2026
b5db7ed
test(fireworks): mock remaining live smoke tests
yuneng-berri May 16, 2026
935a1c0
Merge pull request #28037 from BerriAI/litellm_/wonderful-lehmann-265845
yuneng-berri May 16, 2026
1cf2d7f
test(gemini): de-flake test_gemini_image_size_limit_exceeded
yuneng-berri May 16, 2026
2130bdc
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri May 16, 2026
8c537f7
test(gemini): drop 100MB allocation in size-limit mock
yuneng-berri May 16, 2026
ec2f3aa
Merge pull request #28039 from BerriAI/litellm_/nostalgic-johnson-eeb7c3
yuneng-berri May 16, 2026
90cdbb9
fix(tests): use litellm.anthropic_messages entrypoint + drop unstable…
mateo-berri May 16, 2026
e29ea53
fix(reasoning_effort_grid): classify status by exception status_code,…
mateo-berri May 16, 2026
2b00ea9
test(ci): skip Fireworks tests on 404 + Gemini image-size test on 429
mateo-berri May 16, 2026
18c9322
fix(test_gemini): skip after pytest.raises catches the 429-wrapped Im…
mateo-berri May 16, 2026
fb7091e
refactor(reasoning_effort_grid): tighten test helpers per Greptile re…
mateo-berri May 16, 2026
f9485f1
refactor: strip PR-introduced docstrings and explanatory comments
mateo-berri May 16, 2026
4e8ac31
Merge branch 'litellm_internal_staging' into litellm_grid-v4-e2e-test…
mateo-berri May 16, 2026
014cb8f
feat: add componentized proxy deployment with gateway, backend, ui, a…
yassin-berriai May 16, 2026
57e5e4a
Merge pull request #28036 from BerriAI/litellm_grid-v4-e2e-tests-cZRwz
yuneng-berri May 16, 2026
62dca9e
fix(ci): flag codecov uploads, enable carryforward, close coverage ga…
yuneng-berri May 16, 2026
0300333
feat(otel): OTel-standard attributes on the proxy SERVER span (status…
ryan-crabbe-berri May 16, 2026
fbb39ef
build(deps): pin openai==2.33.0 in uv.lock (#28088)
yuneng-berri May 16, 2026
1b9acec
feat(model_catalog): add Azure AI Foundry GPT-5.4 model metadata (#28…
shivamrawat1 May 16, 2026
86f73e5
feat(otel): set http.response.status_code on the success SERVER span …
ryan-crabbe-berri May 16, 2026
cd551f6
chore: update Next.js build artifacts (2026-05-16 22:22 UTC, node v20…
yuneng-berri May 16, 2026
fbe0ee8
fix(proxy): sort BYOK models by their displayed name in /v2/model/i…
shivamrawat1 May 16, 2026
3d5a9ed
feat: add Terraform stacks for deploying LiteLLM on AWS and GCP (#27673)
yassin-berriai May 17, 2026
1b0ae3a
fix(mcp-oauth): PROXY_BASE_URL escape hatch + diagnostic logging for …
mateo-berri May 17, 2026
cf9b5e4
[Infra] Bump versions (#28094)
yuneng-berri May 17, 2026
fe63650
fix(proxy): gate team allowed_passthrough_routes to proxy admins (#28…
ryan-crabbe-berri May 18, 2026
bb448b0
fix(tests): stabilize image-edit VCR cassettes to stop live gpt-image…
mateo-berri May 18, 2026
8c66252
fix(bedrock/cohere): send embedding_types as JSON array, not string (…
ishaan-berri May 18, 2026
ce87c41
fix(tests): migrate realtime + rerank tests off shut-down upstream mo…
yuneng-berri May 18, 2026
477b63c
fix(caching): replay openai/responses bridge cache hits as chat strea…
Sameerlite May 18, 2026
36c494f
Litellm oss staging (#28161)
Sameerlite May 18, 2026
73e32a3
feat(prometheus): add user_email and user_alias to user budget metric…
Sameerlite May 18, 2026
a7f3dbc
test(callbacks): harden flaky proxy callback-leak detector (#28195)
yuneng-berri May 18, 2026
761ab19
fix(bedrock): sanitize batch metadata to prevent Pydantic ValidationE…
mateo-berri May 19, 2026
761c280
fix(deepseek): use native /anthropic/v1/messages endpoint and sanitiz…
mateo-berri May 19, 2026
5818828
feat(ui): add Interactions API endpoint to playground with SSE stream…
Sameerlite May 19, 2026
0290c7b
fix(proxy): decode bytes and pass-through SSE for Google-native strea…
Sameerlite May 19, 2026
cff3e0b
refactor(bedrock/sagemaker): switch to lazy loading for response stre…
harish-berri May 19, 2026
727a471
[Refactor] UI - Spend Logs: consolidate filter state and extract comp…
ryan-crabbe-berri May 19, 2026
92de742
fix(tests): replace shut-down gpt-4o-audio-preview with gpt-audio-1.5…
yuneng-berri May 19, 2026
1480ec6
chore(ci): bump versions (#28287)
yuneng-berri May 19, 2026
cde4b1a
feat: propagate team_id and team_alias to all child OTEL spans (#28273)
yassin-berriai May 19, 2026
3c3d131
Day 0 support : Gemini 3.5 Flash (#28268)
Sameerlite May 19, 2026
e59e34b
Gemini managed agents support (#28270)
Sameerlite May 19, 2026
99a63d5
feat(gemini): add gemini-3.1-flash-lite model cost map (#28320)
Sameerlite May 20, 2026
0fb7104
fix(spend_counter): seed Redis counter via SET NX to prevent cross-po…
milan-berri May 20, 2026
183092d
fix(proxy): normalize batch file IDs before ManagedObjectTable write …
Sameerlite May 20, 2026
7f563b2
fix(router): use forwarded model_id for native Azure container IDs (#…
Sameerlite May 20, 2026
2eeca2d
fix(ui): restore log filter loading indicator (#28282)
ryan-crabbe-berri May 20, 2026
5a00cb1
test(e2e): migrate runner to uv, add All Proxy Models key test (#28313)
ryan-crabbe-berri May 20, 2026
fb73995
feat(ui): team passthrough routes create parity + edit load fix (#28098)
ryan-crabbe-berri May 20, 2026
68efe69
fix(mcp): JWT on tools/list and REST tools/call server resolution (#2…
Sameerlite May 20, 2026
f3a669f
feat(interactions): migrate to Google Interactions API steps schema (…
Sameerlite May 20, 2026
f82ff7e
test(ui-e2e): admin key creation with a specific proxy model (#28365)
ryan-crabbe-berri May 20, 2026
fecf212
fix(vertex_ai): omit function_call id on Vertex Gemini 3.5+ tool turn…
Sameerlite May 20, 2026
718c463
feat(mcp): allow native MCP OAuth support for cursor (#28327)
Sameerlite May 20, 2026
8acf64e
fix(interactions): never drop streamed text deltas; always emit termi…
mateo-berri May 20, 2026
2f9ac77
fix(proxy): expose Prisma idle/connect timeout + extra DB URL params …
yassin-berriai May 21, 2026
9881969
Litellm oss staging 1 (#28337)
Sameerlite May 21, 2026
35520ad
fix: serialize guardrail_response to JSON in OTEL traces (#28362)
yassin-berriai May 21, 2026
f99fb5f
chore(ci): merge dev branch (#28314)
yuneng-berri May 21, 2026
e23d06d
test(realtime): expect session.created as xAI realtime initial event …
yuneng-berri May 21, 2026
79a5a7a
feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321)
yuneng-berri May 21, 2026
37ef8d9
fix(proxy): hydrate wildcard discovery credentials (#28284) (#28419)
yuneng-berri May 21, 2026
b7e978a
Litellm oss staging 04 21 2026 2 (#26569)
Sameerlite May 21, 2026
697a90e
fix: end user logs (#27758) (#28290)
yuneng-berri May 21, 2026
b60d467
fix(vertex_gemma): strip context_management from request body (#28438)
mateo-berri May 21, 2026
b557492
fix(logging): recalculate cost after router retry failures (#28476)
milan-berri May 21, 2026
10bd740
feat: add guardrail violation span attributes and fix missing spans o…
yassin-berriai May 21, 2026
67e6e5e
test(proxy): behavior-pinning matrix for team management endpoints (#…
yuneng-berri May 21, 2026
3f953df
test(vertex_ai): tolerate transient 500 in google maps grounding test…
yuneng-berri May 22, 2026
f1abe03
fix(docker): restore npm to non_root builder image (#28519)
yuneng-berri May 22, 2026
0715ed3
build(deps): bump next from 16.2.4 to 16.2.6 in /ui/litellm-dashboard…
yuneng-berri May 22, 2026
2a5dfcd
build(deps-dev): bump black to 26.3.1 and apply formatting (#28525)
yuneng-berri May 22, 2026
9fcd424
chore(deps): bump deps (#28528)
yuneng-berri May 22, 2026
07bcd2c
test(e2e): forward LITELLM_LICENSE to UI e2e proxy (#28398)
ryan-crabbe-berri May 22, 2026
d04373f
Add granian as a ASGI compliant web server. Provider better throughpu…
harish-berri May 22, 2026
d96e260
Fix conflicts and UI (#28477)
Sameerlite May 22, 2026
7a93cce
Add error_description and hint for oauth flows (#28471)
Sameerlite May 22, 2026
ef36e89
feat(mcp): Add tool call and tool list support via UI for Oauth mcps …
Sameerlite May 22, 2026
50a3f10
feat(proxy): persist allowlisted OIDC claims in CLI SSO poll (#28463)
Sameerlite May 22, 2026
21a21e0
fix(responses): use OpenAI SSEDecoder for Responses API streaming (#2…
Sameerlite May 22, 2026
e9f0edd
Litellm oss staging 2 (#28582)
Sameerlite May 22, 2026
b0b25ae
Include team alias in CLI JWT token (#28621)
mateo-berri May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
75 changes: 55 additions & 20 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ jobs:
CHOCOLATEY_CONFIRM_ALL: "true"
- run:
name: Install Dependencies
environment:
UV_HTTP_TIMEOUT: "300"
command: |
$installer = Join-Path $env:TEMP "uv-install.ps1"
Invoke-WebRequest -Uri https://astral.sh/uv/0.10.9/install.ps1 -OutFile $installer
Expand Down Expand Up @@ -228,7 +230,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=litellm \
--cov=./litellm \
--cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=20 \
Expand Down Expand Up @@ -293,7 +295,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=litellm \
--cov=./litellm \
--cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=20 \
Expand Down Expand Up @@ -409,14 +411,25 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-v -x \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2"
no_output_timeout: 15m
- run:
name: Rename the coverage files
command: |
mv coverage.xml auth_ui_unit_tests_coverage.xml
mv .coverage auth_ui_unit_tests_coverage

# Store test results
- store_test_results:
path: test-results
- persist_to_workspace:
root: .
paths:
- auth_ui_unit_tests_coverage.xml
- auth_ui_unit_tests_coverage

litellm_router_testing: # Runs all tests with the "router" keyword
docker:
Expand Down Expand Up @@ -493,13 +506,24 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-v -x \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
no_output_timeout: 15m
- run:
name: Rename the coverage files
command: |
mv coverage.xml router_unit_tests_coverage.xml
mv .coverage router_unit_tests_coverage
# Store test results
- store_test_results:
path: test-results
- persist_to_workspace:
root: .
paths:
- router_unit_tests_coverage.xml
- router_unit_tests_coverage
litellm_assistants_api_testing: # Runs all tests with the "assistants" keyword
docker:
- *python312_image
Expand Down Expand Up @@ -603,7 +627,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=20 \
-n 4 \
Expand Down Expand Up @@ -646,7 +670,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5"
no_output_timeout: 15m
Expand Down Expand Up @@ -688,7 +712,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2 \
Expand Down Expand Up @@ -732,7 +756,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
--retries 3 --retry-delay 5"
Expand Down Expand Up @@ -814,7 +838,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand Down Expand Up @@ -856,7 +880,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand Down Expand Up @@ -930,7 +954,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2"
Expand Down Expand Up @@ -972,7 +996,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2"
Expand Down Expand Up @@ -1015,7 +1039,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand Down Expand Up @@ -1090,7 +1114,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
-n 4 \
--junitxml=test-results/junit.xml \
--durations=5 \
Expand Down Expand Up @@ -1133,7 +1157,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5"
no_output_timeout: 15m
Expand Down Expand Up @@ -1184,7 +1208,7 @@ jobs:
--verbose \
--command="awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=litellm --cov-report=xml \
--cov=./litellm --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 -n 2 \
--reruns 2 --reruns-delay 1"
Expand Down Expand Up @@ -2280,10 +2304,11 @@ jobs:
- run:
name: Combine Coverage
command: |
uv tool run --from 'coverage[toml]==7.10.6' coverage combine realtime_translation_coverage ocr_coverage search_coverage logging_coverage audio_coverage local_testing_part1_coverage local_testing_part2_coverage pass_through_unit_tests_coverage batches_coverage guardrails_coverage redis_caching_coverage
uv tool run --from 'coverage[toml]==7.10.6' coverage combine realtime_translation_coverage ocr_coverage search_coverage logging_coverage audio_coverage local_testing_part1_coverage local_testing_part2_coverage pass_through_unit_tests_coverage batches_coverage guardrails_coverage redis_caching_coverage agent_coverage google_generate_content_endpoint_coverage litellm_utils_coverage router_unit_tests_coverage auth_ui_unit_tests_coverage
uv tool run --from 'coverage[toml]==7.10.6' coverage xml
- codecov/upload:
file: ./coverage.xml
flags: circleci

ui_build:
docker:
Expand Down Expand Up @@ -2452,10 +2477,15 @@ jobs:
DISABLE_SCHEMA_UPDATE: "true"
SERVER_ROOT_PATH: ""
PROXY_LOGOUT_URL: ""
command: |
uv run --no-sync python -m litellm.proxy.proxy_cli \
--config ui/litellm-dashboard/e2e_tests/fixtures/config.yml \
--port 4000
# LITELLM_LICENSE is forwarded from the project env so premium-gated
# UI flows can be exercised. license.spec.ts asserts the resulting
# JWT carries premium_user=true; if it ever stops being passed, that
# test fails loudly rather than silently regressing premium coverage.
command: |
LITELLM_LICENSE="$LITELLM_LICENSE" \
uv run --no-sync python -m litellm.proxy.proxy_cli \
--config ui/litellm-dashboard/e2e_tests/fixtures/config.yml \
--port 4000
background: true
- run:
name: Wait for proxy to be ready
Expand All @@ -2472,9 +2502,12 @@ jobs:
exit 1
- run:
name: Run Playwright E2E tests
# Forward LITELLM_LICENSE so license.spec.ts can detect that the
# proxy was launched with a license and assert premium_user=true.
command: |
cd ui/litellm-dashboard
npx playwright test --config e2e_tests/playwright.config.ts
LITELLM_LICENSE="$LITELLM_LICENSE" \
npx playwright test --config e2e_tests/playwright.config.ts
no_output_timeout: 10m
- store_artifacts:
path: ui/litellm-dashboard/test-results
Expand Down Expand Up @@ -2669,6 +2702,8 @@ workflows:
- local_testing_part1
- local_testing_part2
- litellm_assistants_api_testing
- litellm_router_unit_testing
- auth_ui_unit_tests
- db_migration_disable_update_check:
requires:
- build_docker_database_image
Expand Down
94 changes: 0 additions & 94 deletions .github/actions/helm-oci-chart-releaser/action.yml

This file was deleted.

35 changes: 0 additions & 35 deletions .github/workflows/README.md

This file was deleted.

3 changes: 2 additions & 1 deletion .github/workflows/_test-unit-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
--reruns-delay 1 \
--dist=loadscope \
--durations=20 \
--cov=litellm \
--cov=./litellm \
--cov-report=xml:coverage.xml \
--cov-config=pyproject.toml

Expand Down Expand Up @@ -132,4 +132,5 @@ jobs:
use_oidc: true
directory: coverage-reports
root_dir: ${{ github.workspace }}
flags: ${{ inputs.artifact-name }}
fail_ci_if_error: false
Loading
Loading