<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="1" tests="67" time="17.655" timestamp="2026-06-15T17:06:59.112832+00:00" hostname="agent-env-07c95d3f-5a6a-49ec-9dd7-5643f5c9eede"><testcase classname="tests.test_smoke.TestLogin" name="test_root_responds" time="0.138" /><testcase classname="tests.test_smoke.TestLogin" name="test_admin_can_login" time="0.407" /><testcase classname="tests.test_smoke.TestLogin" name="test_bad_credentials_rejected" time="0.119" /><testcase classname="tests.test_smoke.TestSystemHealth" name="test_health_endpoint" time="0.058" /><testcase classname="tests.test_smoke.TestSystemHealth" name="test_health_blocked_for_anonymous" time="0.124" /><testcase classname="tests.test_smoke.TestErrorTracking" name="test_frontend_can_post_anonymously" time="0.121" /><testcase classname="tests.test_smoke.TestErrorTracking" name="test_admin_can_list_errors" time="0.207" /><testcase classname="tests.test_smoke.TestErrorTracking" name="test_admin_can_get_stats" time="0.056" /><testcase classname="tests.test_smoke.TestPermissions" name="test_anonymous_cannot_list_users" time="0.122" /><testcase classname="tests.test_smoke.TestPermissions" name="test_anonymous_cannot_clear_errors" time="0.098" /><testcase classname="tests.test_smoke.TestInventoryCRUD" name="test_item_appears_in_list" time="0.177" /><testcase classname="tests.test_smoke.TestInventoryCRUD" name="test_item_can_be_updated" time="0.156" /><testcase classname="tests.test_smoke.TestInvoiceFlow" name="test_invoice_created_with_totals" time="0.255" /><testcase classname="tests.test_smoke.TestInvoiceFlow" name="test_invoice_appears_in_listing" time="0.095" /><testcase classname="tests.test_smoke.TestDatabaseConsistency" name="test_companies_list_serializable" time="0.054" /><testcase classname="tests.test_smoke.TestDatabaseConsistency" name="test_items_list_serializable" time="0.056" /><testcase classname="tests.test_smoke.TestDatabaseConsistency" name="test_health_endpoint_serializable" time="0.067" /><testcase classname="tests.test_smoke.TestPdfAndPrint" name="test_items_excel_template_downloads" time="0.072" /><testcase classname="tests.test_smoke.TestPdfAndPrint" name="test_parties_excel_template_downloads" time="0.074" /><testcase classname="tests.test_smoke.TestPdfAndPrint" name="test_label_templates_list" time="0.070" /><testcase classname="tests.test_smoke" name="test_zzz_summary" time="0.058" /><testcase classname="tests.test_auto_product_create.TestAutoProductCreate" name="test_check_duplicate_endpoint_exists" time="0.055" /><testcase classname="tests.test_auto_product_create.TestAutoProductCreate" name="test_check_duplicate_finds_known_item" time="0.121" /><testcase classname="tests.test_auto_product_create.TestAutoProductCreate" name="test_post_items_409_on_duplicate_barcode" time="0.115" /><testcase classname="tests.test_auto_product_create.TestAutoProductCreate" name="test_full_ai_detected_payload_roundtrips" time="0.055" /><testcase classname="tests.test_auto_product_create.TestAutoProductCreate" name="test_unauthenticated_blocked" time="0.135" /><testcase classname="tests.test_unified_sequence.TestUnifiedSequence" name="test_auto_bills_increment_continuously" time="0.349" /><testcase classname="tests.test_unified_sequence.TestUnifiedSequence" name="test_manual_bumps_counter_forward" time="0.361" /><testcase classname="tests.test_unified_sequence.TestUnifiedSequence" name="test_manual_smaller_than_current_rejected_as_duplicate" time="0.365" /><testcase classname="tests.test_unified_sequence.TestUnifiedSequence" name="test_year_change_resets_counter" time="0.680" /><testcase classname="tests.test_unified_sequence.TestMultiUserCounters" name="test_two_users_have_independent_sequences" time="1.133" /><testcase classname="tests.test_unified_sequence.TestMultiUserCounters" name="test_user_manual_bumps_only_own_counter" time="0.963" /><testcase classname="tests.test_v12_2_enhancements.TestItemBatchExpiry" name="test_create_item_with_batch_expiry" time="0.127" /><testcase classname="tests.test_v12_2_enhancements.TestItemBatchExpiry" name="test_create_item_without_batch" time="0.052" /><testcase classname="tests.test_v12_2_enhancements.TestItemAlerts" name="test_alerts_shape" time="0.055" /><testcase classname="tests.test_v12_2_enhancements.TestItemAlerts" name="test_alerts_picks_expired_item" time="0.108" /><testcase classname="tests.test_v12_2_enhancements.TestMarketingAI" name="test_ai_greeting_endpoint" time="1.265" /><testcase classname="tests.test_v12_2_enhancements.TestMarketingAI" name="test_ai_business_tip_endpoint" time="2.956" /><testcase classname="tests.test_v12_2_enhancements.TestAccounting" name="test_profit_loss" time="0.059" /><testcase classname="tests.test_v12_2_enhancements.TestAccounting" name="test_balance_sheet" time="0.058" /><testcase classname="tests.test_v12_2_enhancements.TestAccounting" name="test_trial_balance" time="0.057" /><testcase classname="tests.test_v12_2_enhancements.TestAccounting" name="test_gstr_3b_exists" time="0.058" /><testcase classname="tests.test_v12_2_enhancements.TestAccounting" name="test_gstr_9_exists" time="0.050" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_soft_delete_moves_to_trash" time="0.929" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_trash_list_contains_item" time="0.061" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_active_list_excludes_trash" time="0.058" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_auto_clean_within_retention" time="0.116" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_restore_from_trash" time="0.170" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_permanent_delete_purges" time="0.167" /><testcase classname="tests.test_v12_3_trash_migration.TestBackupTrash" name="test_trash_empty_purges_all" time="1.177" /><testcase classname="tests.test_v12_3_trash_migration.TestMigrationExpenses" name="test_expenses_preview_all_columns_mapped" time="0.062" /><testcase classname="tests.test_v12_3_trash_migration.TestMigrationExpenses" name="test_expenses_preview_dd_mm_yyyy_normalised_on_commit" time="0.173" /><testcase classname="tests.test_v12_3_trash_migration.TestMigrationExpenses" name="test_expenses_commit_inserts_with_metadata" time="0.057" /><testcase classname="tests.test_v12_3_trash_migration.TestMigrationAliases" name="test_parties_tally_ledger_name_alias" time="0.059" /><testcase classname="tests.test_v12_3_trash_migration.TestMigrationAliases" name="test_parties_marg_account_name_alias" time="0.054" /><testcase classname="tests.test_v12_3_trash_migration.TestMigrationAliases" name="test_items_vyapar_marg_aliases" time="0.058" /><testcase classname="tests.test_v12_3_trash_migration.TestTxnPrefixesArchive" name="test_default_excludes_archived" time="0.049" /><testcase classname="tests.test_v12_3_trash_migration.TestTxnPrefixesArchive" name="test_include_archived_returns_all" time="0.107" /><testcase classname="tests.test_invoice_crud_regression" name="test_post_invoice_create_regression" time="0.119" /><testcase classname="tests.test_invoice_crud_regression" name="test_get_invoice_regression" time="0.160" /><testcase classname="tests.test_invoice_crud_regression" name="test_delete_invoice_soft_delete_regression" time="0.165" /><testcase classname="tests.test_invoice_crud_regression" name="test_put_invoice_preserves_type_and_invoice_no_all_types" time="1.220" /><testcase classname="tests.test_invoice_crud_regression" name="test_put_invoice_blocked_when_cancelled" time="0.226"><skipped type="pytest.skip" message="No /cancel endpoint (got 404); cancellation flow not exercised here">/app/backend/tests/test_invoice_crud_regression.py:88: No /cancel endpoint (got 404); cancellation flow not exercised here</skipped></testcase><testcase classname="tests.test_invoice_edit" name="test_put_invoice_updates_notes_and_lines" time="0.185" /><testcase classname="tests.test_invoice_edit" name="test_put_invoice_recalculates_totals" time="0.218" /><testcase classname="tests.test_invoice_edit" name="test_put_invoice_404_for_missing_id" time="0.057" /><testcase classname="tests.test_invoice_edit" name="test_put_invoice_status_recomputed_on_payment" time="0.175" /></testsuite></testsuites>