{
 "source": {
  "repository": "phishdestroy/TgWitness",
  "commit": "29741904d5ef5e16932777b761ca231dce42497a",
  "subject": "Show chat export progress by messages and translate its states (#301)"
 },
 "started_at": "2026-11-14T05:58:33+00:00",
 "finished_at": "2026-11-14T06:11:30+00:00",
 "duration_seconds": 777.4,
 "pytest_exit": 1,
 "environment": {
  "os": "Linux-6.8.0-147-generic-x86_64-with-glibc2.39",
  "python": "3.12.3"
 },
 "totals": {
  "passed": 1880,
  "failed": 111,
  "skipped": 35,
  "tests": 2026,
  "files": 134,
  "unexpected_failures": 107
 },
 "files": [
  {
   "file": "addons/capture/tests/test_beacon.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.123
  },
  {
   "file": "addons/capture/tests/test_gateway.py",
   "passed": 11,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.015
  },
  {
   "file": "addons/capture/tests/test_official.py",
   "passed": 19,
   "failed": 0,
   "skipped": 3,
   "seconds": 1.27
  },
  {
   "file": "addons/capture/tests/test_official_proof.py",
   "passed": 14,
   "failed": 0,
   "skipped": 0,
   "seconds": 4.13
  },
  {
   "file": "addons/capture/tests/test_trusted.py",
   "passed": 42,
   "failed": 0,
   "skipped": 1,
   "seconds": 10.184
  },
  {
   "file": "addons/capture/tests/test_trusted_anchors.py",
   "passed": 4,
   "failed": 1,
   "skipped": 0,
   "seconds": 0.189
  },
  {
   "file": "tools/test_access_label_privacy.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 5.89
  },
  {
   "file": "tools/test_account_attachment_integrity.py",
   "passed": 16,
   "failed": 0,
   "skipped": 0,
   "seconds": 5.228
  },
  {
   "file": "tools/test_action_protocol.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.551
  },
  {
   "file": "tools/test_analyzer_graphs.py",
   "passed": 3,
   "failed": 1,
   "skipped": 0,
   "seconds": 1.174
  },
  {
   "file": "tools/test_analyzer_linking.py",
   "passed": 2,
   "failed": 1,
   "skipped": 0,
   "seconds": 1.868
  },
  {
   "file": "tools/test_anchor_backoff.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.812
  },
  {
   "file": "tools/test_anchor_temp_files.py",
   "passed": 1,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.952
  },
  {
   "file": "tools/test_api_authorization_matrix.py",
   "passed": 2,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.026
  },
  {
   "file": "tools/test_api_refactor.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 4.455
  },
  {
   "file": "tools/test_archive_token_comparison.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.14
  },
  {
   "file": "tools/test_archive_views.py",
   "passed": 12,
   "failed": 0,
   "skipped": 0,
   "seconds": 6.77
  },
  {
   "file": "tools/test_assurance_boundaries.py",
   "passed": 37,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.864
  },
  {
   "file": "tools/test_assurance_chain.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.851
  },
  {
   "file": "tools/test_assurance_ladder.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.464
  },
  {
   "file": "tools/test_audit_logic_repairs.py",
   "passed": 13,
   "failed": 0,
   "skipped": 0,
   "seconds": 15.4
  },
  {
   "file": "tools/test_audit_platform_fixes.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.292
  },
  {
   "file": "tools/test_auto_delete_classification.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.0
  },
  {
   "file": "tools/test_capture_liveness.py",
   "passed": 7,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.105
  },
  {
   "file": "tools/test_capture_open.py",
   "passed": 2,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.067
  },
  {
   "file": "tools/test_case_package.py",
   "passed": 2,
   "failed": 2,
   "skipped": 0,
   "seconds": 1.031
  },
  {
   "file": "tools/test_channel_graph.py",
   "passed": 13,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.01
  },
  {
   "file": "tools/test_chat_comparison.py",
   "passed": 24,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.204
  },
  {
   "file": "tools/test_chat_export_integrity.py",
   "passed": 15,
   "failed": 1,
   "skipped": 0,
   "seconds": 4.426
  },
  {
   "file": "tools/test_chat_state.py",
   "passed": 13,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.927
  },
  {
   "file": "tools/test_chat_timeline.py",
   "passed": 6,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.634
  },
  {
   "file": "tools/test_checkpoint_drand_route.py",
   "passed": 2,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.488
  },
  {
   "file": "tools/test_cli.py",
   "passed": 10,
   "failed": 1,
   "skipped": 0,
   "seconds": 6.879
  },
  {
   "file": "tools/test_client_checks.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.625
  },
  {
   "file": "tools/test_client_initialization.py",
   "passed": 7,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.287
  },
  {
   "file": "tools/test_client_timezone.py",
   "passed": 15,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.006
  },
  {
   "file": "tools/test_client_transport.py",
   "passed": 2,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.002
  },
  {
   "file": "tools/test_cloud_refactor.py",
   "passed": 7,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.017
  },
  {
   "file": "tools/test_conversation.py",
   "passed": 29,
   "failed": 0,
   "skipped": 0,
   "seconds": 4.353
  },
  {
   "file": "tools/test_court.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.001
  },
  {
   "file": "tools/test_crypto_ids.py",
   "passed": 11,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.017
  },
  {
   "file": "tools/test_deletion_evidence_reports.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.097
  },
  {
   "file": "tools/test_deletion_semantics.py",
   "passed": 0,
   "failed": 8,
   "skipped": 0,
   "seconds": 2.477
  },
  {
   "file": "tools/test_device_attribution.py",
   "passed": 27,
   "failed": 1,
   "skipped": 0,
   "seconds": 2.327
  },
  {
   "file": "tools/test_difference_gaps.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.005
  },
  {
   "file": "tools/test_disclosure_markers.py",
   "passed": 7,
   "failed": 0,
   "skipped": 0,
   "seconds": 5.358
  },
  {
   "file": "tools/test_distributed_export.py",
   "passed": 48,
   "failed": 0,
   "skipped": 0,
   "seconds": 44.275
  },
  {
   "file": "tools/test_distributed_pages.py",
   "passed": 27,
   "failed": 0,
   "skipped": 0,
   "seconds": 20.883
  },
  {
   "file": "tools/test_distributed_takeout.py",
   "passed": 13,
   "failed": 0,
   "skipped": 0,
   "seconds": 7.916
  },
  {
   "file": "tools/test_documentation.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.853
  },
  {
   "file": "tools/test_documentation_scope.py",
   "passed": 10,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.062
  },
  {
   "file": "tools/test_download_ticket_quotas.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.005
  },
  {
   "file": "tools/test_dstack_archive_limits.py",
   "passed": 10,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.037
  },
  {
   "file": "tools/test_ephemeral_media.py",
   "passed": 77,
   "failed": 0,
   "skipped": 0,
   "seconds": 7.175
  },
  {
   "file": "tools/test_evidence_checks.py",
   "passed": 6,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.999
  },
  {
   "file": "tools/test_export_archive_name.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.632
  },
  {
   "file": "tools/test_export_budget.py",
   "passed": 11,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.346
  },
  {
   "file": "tools/test_export_plan.py",
   "passed": 12,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.789
  },
  {
   "file": "tools/test_exported_authorization.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.28
  },
  {
   "file": "tools/test_extensions.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.75
  },
  {
   "file": "tools/test_file_hash_export.py",
   "passed": 23,
   "failed": 0,
   "skipped": 0,
   "seconds": 9.427
  },
  {
   "file": "tools/test_fulltext.py",
   "passed": 25,
   "failed": 0,
   "skipped": 0,
   "seconds": 15.24
  },
  {
   "file": "tools/test_gap_analysis.py",
   "passed": 14,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.16
  },
  {
   "file": "tools/test_history_backfill.py",
   "passed": 29,
   "failed": 0,
   "skipped": 0,
   "seconds": 21.994
  },
  {
   "file": "tools/test_independent_report_pdf.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 8.192
  },
  {
   "file": "tools/test_indicator_limits.py",
   "passed": 2,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.02
  },
  {
   "file": "tools/test_insights.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.261
  },
  {
   "file": "tools/test_installer_checks/InstallerChecksTests.py",
   "passed": 10,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.033
  },
  {
   "file": "tools/test_journal_write_failures.py",
   "passed": 6,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.747
  },
  {
   "file": "tools/test_jurisdiction_guidance.py",
   "passed": 66,
   "failed": 1,
   "skipped": 0,
   "seconds": 13.045
  },
  {
   "file": "tools/test_lookup_backoff.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.51
  },
  {
   "file": "tools/test_media_job_states.py",
   "passed": 22,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.157
  },
  {
   "file": "tools/test_messages_first_live_media.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.661
  },
  {
   "file": "tools/test_metrics.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.9
  },
  {
   "file": "tools/test_mtproto_forensics.py",
   "passed": 100,
   "failed": 1,
   "skipped": 0,
   "seconds": 0.272
  },
  {
   "file": "tools/test_narrative.py",
   "passed": 20,
   "failed": 42,
   "skipped": 0,
   "seconds": 107.75
  },
  {
   "file": "tools/test_narrative_config.py",
   "passed": 33,
   "failed": 3,
   "skipped": 0,
   "seconds": 27.598
  },
  {
   "file": "tools/test_opsec.py",
   "passed": 14,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.048
  },
  {
   "file": "tools/test_parallel_exports.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 41.64
  },
  {
   "file": "tools/test_password_export.py",
   "passed": 34,
   "failed": 0,
   "skipped": 0,
   "seconds": 31.914
  },
  {
   "file": "tools/test_paused_updates.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.001
  },
  {
   "file": "tools/test_pending_login_revocation.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 27.353
  },
  {
   "file": "tools/test_persona.py",
   "passed": 31,
   "failed": 0,
   "skipped": 0,
   "seconds": 6.882
  },
  {
   "file": "tools/test_presence_watch.py",
   "passed": 14,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.834
  },
  {
   "file": "tools/test_provider_metadata_umask.py",
   "passed": 2,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.004
  },
  {
   "file": "tools/test_publication_guard.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.423
  },
  {
   "file": "tools/test_qr_codes.py",
   "passed": 2,
   "failed": 0,
   "skipped": 4,
   "seconds": 0.612
  },
  {
   "file": "tools/test_release_branch_fixes.py",
   "passed": 22,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.087
  },
  {
   "file": "tools/test_release_data_fixes.py",
   "passed": 35,
   "failed": 0,
   "skipped": 0,
   "seconds": 51.083
  },
  {
   "file": "tools/test_removal_notice_order.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.002
  },
  {
   "file": "tools/test_render_boundary.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.101
  },
  {
   "file": "tools/test_replica_derivation.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.221
  },
  {
   "file": "tools/test_replica_recipient.py",
   "passed": 15,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.925
  },
  {
   "file": "tools/test_report_brief_timestamps.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.028
  },
  {
   "file": "tools/test_report_repeats.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.139
  },
  {
   "file": "tools/test_report_settings.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.227
  },
  {
   "file": "tools/test_request_limit_slowloris.py",
   "passed": 20,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.837
  },
  {
   "file": "tools/test_request_security.py",
   "passed": 42,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.236
  },
  {
   "file": "tools/test_resolve_target.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.0
  },
  {
   "file": "tools/test_rpc_diagnostics.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.894
  },
  {
   "file": "tools/test_scale_demo.py",
   "passed": 0,
   "failed": 32,
   "skipped": 0,
   "seconds": 0.226
  },
  {
   "file": "tools/test_sealed_account.py",
   "passed": 26,
   "failed": 0,
   "skipped": 0,
   "seconds": 30.07
  },
  {
   "file": "tools/test_secret_chat_custody.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.235
  },
  {
   "file": "tools/test_secret_chat_safety.py",
   "passed": 9,
   "failed": 1,
   "skipped": 0,
   "seconds": 2.746
  },
  {
   "file": "tools/test_selected_export.py",
   "passed": 12,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.97
  },
  {
   "file": "tools/test_session_import.py",
   "passed": 21,
   "failed": 2,
   "skipped": 0,
   "seconds": 23.233
  },
  {
   "file": "tools/test_site_context.py",
   "passed": 3,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.093
  },
  {
   "file": "tools/test_site_metadata.py",
   "passed": 11,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.422
  },
  {
   "file": "tools/test_site_seo/PageSearchMetadata.py",
   "passed": 6,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.023
  },
  {
   "file": "tools/test_site_validation.py",
   "passed": 15,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.161
  },
  {
   "file": "tools/test_store_transactions.py",
   "passed": 10,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.583
  },
  {
   "file": "tools/test_subject.py",
   "passed": 7,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.703
  },
  {
   "file": "tools/test_system_map_pool.py",
   "passed": 6,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.007
  },
  {
   "file": "tools/test_telegram_view_review.py",
   "passed": 20,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.203
  },
  {
   "file": "tools/test_translation.py",
   "passed": 15,
   "failed": 0,
   "skipped": 0,
   "seconds": 6.175
  },
  {
   "file": "tools/test_tsa_cert_reference.py",
   "passed": 19,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.138
  },
  {
   "file": "tools/test_undercover.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.191
  },
  {
   "file": "tools/test_verification_launcher.py",
   "passed": 16,
   "failed": 0,
   "skipped": 2,
   "seconds": 9.31
  },
  {
   "file": "tools/test_verifier_account_compatibility.py",
   "passed": 35,
   "failed": 0,
   "skipped": 0,
   "seconds": 4.435
  },
  {
   "file": "tools/test_verifier_comparison.py",
   "passed": 22,
   "failed": 1,
   "skipped": 0,
   "seconds": 34.073
  },
  {
   "file": "tools/test_verifier_dispatch.py",
   "passed": 20,
   "failed": 2,
   "skipped": 0,
   "seconds": 0.043
  },
  {
   "file": "tools/test_verifier_languages.py",
   "passed": 115,
   "failed": 0,
   "skipped": 25,
   "seconds": 11.226
  },
  {
   "file": "tools/test_verifier_output_safety.py",
   "passed": 8,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.058
  },
  {
   "file": "tools/test_verifier_sources.py",
   "passed": 15,
   "failed": 9,
   "skipped": 0,
   "seconds": 4.37
  },
  {
   "file": "tools/test_video_documentation.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 1.077
  },
  {
   "file": "tools/test_watchlists.py",
   "passed": 16,
   "failed": 1,
   "skipped": 0,
   "seconds": 2.48
  },
  {
   "file": "tools/test_webapp.py",
   "passed": 14,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.036
  },
  {
   "file": "tools/test_witness_continuity.py",
   "passed": 1,
   "failed": 0,
   "skipped": 0,
   "seconds": 6.658
  },
  {
   "file": "tools/test_witness_daily.py",
   "passed": 11,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.638
  },
  {
   "file": "tools/test_witness_export_window.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 0.0
  },
  {
   "file": "tools/test_witness_freshness.py",
   "passed": 9,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.477
  },
  {
   "file": "tools/test_witness_keys.py",
   "passed": 4,
   "failed": 0,
   "skipped": 0,
   "seconds": 2.178
  },
  {
   "file": "tools/test_witness_relogin.py",
   "passed": 5,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.376
  },
  {
   "file": "tools/test_witness_resilience.py",
   "passed": 16,
   "failed": 0,
   "skipped": 0,
   "seconds": 3.302
  }
 ],
 "failures": [
  {
   "id": "tools/test_analyzer_graphs.py::test_edges_cite_journal_records_across_chosen_chats",
   "file": "tools/test_analyzer_graphs.py",
   "status": "failed",
   "seconds": 0.277,
   "message": "assert False\n +  where False = any(<generator object test_edges_cite_journal_records_across_chosen_chats.<locals>.<genexpr> at 0x7efd1efa9970>)",
   "expected": null
  },
  {
   "id": "tools/test_analyzer_linking.py::test_rotated_account_ranks_first_with_explanation_and_citations",
   "file": "tools/test_analyzer_linking.py",
   "status": "failed",
   "seconds": 0.755,
   "message": "assert False\n +  where False = any(<generator object test_rotated_account_ranks_first_with_explanation_and_citations.<locals>.<genexpr> at 0x7efd1dadb850>)",
   "expected": null
  },
  {
   "id": "tools/test_case_package.py::test_package_contains_readable_report_files_and_explanations[tsr]",
   "file": "tools/test_case_package.py",
   "status": "failed",
   "seconds": 0.712,
   "message": "assert ('Timestamp receipts (not verified)' in '<!doctype html><html lang=\"en\"><meta charset=\"utf-8\"><meta http-equiv=\"Content-Security-Policy\" content=\"default-src ...lank\"></span></p><p>Date: <span class=\"blank\"></span></p><p>Place: <span class=\"blank\"></span></p></div></body></html>')",
   "expected": null
  },
  {
   "id": "tools/test_case_package.py::test_package_contains_readable_report_files_and_explanations[ots]",
   "file": "tools/test_case_package.py",
   "status": "failed",
   "seconds": 0.316,
   "message": "assert ('Timestamp receipts (not verified)' in '<!doctype html><html lang=\"en\"><meta charset=\"utf-8\"><meta http-equiv=\"Content-Security-Policy\" content=\"default-src ...lank\"></span></p><p>Date: <span class=\"blank\"></span></p><p>Place: <span class=\"blank\"></span></p></div></body></html>')",
   "expected": null
  },
  {
   "id": "tools/test_chat_export_integrity.py::test_sparse_message_numbers_are_counted_without_expansion",
   "file": "tools/test_chat_export_integrity.py",
   "status": "failed",
   "seconds": 0.001,
   "message": "assert 2 == 1999999998\n +  where 2 = len((<tgwitness.message_numbers.MissingNumbers object at 0x7efd102a42c0>, 1))",
   "expected": "Missing-number counting now returns (numbers, count) instead of a sized collection; test not yet updated to the new API."
  },
  {
   "id": "tools/test_cli.py::test_local_commands",
   "file": "tools/test_cli.py",
   "status": "failed",
   "seconds": 0.653,
   "message": "AssertionError: assert [{'workspace'...n workspace'}] == [{'workspace'...ain account'}]\n  \n  At index 0 diff: {'workspace': 'default', 'name': 'Main workspace'} != {'workspace': 'default', 'name': 'Main account'}\n  Use -v to get more diff",
   "expected": "Expects the default workspace name \"Main account\"; it is now \"Main workspace\"."
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[2-55123]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.235,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[2--1000000000555]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.225,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[9-55123]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.291,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[9--1000000000555]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.337,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[10-55123]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.319,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[10--1000000000555]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.312,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[15-55123]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.433,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_deletion_semantics.py::test_deletion_of_subset_keeps_actor_and_whole_history_unknown[15--1000000000555]",
   "file": "tools/test_deletion_semantics.py",
   "status": "failed",
   "seconds": 0.325,
   "message": "AssertionError: assert 'does not identify who deleted them' in 'Telegram reported several message IDs as deleted in one update.'",
   "expected": null
  },
  {
   "id": "tools/test_device_attribution.py::test_the_dossier_counts_clients_sticker_sets_and_prepared_media",
   "file": "tools/test_device_attribution.py",
   "status": "failed",
   "seconds": 0.213,
   "message": "assert 'Metadata hypothesis about the client that encoded the file' in \"Client that encoded the file, read from the file's own metadata. A forwarded or re-uploaded file carries the encoder of whoever made it first.\"",
   "expected": null
  },
  {
   "id": "tools/test_jurisdiction_guidance.py::test_choices_do_not_upgrade_facts_or_claim_safeguards_were_used",
   "file": "tools/test_jurisdiction_guidance.py",
   "status": "failed",
   "seconds": 0.001,
   "message": "assert 'does not mean a measure was used or verified' in '<section class=\"card panel case-assessment\" id=\"jurisdiction-guidance\" lang=\"en\" dir=\"ltr\"><h2>Jurisdiction guidance<...ed by a separate party takes the host and hypervisor out of the operator&#x27;s control.</p></article></div></section>'\n[+2 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_mtproto_forensics.py::test_outbox_read_watermark_does_not_identify_a_person",
   "file": "tools/test_mtproto_forensics.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "AssertionError: assert 'does not identify' in 'Observed outgoing read watermark.'",
   "expected": "Expects the caveat that a read watermark does not identify a person, shortened in 3f5f0fbcb."
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[en]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.627,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[de]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.328,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[fr]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.495,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[es]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.407,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[it]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.571,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[pt]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.357,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[nl]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.381,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[pl]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 0.883,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[cs]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 0.862,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[sk]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 0.988,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[uk]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.08,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ro]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.671,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[bg]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.994,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[hu]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.486,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[el]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.69,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[sv]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.175,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[da]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 0.998,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[fi]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.777,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[no]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.174,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[lt]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.248,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[lv]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.875,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[et]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.394,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[tr]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.362,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ja]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.896,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[zh]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.832,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[zh-Hant]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.375,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ko]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 1.981,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ar]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.745,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[he]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.147,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[fa]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 4.002,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[hi]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.415,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ur]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.14,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[bn]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.632,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[id]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.463,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ms]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 4.132,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[vi]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.893,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[th]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.362,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[uz]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.608,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_pdf_html_and_svg_outputs[ru]",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 3.233,
   "message": "KeyError: 'translation_review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_jurisdictions_change_only_the_terms_section",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 2.801,
   "message": "assert 3 == 1\n +  where 3 = len({'<!doctype html><html lang=\"de\" dir=\"ltr\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-wid...c8f7a0d69ff5a7e83a7095b9b2112ec</code></td></tr></table></section><footer>Beweisbericht</footer></main></body></html>'})\n[+1 more line; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_catalog_policy_and_plural_edge_cases",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 0.002,
   "message": "FileNotFoundError: [Errno 2] No such file or directory: '/workspace/qa/src/29741904d5ef5e16932777b761ca231dce42497a/tgwitness/narrative/review-policy.json'",
   "expected": null
  },
  {
   "id": "tools/test_narrative.py::test_golden_model_is_language_independent",
   "file": "tools/test_narrative.py",
   "status": "failed",
   "seconds": 0.001,
   "message": "AssertionError: assert {'format': 't...e': None, ...} == {'format': 't...e': None, ...}\n  \n  Omitting 6 identical items, use -vv to show\n  Differing items:\n  {'limits': [{'template_key': 'limit.truth', 'params': {}}]} != {'limits': [{'template_key': 'limit.truth', 'params': {}}, {'template_key': 'limit.review', 'params': {}}]}\n  Right contains 1 more item:\n  {'translation_review': 'machine-assisted, not reviewed'}\n  Use -v to get more diff",
   "expected": null
  },
  {
   "id": "tools/test_narrative_config.py::test_optional_diagrams_cannot_hide_assurance_limits_or_references[selected0]",
   "file": "tools/test_narrative_config.py",
   "status": "failed",
   "seconds": 1.641,
   "message": "KeyError: 'limit.review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative_config.py::test_optional_diagrams_cannot_hide_assurance_limits_or_references[selected1]",
   "file": "tools/test_narrative_config.py",
   "status": "failed",
   "seconds": 0.913,
   "message": "KeyError: 'limit.review'",
   "expected": null
  },
  {
   "id": "tools/test_narrative_config.py::test_optional_diagrams_cannot_hide_assurance_limits_or_references[selected2]",
   "file": "tools/test_narrative_config.py",
   "status": "failed",
   "seconds": 1.034,
   "message": "assert 1 == 2\n +  where 1 = <built-in method count of str object at 0x365c0ae0>('<svg ')\n +    where <built-in method count of str object at 0x365c0ae0> = '<!doctype html><html lang=\"en\" dir=\"ltr\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-widt...a0d69ff5a7e83a7095b9b2112ec</code></td></tr></table></section><footer>Evidence narrative</footer></main></body></html>'.count\n +  and   2 = len(['ladder', 'files'])",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_changed_display_loses_verified_state[counter]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.226,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_changed_display_loses_verified_state[excerpt]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_valid_outer_signature_does_not_hide_bad_checkpoint",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_keeps_run_metrics_and_invalidates_changed_total",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[duplicate_run]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[wrong_sum]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[inner_signature]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[worker_sum]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[wrong_head]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[overlap]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_campaign_rejects_inconsistent_signed_summary[false_completion]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_seek_uses_signed_sample_and_preserves_chain_verification",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_replay_uses_recorded_time_without_interpolating_counts",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_graph_uses_elapsed_time_and_keyboard_seeks_samples",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_reduced_motion_keeps_manual_inspection_and_full_hashes",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_copy_uses_selected_receipt_and_original_event_hash",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_tampered_historical_receipt_invalidates_verified_replay",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_verified_partial_archive_has_distinct_status",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_interval_rate_and_event_delta_stay_distinct_from_run_average",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_full_selected_signature_and_key_can_be_inspected_and_copied",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_verification_pack_requires_checked_metadata_and_invalidates_changes",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_signed_verification_pack_cannot_change_scope_or_escape_directory[wrong_key]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_signed_verification_pack_cannot_change_scope_or_escape_directory[wrong_head]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_signed_verification_pack_cannot_change_scope_or_escape_directory[wrong_campaign]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_signed_verification_pack_cannot_change_scope_or_escape_directory[path]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_signed_verification_pack_cannot_change_scope_or_escape_directory[bad_signature]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_signed_verification_pack_cannot_change_scope_or_escape_directory[empty_size]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_aggregate_preview_does_not_invent_deletions_or_show_excerpts",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_receipt_check_does_not_claim_absent_journal_checkpoints",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_recorded_dataset_stops_polling_and_preserves_live_default[True]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_recorded_dataset_stops_polling_and_preserves_live_default[None]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_scale_demo.py::test_recorded_dataset_stops_polling_and_preserves_live_default[true]",
   "file": "tools/test_scale_demo.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "failed on setup with \"playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n[+4 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_secret_chat_safety.py::test_allowed_close_is_sent_and_journaled",
   "file": "tools/test_secret_chat_safety.py",
   "status": "failed",
   "seconds": 0.206,
   "message": "ValueError: Connect this account to Telegram first.",
   "expected": "Closing a secret chat now requires a connected account; the test's fake client is not marked connected."
  },
  {
   "id": "tools/test_session_import.py::test_independent_login_browser[False]",
   "file": "tools/test_session_import.py",
   "status": "failed",
   "seconds": 1.29,
   "message": "playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n║     playwright install                                     ║\n[+3 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_session_import.py::test_independent_login_browser[True]",
   "file": "tools/test_session_import.py",
   "status": "failed",
   "seconds": 1.355,
   "message": "playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at /workspace/qa/browsers/chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated.       ║\n║ Please run the following command to download new browsers: ║\n║                                                            ║\n║     playwright install                                     ║\n[+3 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_comparison.py::test_ots_structure_only_does_not_get_a_positive_indicator[unknown]",
   "file": "tools/test_verifier_comparison.py",
   "status": "failed",
   "seconds": 0.0,
   "message": "AssertionError: assert 'unknown' in 'synthetic'",
   "expected": null
  },
  {
   "id": "tools/test_verifier_dispatch.py::test_direct_check_preserves_policy_and_archive_without_printing[tgwitness.verify]",
   "file": "tools/test_verifier_dispatch.py",
   "status": "failed",
   "seconds": 0.005,
   "message": "AssertionError: assert False\n[+2 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_dispatch.py::test_direct_check_preserves_policy_and_archive_without_printing[tgwitness.verifier.cli]",
   "file": "tools/test_verifier_dispatch.py",
   "status": "failed",
   "seconds": 0.018,
   "message": "AssertionError: assert False\n[+2 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_review_modules_import_without_application_state",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.004,
   "message": "AssertionError: assert False\n[+2 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_frozen_verification_decisions_are_unchanged",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.132,
   "message": "assert False\n[+2 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_and_new_decisions_and_statuses_match[pinned---json]",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.243,
   "message": "assert False\n[+3 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_and_new_decisions_and_statuses_match[pinned---plain]",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.243,
   "message": "assert False\n[+5 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_and_new_decisions_and_statuses_match[unpinned---json]",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.239,
   "message": "assert False\n[+3 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_and_new_decisions_and_statuses_match[unpinned---plain]",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.243,
   "message": "assert False\n[+5 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_and_new_decisions_and_statuses_match[unmet_tier---json]",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.242,
   "message": "assert False\n[+3 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_and_new_decisions_and_statuses_match[unmet_tier---plain]",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.24,
   "message": "assert False\n[+5 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_verifier_sources.py::test_old_verifier_accepts_new_archive_with_identical_signed_events",
   "file": "tools/test_verifier_sources.py",
   "status": "failed",
   "seconds": 0.511,
   "message": "assert False\n[+3 more lines; full report in element text]",
   "expected": null
  },
  {
   "id": "tools/test_watchlists.py::test_terms_patterns_wallets_usernames_and_domains_are_matched",
   "file": "tools/test_watchlists.py",
   "status": "failed",
   "seconds": 0.323,
   "message": "assert False\n +  where False = all(<generator object test_terms_patterns_wallets_usernames_and_domains_are_matched.<locals>.<genexpr> at 0x7efd1e45cac0>)",
   "expected": null
  },
  {
   "id": "addons/capture/tests/test_trusted_anchors.py::test_cloudflare_queries_are_read_only_scoped_and_token_is_not_exported",
   "file": "addons/capture/tests/test_trusted_anchors.py",
   "status": "failed",
   "seconds": 0.117,
   "message": "AssertionError: assert 'no proof of continuous presence' in 'provider state sampled at the polled time'",
   "expected": null
  }
 ]
}
