litellm/tests/e2e
ryan-crabbe-berri 11dbe70092
Some checks failed
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
Terraform Provider / gofmt, vet, build, test (push) Has been cancelled
Terraform Provider / Provider endpoints vs proxy OpenAPI schema (push) Has been cancelled
Give e2e tests typed metadata for what they drive
`@pytest.mark.covers("cell.id")` is a registry key, not a description: it cannot answer "which tests drive /v1/responses on Anthropic". This adds the declared half of the per-test metadata, on top of the recorded step log

`@meta(Subject(...))` from tests/e2e/e2e_metadata.py takes one frozen dataclass whose fields are closed enums (domain, route, providers, capabilities, mode) plus free-string models, so a typo is a basedpyright error at the call site rather than a property that silently never appears. providers, models and capabilities are tuples because one test node often drives several (the claude_code matrix runs haiku, sonnet and opus in one body), with no positional pairing between them. Each is deduped and sorted at declaration so committed run artifacts diff cleanly, and anything but a tuple is refused at import, so models=("gpt-5.5") is a collection error naming the file instead of one model per character

Serialization is one pass over dataclasses.asdict: each scalar is one <property> under its field name, each plural value a repeated property under its singular name (provider, model, capability). Empty fields emit nothing, and the fixed package/covers/source prefix stays byte-identical, with the declared fields appended behind it. `covers` is untouched: the marker is separate because a dataclass passed to covers would be dropped silently by dedupe_covers and hard-fail collection in tests/integration/conftest.py, and @meta goes below @covers so every source deep link keeps its line

Provider mirrors litellm's LlmProviders values instead of importing them, because tests/e2e is shipped to the runner image on its own and a module-scope `from litellm...` would make the package a collection-time dependency. TestProviderMirrorsLitellm fails on drift wherever litellm is importable

tests/e2e/quota_management/ (29 files) is annotated as the pilot, and tests that drive more than one provider or model declare all of them. Every field is optional until the backfill of the rest of the suite lands

Its harness tests sit beside the step log's in tests/code_coverage_tests/test_e2e_metadata.py and test_e2e_junit_report.py, since tests/e2e holds only tests that drive a live proxy
2026-09-21 19:13:45 -07:00
..
a2a Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
access_control Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
batches Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
claude_code Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
coverage_registry Merge pull request #42295 from BerriAI/litellm_fix_azure_cancellederror_cooldown 2026-09-21 17:24:22 -07:00
gateway Merge remote-tracking branch 'origin/main' into devin_ai_fix_azure_cancellederror_35329 2026-09-21 11:59:56 -07:00
guardrails Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
llm_translation Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
load Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
logging Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
management Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
mcp Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
migrations Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
other Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
quota_management Give e2e tests typed metadata for what they drive 2026-09-21 19:13:45 -07:00
router Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
ui Merge pull request #41773 from BerriAI/litellm_dashboard-form-happy-paths 2026-09-21 16:56:25 -07:00
AGENTS.md Give e2e tests typed metadata for what they drive 2026-09-21 19:13:45 -07:00
conftest.py Give e2e tests typed metadata for what they drive 2026-09-21 19:13:45 -07:00
CONTRIBUTING.md Merge branch 'main' into claude/e2e-tests-custom-endpoints-qxoi1o 2026-09-21 11:34:21 -07:00
e2e_config.py test(e2e): gate the Bedrock edge capture behind a provider_edge_host opt-in 2026-09-21 06:17:03 +00:00
e2e_db.py test(e2e): guard destructive spend-log truncate behind an explicit opt-in (#33751) 2026-07-20 08:47:39 -07:00
e2e_http.py test(e2e): settle for the replica propagation window and trim the disconnect cell's prose 2026-09-21 13:30:25 -07:00
e2e_metadata.py Give e2e tests typed metadata for what they drive 2026-09-21 19:13:45 -07:00
fixture_bundle.py test: add strict stateless provider replay identity 2026-09-14 16:55:43 -07:00
fixture_canonical.py feat(e2e): key the provider cache per test and mount Bedrock behind it 2026-09-16 02:15:46 -07:00
fixture_mode.py fix(e2e): own a shared fixture's deployment by the fixture's node, not the first test 2026-09-16 17:35:05 -07:00
fixture_profile.py test: preserve strict replay numeric spelling 2026-09-14 17:11:56 -07:00
idp.py Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
idp_realm.json test(e2e): harden JWT fixtures and cover management lifecycles 2026-09-11 16:36:12 -07:00
junit_properties.py Give e2e tests typed metadata for what they drive 2026-09-21 19:13:45 -07:00
lifecycle.py Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
models.py Merge pull request #42295 from BerriAI/litellm_fix_azure_cancellederror_cooldown 2026-09-21 17:24:22 -07:00
otel_client.py Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
PROVIDER_CACHE.md fix(e2e): own a shared fixture's deployment by the fixture's node, not the first test 2026-09-16 17:35:05 -07:00
provider_cache.py fix(e2e): bind provider-cache recordings to the deployment's test, not the serving process 2026-09-16 17:08:17 -07:00
provider_cache_redis.py chore(e2e): report the key components behind a mount that never converges 2026-09-16 15:01:08 -07:00
provider_cache_routing.py revert(e2e): unmount Gemini, its api_base means two things 2026-09-16 08:37:25 -07:00
provider_edge.py fix(responses): forward safety_identifier through the chat completion bridge 2026-09-21 04:09:59 +00:00
provider_edge_bedrock.py feat(e2e): cache the responses and embeddings endpoints behind the edge 2026-09-16 02:34:09 -07:00
proxy_client.py Record each e2e test's steps from the harness it calls 2026-09-21 18:48:59 -07:00
pytest.ini Give e2e tests typed metadata for what they drive 2026-09-21 19:13:45 -07:00
test_e2e_http.py test: bind management E2E callers and isolate JWT actors 2026-09-12 13:29:04 -07:00
test_fixture_bundle.py feat(e2e): record and replay streamed provider responses chunk-for-chunk 2026-08-24 12:51:44 -07:00
test_fixture_canonical.py test(e2e): pin query params and multipart form fields as replay match-key identity 2026-08-20 15:59:34 -04:00
test_fixture_mode.py feat(e2e): move record/replay to the provider edge (LIT-5745) 2026-08-19 18:39:15 -07:00
test_idp.py test: enforce isolated actors and stop OIDC process groups 2026-09-12 13:49:49 -07:00
test_junit_properties.py Keep a full step log's newest steps, and test it outside tests/e2e 2026-09-21 19:08:14 -07:00
test_provider_edge.py fix(e2e): bind provider-cache recordings to the deployment's test, not the serving process 2026-09-16 17:08:17 -07:00
test_proxy_client.py fix(e2e): own a shared fixture's deployment by the fixture's node, not the first test 2026-09-16 17:35:05 -07:00
transport.py test(e2e): client disconnect must not bench the Azure deployment it cancelled 2026-09-21 18:39:37 +00:00