<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="19" time="92.999" timestamp="2026-08-08T10:47:03.763920+00:00" hostname="agent-env-bf990382-1303-463d-afa4-e24275c1e61f"><testcase classname="backend.tests.test_face_attendance.TestEnrollFace" name="test_requires_bearer" time="3.718" /><testcase classname="backend.tests.test_face_attendance.TestEnrollFace" name="test_no_face_returns_422" time="5.070" /><testcase classname="backend.tests.test_face_attendance.TestEnrollFace" name="test_enroll_then_persist" time="6.168" /><testcase classname="backend.tests.test_face_attendance.TestMatchFace" name="test_requires_bearer" time="0.121" /><testcase classname="backend.tests.test_face_attendance.TestMatchFace" name="test_invalid_base64_returns_400" time="1.094" /><testcase classname="backend.tests.test_face_attendance.TestMatchFace" name="test_match_after_enroll" time="4.752" /><testcase classname="backend.tests.test_face_attendance.TestMatchFace" name="test_match_creates_attendance_record" time="12.240" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_dark_image_rejected" time="5.981" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_overexposed_image_rejected" time="1.070" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_blurred_image_rejected" time="1.505" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_two_faces_rejected" time="1.504" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_face_too_far_rejected" time="1.325" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_zero_faces_rejected" time="1.153" /><testcase classname="backend.tests.test_face_quality_multi.TestEnrolQualityGate" name="test_happy_path_then_match" time="8.695" /><testcase classname="backend.tests.test_face_quality_multi.TestMultiFaceMatch" name="test_schema_contains_faces_detected_and_matches" time="4.798" /><testcase classname="backend.tests.test_face_quality_multi.TestMultiFaceMatch" name="test_no_face_frame" time="1.104" /><testcase classname="backend.tests.test_face_quality_multi.TestMultiFaceMatch" name="test_same_face_twice_dedupes" time="5.504" /><testcase classname="backend.tests.test_face_quality_multi.TestMultiFaceMatch" name="test_two_different_employees" time="19.755" /><testcase classname="backend.tests.test_face_quality_multi.TestMultiFaceMatch" name="test_no_match_fallback" time="6.050" /></testsuite></testsuites>