Download api/tests/artifacts/combined_results.json from Text-to-Document-Generation/Docgenie-API: direct link, hf CLI and curl.
- Browser
- Download file 22 kB
-
https://huggingface.co/spaces/Text-to-Document-Generation/Docgenie-API/resolve/main/api/tests/artifacts/combined_results.json
- Command line
-
hf download hf://spaces/Text-to-Document-Generation/Docgenie-API/api/tests/artifacts/combined_results.json
-
curl -L -o combined_results.json https://huggingface.co/spaces/Text-to-Document-Generation/Docgenie-API/resolve/main/api/tests/artifacts/combined_results.json
22 kB
| { | |
| "generated": "2026-05-04T00:21:21.457245", | |
| "suites": [ | |
| { | |
| "name": "functional", | |
| "label": "Functional Testing (Unit Testing)", | |
| "counts": { | |
| "passed": 63, | |
| "failed": 0, | |
| "error": 0, | |
| "skipped": 0, | |
| "total": 63 | |
| }, | |
| "tests": [ | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_missing_request_id_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 1.446 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_empty_seed_images_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.244 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_too_many_seed_images_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.258 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_invalid_seed_image_url_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.309 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_num_solutions_below_min_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.25 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_num_solutions_above_max_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.255 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncInputValidation::test_empty_body_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.243 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_nonexistent_request_id_is_not_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.357 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_nonexistent_request_id_returns_404_or_503", | |
| "outcome": "PASSED", | |
| "duration_s": 0.376 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_error_response_is_json", | |
| "outcome": "PASSED", | |
| "duration_s": 0.341 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_error_response_has_detail", | |
| "outcome": "PASSED", | |
| "duration_s": 0.324 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_swagger_string_tokens_not_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.334 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_none_google_tokens_accepted", | |
| "outcome": "PASSED", | |
| "duration_s": 0.332 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_num_solutions_boundary_values_schema_valid", | |
| "outcome": "PASSED", | |
| "duration_s": 0.771 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_async_endpoint.py::TestGenerateAsyncBusinessLogic::test_missing_prompt_params_uses_defaults", | |
| "outcome": "PASSED", | |
| "duration_s": 0.396 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_missing_request_id_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.245 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_empty_seed_images_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.242 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_too_many_seed_images_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.246 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_invalid_seed_image_url_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.243 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_num_solutions_below_min_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.315 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_num_solutions_above_max_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.244 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_handwriting_ratio_out_of_range_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.489 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_non_json_body_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.394 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfInputValidation::test_empty_body_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.302 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_nonexistent_request_id_returns_404", | |
| "outcome": "PASSED", | |
| "duration_s": 0.301 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_nonexistent_request_id_error_is_json", | |
| "outcome": "PASSED", | |
| "duration_s": 0.492 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_nonexistent_request_id_has_detail", | |
| "outcome": "PASSED", | |
| "duration_s": 0.294 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_swagger_string_token_is_sanitised", | |
| "outcome": "PASSED", | |
| "duration_s": 0.382 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_none_google_tokens_are_accepted", | |
| "outcome": "PASSED", | |
| "duration_s": 0.31 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_valid_num_solutions_boundary_values_accepted", | |
| "outcome": "PASSED", | |
| "duration_s": 0.664 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_missing_prompt_params_uses_defaults", | |
| "outcome": "PASSED", | |
| "duration_s": 0.286 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_generate_pdf_endpoint.py::TestGeneratePdfBusinessLogic::test_request_id_with_user_prefix_is_accepted", | |
| "outcome": "PASSED", | |
| "duration_s": 0.301 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestRootEndpoint::test_root_returns_200", | |
| "outcome": "PASSED", | |
| "duration_s": 0.248 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestRootEndpoint::test_root_content_type_is_json", | |
| "outcome": "PASSED", | |
| "duration_s": 0.275 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestRootEndpoint::test_root_returns_healthy", | |
| "outcome": "PASSED", | |
| "duration_s": 0.001 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestRootEndpoint::test_root_response_has_version", | |
| "outcome": "PASSED", | |
| "duration_s": 0.0 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestRootEndpoint::test_root_schema_contract", | |
| "outcome": "PASSED", | |
| "duration_s": 0.0 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestHealthEndpoint::test_health_returns_200", | |
| "outcome": "PASSED", | |
| "duration_s": 0.254 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestHealthEndpoint::test_health_content_type_is_json", | |
| "outcome": "PASSED", | |
| "duration_s": 0.249 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestHealthEndpoint::test_health_returns_healthy_status", | |
| "outcome": "PASSED", | |
| "duration_s": 0.001 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestHealthEndpoint::test_health_response_has_version", | |
| "outcome": "PASSED", | |
| "duration_s": 0.001 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestHealthEndpoint::test_health_schema_contract", | |
| "outcome": "PASSED", | |
| "duration_s": 0.001 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_health_endpoints.py::TestHealthEndpoint::test_health_and_root_agree", | |
| "outcome": "PASSED", | |
| "duration_s": 0.538 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_unknown_uuid_returns_non_200", | |
| "outcome": "PASSED", | |
| "duration_s": 0.3 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_unknown_uuid_response_is_json", | |
| "outcome": "PASSED", | |
| "duration_s": 0.287 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_unknown_uuid_has_detail", | |
| "outcome": "PASSED", | |
| "duration_s": 0.293 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_garbage_request_id_returns_error", | |
| "outcome": "PASSED", | |
| "duration_s": 0.295 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_endpoint_is_get_only", | |
| "outcome": "PASSED", | |
| "duration_s": 0.36 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_status_field_in_known_values_if_200", | |
| "outcome": "PASSED", | |
| "duration_s": 0.303 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_job_status_endpoint.py::TestJobStatusEndpoint::test_200_response_contract_if_present", | |
| "outcome": "PASSED", | |
| "duration_s": 0.305 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_returns_200_for_any_user", | |
| "outcome": "PASSED", | |
| "duration_s": 0.325 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_response_is_json", | |
| "outcome": "PASSED", | |
| "duration_s": 0.32 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_response_has_required_fields", | |
| "outcome": "PASSED", | |
| "duration_s": 0.287 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_jobs_is_a_list", | |
| "outcome": "PASSED", | |
| "duration_s": 0.302 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_count_matches_jobs_length", | |
| "outcome": "PASSED", | |
| "duration_s": 0.327 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_user_id_echoed_in_response", | |
| "outcome": "PASSED", | |
| "duration_s": 0.284 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_default_limit_is_50", | |
| "outcome": "PASSED", | |
| "duration_s": 0.291 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_default_offset_is_0", | |
| "outcome": "PASSED", | |
| "duration_s": 0.309 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_custom_limit_is_respected", | |
| "outcome": "PASSED", | |
| "duration_s": 0.298 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_custom_offset_is_respected", | |
| "outcome": "PASSED", | |
| "duration_s": 0.399 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_limit_above_100_is_capped", | |
| "outcome": "PASSED", | |
| "duration_s": 0.293 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_non_integer_user_id_returns_422", | |
| "outcome": "PASSED", | |
| "duration_s": 0.249 | |
| }, | |
| { | |
| "nodeid": "api/tests/functional/test_user_jobs_endpoint.py::TestUserJobsEndpoint::test_endpoint_is_get_only", | |
| "outcome": "PASSED", | |
| "duration_s": 0.275 | |
| } | |
| ], | |
| "summary_line": "============================= 63 passed in 20.49s =============================", | |
| "returncode": 0 | |
| }, | |
| { | |
| "name": "performance", | |
| "label": "Non-Functional Testing (Performance Testing)", | |
| "counts": { | |
| "passed": 9, | |
| "failed": 0, | |
| "error": 0, | |
| "skipped": 0, | |
| "total": 9 | |
| }, | |
| "tests": [ | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestLightweightEndpointLatency::test_root_latency_under_threshold", | |
| "outcome": "PASSED", | |
| "duration_s": 10.77 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestLightweightEndpointLatency::test_health_latency_under_threshold", | |
| "outcome": "PASSED", | |
| "duration_s": 1.334 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestLightweightEndpointLatency::test_user_jobs_latency_under_threshold", | |
| "outcome": "PASSED", | |
| "duration_s": 1.628 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestGeneratePdfValidationLatency::test_schema_rejection_is_fast", | |
| "outcome": "PASSED", | |
| "duration_s": 1.326 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestGenerateAsyncValidationLatency::test_schema_rejection_is_fast", | |
| "outcome": "PASSED", | |
| "duration_s": 1.539 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestSequentialThroughput::test_health_sequential_throughput", | |
| "outcome": "PASSED", | |
| "duration_s": 1.443 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestConcurrentRequests::test_concurrent_2_health_requests", | |
| "outcome": "PASSED", | |
| "duration_s": 1.527 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestConcurrentRequests::test_concurrent_4_health_requests", | |
| "outcome": "PASSED", | |
| "duration_s": 1.416 | |
| }, | |
| { | |
| "nodeid": "api/tests/performance/test_latency_throughput.py::TestConcurrentRequests::test_concurrent_wall_less_than_serial", | |
| "outcome": "PASSED", | |
| "duration_s": 9.936 | |
| } | |
| ], | |
| "summary_line": "============================= 9 passed in 31.02s =============================", | |
| "returncode": 0 | |
| }, | |
| { | |
| "name": "reliability", | |
| "label": "Non-Functional Testing (Reliability Testing)", | |
| "counts": { | |
| "passed": 21, | |
| "failed": 0, | |
| "error": 0, | |
| "skipped": 0, | |
| "total": 21 | |
| }, | |
| "tests": [ | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRepeatedRequestConsistency::test_health_always_returns_200", | |
| "outcome": "PASSED", | |
| "duration_s": 3.296 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRepeatedRequestConsistency::test_root_always_returns_200", | |
| "outcome": "PASSED", | |
| "duration_s": 1.203 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRepeatedRequestConsistency::test_unknown_job_always_returns_same_code", | |
| "outcome": "PASSED", | |
| "duration_s": 2.157 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRepeatedRequestConsistency::test_user_jobs_always_returns_200", | |
| "outcome": "PASSED", | |
| "duration_s": 1.684 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRepeatedRequestConsistency::test_422_always_returned_for_missing_request_id", | |
| "outcome": "PASSED", | |
| "duration_s": 1.217 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[missing_request_id_pdf-https://text-to-document-generation-docgenie-api.hf.space/generate/pdf-POST-payload0-expected0]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.247 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[missing_request_id_async-https://text-to-document-generation-docgenie-api.hf.space/generate/async-POST-payload1-expected1]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.255 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[empty_seed_images_pdf-https://text-to-document-generation-docgenie-api.hf.space/generate/pdf-POST-payload2-expected2]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.334 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[num_solutions_zero_pdf-https://text-to-document-generation-docgenie-api.hf.space/generate/pdf-POST-payload3-expected3]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.246 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[non_int_user_id-https://text-to-document-generation-docgenie-api.hf.space/jobs/user/abc-GET-None-expected4]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.387 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[nonexistent_job_status-https://text-to-document-generation-docgenie-api.hf.space/jobs/00000000-0000-0000-0000-000000000000/status-GET-None-expected5]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.386 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestInvalidInputHandling::test_case[nonexistent_request_id_pdf-https://text-to-document-generation-docgenie-api.hf.space/generate/pdf-POST-payload6-expected6]", | |
| "outcome": "PASSED", | |
| "duration_s": 0.312 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRecoveryAfterBadRequest::test_health_recovers_after_bad_generate_pdf", | |
| "outcome": "PASSED", | |
| "duration_s": 0.724 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRecoveryAfterBadRequest::test_user_jobs_recovers_after_bad_job_status", | |
| "outcome": "PASSED", | |
| "duration_s": 0.674 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestRecoveryAfterBadRequest::test_sequential_mixed_valid_invalid", | |
| "outcome": "PASSED", | |
| "duration_s": 1.25 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestHealthAvailabilityUnderLoad::test_health_available_during_job_status_calls", | |
| "outcome": "PASSED", | |
| "duration_s": 3.461 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestSustainedLoad::test_sustained_health_calls", | |
| "outcome": "PASSED", | |
| "duration_s": 14.6 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestErrorResponseContract::test_422_has_detail_list", | |
| "outcome": "PASSED", | |
| "duration_s": 0.734 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestErrorResponseContract::test_404_has_detail_string", | |
| "outcome": "PASSED", | |
| "duration_s": 1.37 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestErrorResponseContract::test_503_has_detail_if_redis_unavailable", | |
| "outcome": "PASSED", | |
| "duration_s": 0.347 | |
| }, | |
| { | |
| "nodeid": "api/tests/reliability/test_reliability.py::TestErrorResponseContract::test_repeated_422_response_is_stable", | |
| "outcome": "PASSED", | |
| "duration_s": 3.146 | |
| } | |
| ], | |
| "summary_line": "============================= 21 passed in 50.18s =============================", | |
| "returncode": 0 | |
| } | |
| ] | |
| } |