<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="20" time="4.330" timestamp="2026-08-23T11:04:32.149999+00:00" hostname="agent-env-eeb3d406-49b1-49d2-af69-5cdb3fdf2449"><testcase classname="tests.backend_test.TestGalleryCRUD" name="test_write_endpoints_require_auth" time="0.215" /><testcase classname="tests.backend_test.TestAuth" name="test_login_and_me_and_logout" time="0.572" /><testcase classname="tests.backend_test.TestAuth" name="test_me_without_cookie" time="0.135" /><testcase classname="tests.backend_test.TestGalleryCRUD" name="test_full_crud_cycle" time="0.710" /><testcase classname="tests.backend_test.TestAuth" name="test_login_wrong_password" time="0.325" /><testcase classname="tests.backend_test.TestAuth" name="test_bad_token_rejected" time="0.098" /><testcase classname="tests.backend_test.TestAuth" name="test_brute_force_lockout" time="0.805" /><testcase classname="tests.backend_test.TestGalleryCRUD" name="test_update_missing_returns_404" time="0.489" /><testcase classname="tests.backend_test.TestGalleryCRUD" name="test_delete_missing_returns_404" time="0.385" /><testcase classname="tests.backend_test.TestPerformanceCRUD" name="test_write_endpoints_require_auth" time="0.248" /><testcase classname="tests.backend_test.TestGalleryCRUD" name="test_validation_error" time="0.424" /><testcase classname="tests.backend_test.TestPublicEndpoints" name="test_root" time="0.098" /><testcase classname="tests.backend_test.TestPublicEndpoints" name="test_gallery_list" time="0.100" /><testcase classname="tests.backend_test.TestPublicEndpoints" name="test_performance_list" time="0.111" /><testcase classname="tests.backend_test.TestSqlPersistence" name="test_sqlite_file_exists_and_has_tables" time="0.003" /><testcase classname="tests.backend_test.TestSqlPersistence" name="test_bcrypt_hash_format" time="0.250" /><testcase classname="tests.backend_test.TestPerformanceCRUD" name="test_full_crud_and_persistence" time="0.651" /><testcase classname="tests.backend_test.TestPerformanceCRUD" name="test_missing_record_404" time="0.426" /><testcase classname="tests.backend_test.TestPerformanceCRUD" name="test_negative_values_rejected" time="0.392" /><testcase classname="tests.backend_test.TestPerformanceCRUD" name="test_seed_records_intact" time="0.102" /></testsuite></testsuites>