Docgenie-API / api /tests /artifacts /combined_results.json
Ahadhassan-2003
deploy: update HF Space
dc4e6da
{
"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
}
]
}