df-test-framework 4.4.4__tar.gz → 4.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (890) hide show
  1. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/CHANGELOG.md +17 -0
  2. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/PKG-INFO +1 -1
  3. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/testing.md +3 -0
  4. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/decorators_guide.md +30 -5
  5. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/service_client_guide.md +51 -14
  6. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/web-ui-testing.md +67 -7
  7. df_test_framework-4.5.0/docs/releases/v4.5.0.md +235 -0
  8. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/pyproject.toml +1 -1
  9. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/__init__.py +20 -2
  10. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +56 -21
  11. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/commands/init_cmd.py +7 -0
  12. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/__init__.py +4 -0
  13. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/__init__.py +4 -0
  14. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/conftest.py +4 -1
  15. df_test_framework-4.5.0/src/df_test_framework/cli/templates/project/default_http_client.py +26 -0
  16. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/full_conftest.py +11 -2
  17. df_test_framework-4.5.0/src/df_test_framework/cli/templates/project/ui_clients.py +16 -0
  18. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/ui_conftest.py +4 -1
  19. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/decorators/__init__.py +13 -0
  20. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/decorators/actions_class.py +51 -44
  21. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/decorators/api_class.py +7 -1
  22. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/decorators/service_client.py +37 -8
  23. df_test_framework-4.5.0/src/df_test_framework/testing/decorators/ui_client.py +455 -0
  24. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/auth.py +9 -3
  25. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/ui.py +3 -5
  26. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/decorators/test_actions_class.py +52 -0
  27. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/decorators/test_api_class.py +10 -0
  28. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/decorators/test_service_client.py +33 -4
  29. df_test_framework-4.5.0/tests/testing/decorators/test_ui_client.py +83 -0
  30. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_ui_fixtures.py +92 -0
  31. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/uv.lock +1 -1
  32. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.editorconfig +0 -0
  33. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.env.example +0 -0
  34. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.gitattributes +0 -0
  35. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.github/workflows/README.md +0 -0
  36. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.github/workflows/lint.yml +0 -0
  37. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.github/workflows/release.yml +0 -0
  38. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.github/workflows/scheduled.yml +0 -0
  39. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.github/workflows/security.yml +0 -0
  40. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.github/workflows/test.yml +0 -0
  41. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.gitignore +0 -0
  42. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.gitleaks.toml +0 -0
  43. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.gitleaksignore +0 -0
  44. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.pre-commit-config.yaml +0 -0
  45. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/.python-version +0 -0
  46. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/AGENTS.md +0 -0
  47. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/CLAUDE.md +0 -0
  48. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/CONTRIBUTING.md +0 -0
  49. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/README.md +0 -0
  50. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/README_PYPI.md +0 -0
  51. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/CONTRIBUTOR_GUIDE.md +0 -0
  52. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
  53. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/ESSENTIAL_DOCS.md +0 -0
  54. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/FAQ.md +0 -0
  55. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/LEARNING_PATH.md +0 -0
  56. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/README.md +0 -0
  57. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/README.md +0 -0
  58. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/clients.md +0 -0
  59. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/README.md +0 -0
  60. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/context.md +0 -0
  61. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/events.md +0 -0
  62. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/exceptions.md +0 -0
  63. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/middleware.md +0 -0
  64. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/protocols.md +0 -0
  65. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core/types.md +0 -0
  66. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/core.md +0 -0
  67. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/databases.md +0 -0
  68. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/drivers.md +0 -0
  69. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/extensions.md +0 -0
  70. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/infrastructure.md +0 -0
  71. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/api-reference/patterns.md +0 -0
  72. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/ARCHITECTURE_V4.0.md +0 -0
  73. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/CODE_STRUCTURE.md +0 -0
  74. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/PLUGIN_SYSTEM_V3.37.md +0 -0
  75. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/README.md +0 -0
  76. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +0 -0
  77. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/README.md +0 -0
  78. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
  79. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
  80. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
  81. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
  82. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
  83. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
  84. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
  85. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
  86. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
  87. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/config-driven-design.md +0 -0
  88. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/config-management-analysis.md +0 -0
  89. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
  90. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
  91. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
  92. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
  93. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
  94. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
  95. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
  96. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
  97. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/design/ui-observability-design.md +0 -0
  98. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
  99. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/v3_complete_draft.md +0 -0
  100. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/v3_final_draft.md +0 -0
  101. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
  102. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
  103. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
  104. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
  105. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
  106. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
  107. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
  108. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/overview.md +0 -0
  109. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/archive/versions/v2-architecture.md +0 -0
  110. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/extension-points.md +0 -0
  111. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
  112. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/multi-project-reuse.md +0 -0
  113. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/observability-architecture.md +0 -0
  114. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture/test-type-support.md +0 -0
  115. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/architecture//344/272/224/345/261/202/346/236/266/346/236/204/350/257/246/350/247/243.md" +0 -0
  116. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/README.md +0 -0
  117. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
  118. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
  119. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
  120. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
  121. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
  122. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
  123. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
  124. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
  125. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
  126. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/README.md +0 -0
  127. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
  128. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
  129. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
  130. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
  131. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
  132. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
  133. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
  134. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
  135. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
  136. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
  137. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
  138. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
  139. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
  140. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
  141. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
  142. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
  143. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/observability-config-design.md +0 -0
  144. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/ui-best-practices-2026.md +0 -0
  145. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/web-architecture-consistency-design.md +0 -0
  146. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/design/web-event-driven-comparison.md +0 -0
  147. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
  148. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
  149. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
  150. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
  151. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
  152. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/async_database_guide.md +0 -0
  153. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/async_http_client.md +0 -0
  154. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/httpx_advanced_usage.md +0 -0
  155. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/logging_configuration.md +0 -0
  156. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/logging_pytest_integration.md +0 -0
  157. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/modern_logging_best_practices.md +0 -0
  158. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/guides/repository_uow_guide.md +0 -0
  159. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/111.md +0 -0
  160. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
  161. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
  162. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
  163. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
  164. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
  165. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
  166. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
  167. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
  168. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
  169. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
  170. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/README.md +0 -0
  171. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
  172. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
  173. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/issues/README.md +0 -0
  174. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/issues/summary.md +0 -0
  175. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/issues/v1.md +0 -0
  176. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/migration/README.md +0 -0
  177. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
  178. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
  179. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
  180. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
  181. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
  182. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
  183. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
  184. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
  185. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
  186. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
  187. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
  188. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
  189. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
  190. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
  191. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
  192. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
  193. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
  194. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
  195. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
  196. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
  197. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
  198. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
  199. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
  200. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
  201. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
  202. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
  203. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
  204. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
  205. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
  206. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
  207. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
  208. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
  209. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/reports_2025/async_http_client_design.md +0 -0
  210. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
  211. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/user-guide/extensions.md +0 -0
  212. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/user-guide/ui-testing.md +0 -0
  213. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/BaseAPI/346/234/200/344/275/263/345/256/236/350/267/265/346/214/207/345/215/227.md" +0 -0
  214. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
  215. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/README.md +0 -0
  216. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
  217. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/architecture.md +0 -0
  218. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/best-practices.md +0 -0
  219. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/config-integration-guide.md +0 -0
  220. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/optimization-report.md +0 -0
  221. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1/publishing.md +0 -0
  222. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/v1//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251/346/265/213/350/257/225/346/241/206/346/236/266.md" +0 -0
  223. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
  224. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
  225. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/ci-templates/README.md +0 -0
  226. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/ci-templates/github-actions.yml +0 -0
  227. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/ci-templates/gitlab-ci.yml +0 -0
  228. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
  229. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
  230. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/development/RELEASE.md +0 -0
  231. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/development/VERSION_CONTROL_RULES.md +0 -0
  232. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/development/local-development.md +0 -0
  233. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/DECIMAL_GUIDE.md +0 -0
  234. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/allure_plugin.md +0 -0
  235. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/assertions_guide.md +0 -0
  236. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/async_api_guide.md +0 -0
  237. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/auth_session_guide.md +0 -0
  238. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/bootstrap_guide.md +0 -0
  239. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/config_guide.md +0 -0
  240. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/database_guide.md +0 -0
  241. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/distributed_tracing.md +0 -0
  242. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/event_bus_guide.md +0 -0
  243. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/extensions.md +0 -0
  244. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/factory_guide.md +0 -0
  245. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/fixture_chain_pattern.md +0 -0
  246. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/fixtures_guide.md +0 -0
  247. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/graphql_client.md +0 -0
  248. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/grpc_client.md +0 -0
  249. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/helpers_guide.md +0 -0
  250. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/http_client_guide.md +0 -0
  251. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/integration-guide.md +0 -0
  252. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/local_debug_quickstart.md +0 -0
  253. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/logging_guide.md +0 -0
  254. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/message_queue.md +0 -0
  255. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/middleware_guide.md +0 -0
  256. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/mocking.md +0 -0
  257. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/monitoring_plugin.md +0 -0
  258. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/openapi_guide.md +0 -0
  259. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/plugins_guide.md +0 -0
  260. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/prometheus_metrics.md +0 -0
  261. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/redis_guide.md +0 -0
  262. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/resilience_guide.md +0 -0
  263. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/sanitize_guide.md +0 -0
  264. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/scaffold_cli_guide.md +0 -0
  265. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/storage.md +0 -0
  266. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/telemetry_guide.md +0 -0
  267. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/test_data.md +0 -0
  268. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/test_data_cleanup.md +0 -0
  269. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/guides/testing-development.md +0 -0
  270. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/migration/README.md +0 -0
  271. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/migration/v3-to-v4.md +0 -0
  272. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/README.md +0 -0
  273. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.0.0-alpha.md +0 -0
  274. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.1.0.md +0 -0
  275. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.10.0.md +0 -0
  276. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.11.0.md +0 -0
  277. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.11.1.md +0 -0
  278. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.12.0.md +0 -0
  279. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.12.1.md +0 -0
  280. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.13.0.md +0 -0
  281. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.14.0.md +0 -0
  282. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.14.0_completion_report.md +0 -0
  283. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.14.0_implementation_complete.md +0 -0
  284. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.16.0.md +0 -0
  285. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.17.0.md +0 -0
  286. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.17.1.md +0 -0
  287. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.17.2.md +0 -0
  288. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.18.0.md +0 -0
  289. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.18.1-bugfix.md +0 -0
  290. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.18.1.md +0 -0
  291. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.19.0.md +0 -0
  292. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.2.0.md +0 -0
  293. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.20.0.md +0 -0
  294. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.21.0.md +0 -0
  295. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.22.0.md +0 -0
  296. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.22.1.md +0 -0
  297. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.23.0.md +0 -0
  298. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.24.0.md +0 -0
  299. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.25.0.md +0 -0
  300. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.26.0.md +0 -0
  301. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.27.0.md +0 -0
  302. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.28.0.md +0 -0
  303. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.28.1.md +0 -0
  304. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.29.0.md +0 -0
  305. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.3.0.md +0 -0
  306. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.30.0.md +0 -0
  307. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.31.0.md +0 -0
  308. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.32.0.md +0 -0
  309. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.33.0.md +0 -0
  310. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.34.0.md +0 -0
  311. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.34.1.md +0 -0
  312. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.0.md +0 -0
  313. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.1.md +0 -0
  314. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.2.md +0 -0
  315. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.3.md +0 -0
  316. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.4.md +0 -0
  317. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.5.md +0 -0
  318. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.6.md +0 -0
  319. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.35.7.md +0 -0
  320. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.36.0.md +0 -0
  321. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.36.1.md +0 -0
  322. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.37.0.md +0 -0
  323. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.0.md +0 -0
  324. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.10.md +0 -0
  325. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.2.md +0 -0
  326. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.4.md +0 -0
  327. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.5.md +0 -0
  328. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.7.md +0 -0
  329. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.8.md +0 -0
  330. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.38.9.md +0 -0
  331. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.39.0.md +0 -0
  332. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.39.1.md +0 -0
  333. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.4.0.md +0 -0
  334. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.40.0.md +0 -0
  335. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.41.0.md +0 -0
  336. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.41.1.md +0 -0
  337. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.42.0.md +0 -0
  338. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.43.0.md +0 -0
  339. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.44.0.md +0 -0
  340. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.45.0.md +0 -0
  341. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.46.1.md +0 -0
  342. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.46.2.md +0 -0
  343. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.46.3.md +0 -0
  344. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.5.0.md +0 -0
  345. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.6.0.md +0 -0
  346. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.6.1.md +0 -0
  347. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.6.2.md +0 -0
  348. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.7.0.md +0 -0
  349. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.8.0.md +0 -0
  350. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v3.9.0.md +0 -0
  351. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.0.0.md +0 -0
  352. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.0.1.md +0 -0
  353. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.0.2.md +0 -0
  354. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.0.3.md +0 -0
  355. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.0.4.md +0 -0
  356. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.1.0.md +0 -0
  357. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.1.1.md +0 -0
  358. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.1.2.md +0 -0
  359. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.2.0.md +0 -0
  360. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.2.1.md +0 -0
  361. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.2.2.md +0 -0
  362. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.3.0.md +0 -0
  363. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.3.1.md +0 -0
  364. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.4.0.md +0 -0
  365. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.4.1.md +0 -0
  366. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.4.2.md +0 -0
  367. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.4.3.md +0 -0
  368. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/releases/v4.4.4.md +0 -0
  369. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/skills/write-code.zip +0 -0
  370. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/skills/write-test.zip +0 -0
  371. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/troubleshooting/README.md +0 -0
  372. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/troubleshooting/common-errors.md +0 -0
  373. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/troubleshooting/debugging-guide.md +0 -0
  374. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/BEST_PRACTICES.md +0 -0
  375. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/QUICK_REFERENCE.md +0 -0
  376. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/QUICK_START.md +0 -0
  377. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/README.md +0 -0
  378. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/USER_MANUAL.md +0 -0
  379. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
  380. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/ci-cd.md +0 -0
  381. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/code-generation.md +0 -0
  382. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/configuration.md +0 -0
  383. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/cross-project-sharing.md +0 -0
  384. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/debugging.md +0 -0
  385. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/examples.md +0 -0
  386. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/multi-repo.md +0 -0
  387. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/nested-settings-guide.md +0 -0
  388. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/docs/user-guide/security-best-practices.md +0 -0
  389. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/01-basic/README.md +0 -0
  390. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/01-basic/database_operations.py +0 -0
  391. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/01-basic/http_client_usage.py +0 -0
  392. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/01-basic/redis_cache.py +0 -0
  393. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/01-basic/storage_usage.py +0 -0
  394. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/02-bootstrap/README.md +0 -0
  395. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/02-bootstrap/custom_providers.py +0 -0
  396. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/02-bootstrap/custom_settings.py +0 -0
  397. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
  398. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/02-bootstrap/with_extensions.py +0 -0
  399. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/03-testing/README.md +0 -0
  400. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/03-testing/conftest.py +0 -0
  401. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/03-testing/test_api.py +0 -0
  402. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/03-testing/test_database.py +0 -0
  403. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/03-testing/test_with_fixtures.py +0 -0
  404. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/04-patterns/README.md +0 -0
  405. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/04-patterns/builder_pattern.py +0 -0
  406. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/04-patterns/combined_patterns.py +0 -0
  407. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/04-patterns/repository_pattern.py +0 -0
  408. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/README.md +0 -0
  409. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/allure_enhancement_extension.py +0 -0
  410. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/custom_extension.py +0 -0
  411. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/data_factory_extension.py +0 -0
  412. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/environment_validator_extension.py +0 -0
  413. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/monitoring_extension.py +0 -0
  414. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/mq_monitor_extension.py +0 -0
  415. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/05-extensions/notification_extension.py +0 -0
  416. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/06-ui-testing/README.md +0 -0
  417. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/06-ui-testing/basic_ui_test.py +0 -0
  418. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/06-ui-testing/conftest.py +0 -0
  419. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/06-ui-testing/page_object_example.py +0 -0
  420. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/README.md +0 -0
  421. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
  422. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
  423. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
  424. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/kafka_basic.py +0 -0
  425. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/kafka_ssl.py +0 -0
  426. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/rabbitmq_basic.py +0 -0
  427. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/rabbitmq_topic.py +0 -0
  428. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/rocketmq-broker.conf +0 -0
  429. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-message-queue/rocketmq_basic.py +0 -0
  430. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
  431. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-v35-features/02_profile_configuration.py +0 -0
  432. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-v35-features/03_runtime_overrides.py +0 -0
  433. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-v35-features/04_observability.py +0 -0
  434. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/07-v35-features/README.md +0 -0
  435. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
  436. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/02_repository_v37.py +0 -0
  437. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
  438. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
  439. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/05_project_uow.py +0 -0
  440. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
  441. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/08-v37-features/README.md +0 -0
  442. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/examples/README.md +0 -0
  443. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/scripts/fetch_swagger.py +0 -0
  444. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/scripts/security-scan.bat +0 -0
  445. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/scripts/security-scan.sh +0 -0
  446. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/bootstrap/__init__.py +0 -0
  447. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/bootstrap/bootstrap.py +0 -0
  448. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/bootstrap/providers.py +0 -0
  449. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/bootstrap/runtime.py +0 -0
  450. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/__init__.py +0 -0
  451. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
  452. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
  453. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/client.py +0 -0
  454. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
  455. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
  456. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +0 -0
  457. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
  458. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
  459. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
  460. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
  461. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
  462. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/client.py +0 -0
  463. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
  464. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
  465. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +0 -0
  466. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
  467. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
  468. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
  469. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
  470. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
  471. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
  472. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
  473. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
  474. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
  475. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
  476. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
  477. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +0 -0
  478. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
  479. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
  480. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
  481. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
  482. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
  483. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
  484. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
  485. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
  486. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +0 -0
  487. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +0 -0
  488. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +0 -0
  489. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +0 -0
  490. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
  491. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
  492. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/async_database.py +0 -0
  493. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/database.py +0 -0
  494. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/factory.py +0 -0
  495. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
  496. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
  497. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/redis/async_redis.py +0 -0
  498. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/redis/redis_client.py +0 -0
  499. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
  500. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
  501. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
  502. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/databases/uow.py +0 -0
  503. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
  504. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
  505. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/app_actions.py +0 -0
  506. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +0 -0
  507. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
  508. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
  509. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
  510. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
  511. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
  512. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
  513. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
  514. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
  515. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
  516. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
  517. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
  518. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
  519. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
  520. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
  521. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
  522. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
  523. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
  524. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
  525. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
  526. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +0 -0
  527. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
  528. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
  529. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +0 -0
  530. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
  531. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
  532. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +0 -0
  533. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
  534. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
  535. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
  536. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
  537. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
  538. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
  539. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
  540. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
  541. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
  542. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
  543. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
  544. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
  545. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
  546. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
  547. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/__init__.py +0 -0
  548. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/__main__.py +0 -0
  549. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/commands/__init__.py +0 -0
  550. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/commands/cicd.py +0 -0
  551. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/commands/env.py +0 -0
  552. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
  553. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/commands/interactive.py +0 -0
  554. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/generators/__init__.py +0 -0
  555. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
  556. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
  557. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
  558. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/main.py +0 -0
  559. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
  560. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
  561. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
  562. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
  563. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
  564. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
  565. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/docker/.dockerignore +0 -0
  566. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
  567. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
  568. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
  569. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
  570. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
  571. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
  572. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/env_files.py +0 -0
  573. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
  574. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
  575. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
  576. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
  577. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/test.py +0 -0
  578. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
  579. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
  580. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/async_example_api.py +0 -0
  581. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/async_ui_app_actions.py +0 -0
  582. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/base_api.py +0 -0
  583. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/constants.py +0 -0
  584. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/data_cleaners.py +0 -0
  585. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/docs_api.py +0 -0
  586. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/editorconfig.py +0 -0
  587. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/enhanced_gitignore.py +0 -0
  588. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/env.py +0 -0
  589. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/fixture_chain_example.py +0 -0
  590. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/fixtures_init.py +0 -0
  591. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/full_settings.py +0 -0
  592. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/gitattributes.py +0 -0
  593. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/gitignore.py +0 -0
  594. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/models_requests_example.py +0 -0
  595. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/models_responses_example.py +0 -0
  596. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/pyproject_toml.py +0 -0
  597. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/readme.py +0 -0
  598. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/script_fetch_swagger.py +0 -0
  599. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/script_run_tests.py +0 -0
  600. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/settings.py +0 -0
  601. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/test_async_example.py +0 -0
  602. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/test_example.py +0 -0
  603. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/ui_app_actions.py +0 -0
  604. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/ui_fixtures_init.py +0 -0
  605. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/ui_page_object.py +0 -0
  606. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/ui_settings.py +0 -0
  607. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/ui_test_example.py +0 -0
  608. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/uow.py +0 -0
  609. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/user_api_example.py +0 -0
  610. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/utils_converters.py +0 -0
  611. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/utils_validators.py +0 -0
  612. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/templates/project/vscode_settings.py +0 -0
  613. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/cli/utils.py +0 -0
  614. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/__init__.py +0 -0
  615. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/context/__init__.py +0 -0
  616. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/context/execution.py +0 -0
  617. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/context/propagation.py +0 -0
  618. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/decorators.py +0 -0
  619. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/events/__init__.py +0 -0
  620. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/events/types.py +0 -0
  621. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/exceptions.py +0 -0
  622. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/middleware/__init__.py +0 -0
  623. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/middleware/base.py +0 -0
  624. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/middleware/chain.py +0 -0
  625. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/middleware/decorator.py +0 -0
  626. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/middleware/protocol.py +0 -0
  627. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/models/__init__.py +0 -0
  628. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/models/base.py +0 -0
  629. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/protocols/__init__.py +0 -0
  630. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/protocols/client.py +0 -0
  631. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/protocols/event.py +0 -0
  632. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/protocols/plugin.py +0 -0
  633. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/protocols/repository.py +0 -0
  634. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/protocols/telemetry.py +0 -0
  635. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/core/types.py +0 -0
  636. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/__init__.py +0 -0
  637. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/__init__.py +0 -0
  638. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/loader.py +0 -0
  639. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
  640. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
  641. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/schema.py +0 -0
  642. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/settings.py +0 -0
  643. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/config/sources.py +0 -0
  644. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
  645. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
  646. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
  647. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
  648. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
  649. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
  650. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/events/bus.py +0 -0
  651. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
  652. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
  653. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
  654. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
  655. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
  656. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
  657. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/logging/__init__.py +0 -0
  658. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/logging/config.py +0 -0
  659. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
  660. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
  661. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/logging/observability.py +0 -0
  662. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
  663. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
  664. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
  665. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
  666. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
  667. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
  668. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
  669. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
  670. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/plugins/hooks.py +0 -0
  671. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
  672. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
  673. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
  674. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/sanitize/__init__.py +0 -0
  675. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/sanitize/service.py +0 -0
  676. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
  677. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
  678. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
  679. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
  680. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
  681. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
  682. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
  683. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
  684. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
  685. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
  686. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
  687. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
  688. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +0 -0
  689. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +0 -0
  690. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
  691. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/__init__.py +0 -0
  692. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
  693. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
  694. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +0 -0
  695. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/builtin/reporting/__init__.py +0 -0
  696. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/builtin/reporting/allure_plugin.py +0 -0
  697. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/plugins/builtin/reporting/oms_reporter_plugin.py +0 -0
  698. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/__init__.py +0 -0
  699. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/assertions/__init__.py +0 -0
  700. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/assertions/helper.py +0 -0
  701. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
  702. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/assertions/matchers.py +0 -0
  703. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/assertions/response.py +0 -0
  704. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/__init__.py +0 -0
  705. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
  706. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/builders/base.py +0 -0
  707. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
  708. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/factories/base.py +0 -0
  709. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/factories/examples.py +0 -0
  710. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
  711. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
  712. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
  713. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/loaders/base.py +0 -0
  714. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
  715. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
  716. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
  717. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/debugging/__init__.py +0 -0
  718. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/debugging/console.py +0 -0
  719. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/__init__.py +0 -0
  720. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/allure.py +0 -0
  721. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/cleanup.py +0 -0
  722. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/core.py +0 -0
  723. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/debugging.py +0 -0
  724. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/http_recorder.py +0 -0
  725. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/message_queue.py +0 -0
  726. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/metrics.py +0 -0
  727. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
  728. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/mocking/__init__.py +0 -0
  729. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
  730. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
  731. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
  732. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
  733. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/plugins/__init__.py +0 -0
  734. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
  735. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/plugins/debug.py +0 -0
  736. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/plugins/env_plugin.py +0 -0
  737. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/plugins/logging_plugin.py +0 -0
  738. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/plugins/markers.py +0 -0
  739. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/reporting/__init__.py +0 -0
  740. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -0
  741. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/reporting/allure/helper.py +0 -0
  742. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/src/df_test_framework/testing/reporting/allure/observer.py +0 -0
  743. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/README.md +0 -0
  744. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/bootstrap/__init__.py +0 -0
  745. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/bootstrap/test_bootstrap.py +0 -0
  746. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/bootstrap/test_providers.py +0 -0
  747. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/bootstrap/test_runtime.py +0 -0
  748. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/__init__.py +0 -0
  749. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/graphql/__init__.py +0 -0
  750. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/graphql/test_client.py +0 -0
  751. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
  752. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/graphql/test_models.py +0 -0
  753. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
  754. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/grpc/__init__.py +0 -0
  755. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/grpc/test_client.py +0 -0
  756. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
  757. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/grpc/test_models.py +0 -0
  758. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
  759. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/core/__init__.py +0 -0
  760. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
  761. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/core/test_request.py +0 -0
  762. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/core/test_response.py +0 -0
  763. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
  764. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
  765. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
  766. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
  767. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
  768. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
  769. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
  770. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
  771. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
  772. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
  773. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
  774. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/test_async_database.py +0 -0
  775. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/test_database.py +0 -0
  776. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/test_database_factory.py +0 -0
  777. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/test_query_builder.py +0 -0
  778. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/test_repositories.py +0 -0
  779. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/databases/test_uow.py +0 -0
  780. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
  781. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/drivers/web/test_async_ui.py +0 -0
  782. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/drivers/web/test_modern_ui.py +0 -0
  783. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/messengers/__init__.py +0 -0
  784. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/messengers/test_kafka_client.py +0 -0
  785. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
  786. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
  787. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/storages/__init__.py +0 -0
  788. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/storages/test_local_file.py +0 -0
  789. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/storages/test_oss.py +0 -0
  790. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/capabilities/storages/test_s3.py +0 -0
  791. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/__init__.py +0 -0
  792. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/test_env_cmd.py +0 -0
  793. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/test_generate_cmd.py +0 -0
  794. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/test_init_cmd.py +0 -0
  795. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/test_interactive_cmd.py +0 -0
  796. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/test_main.py +0 -0
  797. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/cli/test_utils.py +0 -0
  798. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/conftest.py +0 -0
  799. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/protocols/test_client.py +0 -0
  800. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/protocols/test_event.py +0 -0
  801. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/protocols/test_plugin.py +0 -0
  802. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/protocols/test_repository.py +0 -0
  803. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/protocols/test_telemetry.py +0 -0
  804. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/test_context.py +0 -0
  805. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/test_decorators.py +0 -0
  806. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/test_event_types.py +0 -0
  807. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/test_events.py +0 -0
  808. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/test_middleware.py +0 -0
  809. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/core/test_types.py +0 -0
  810. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/__init__.py +0 -0
  811. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/config/test_loader.py +0 -0
  812. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/config/test_middleware_schema.py +0 -0
  813. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/context/test_carriers.py +0 -0
  814. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/events/__init__.py +0 -0
  815. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/events/test_bus.py +0 -0
  816. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/__init__.py +0 -0
  817. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/test_decorators.py +0 -0
  818. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/test_manager.py +0 -0
  819. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/test_observer.py +0 -0
  820. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/test_performance.py +0 -0
  821. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/test_registry.py +0 -0
  822. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/metrics/test_types.py +0 -0
  823. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/plugins/test_manager.py +0 -0
  824. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/resilience/__init__.py +0 -0
  825. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
  826. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/sanitize/__init__.py +0 -0
  827. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/sanitize/test_service.py +0 -0
  828. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/telemetry/__init__.py +0 -0
  829. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/telemetry/test_facade.py +0 -0
  830. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/telemetry/test_noop.py +0 -0
  831. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_bootstrap.py +0 -0
  832. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_helpers.py +0 -0
  833. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_logging.py +0 -0
  834. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_pipeline.py +0 -0
  835. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_runtime.py +0 -0
  836. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_settings.py +0 -0
  837. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/test_sources.py +0 -0
  838. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/__init__.py +0 -0
  839. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/test_context.py +0 -0
  840. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/test_decorators.py +0 -0
  841. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/test_exporters.py +0 -0
  842. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/test_integrations.py +0 -0
  843. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/test_interceptors.py +0 -0
  844. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/infrastructure/tracing/test_manager.py +0 -0
  845. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/integration/__init__.py +0 -0
  846. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/integration/test_config_environment.py +0 -0
  847. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/integration/test_event_observability.py +0 -0
  848. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/integration/test_factory_assertions.py +0 -0
  849. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/integration/test_middleware_chain.py +0 -0
  850. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/migration/__init__.py +0 -0
  851. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
  852. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/plugins/__init__.py +0 -0
  853. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/plugins/builtin/__init__.py +0 -0
  854. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/plugins/builtin/monitoring/__init__.py +0 -0
  855. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/plugins/builtin/monitoring/test_plugin.py +0 -0
  856. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/test_json_to_model_generator.py +0 -0
  857. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/assertions/__init__.py +0 -0
  858. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/assertions/test_json_schema.py +0 -0
  859. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/assertions/test_matchers.py +0 -0
  860. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/data/__init__.py +0 -0
  861. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/data/test_builders.py +0 -0
  862. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/data/test_data_generator.py +0 -0
  863. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/data/test_factories.py +0 -0
  864. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/debugging/__init__.py +0 -0
  865. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/debugging/test_console_debug_observer.py +0 -0
  866. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/decorators/__init__.py +0 -0
  867. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/__init__.py +0 -0
  868. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_cleanup.py +0 -0
  869. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_fixtures_core.py +0 -0
  870. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_fixtures_debugging.py +0 -0
  871. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
  872. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
  873. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_http_recorder.py +0 -0
  874. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
  875. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/mocking/__init__.py +0 -0
  876. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/mocking/test_database_mock.py +0 -0
  877. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/mocking/test_http_mock.py +0 -0
  878. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/mocking/test_redis_mock.py +0 -0
  879. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/mocking/test_time_mock.py +0 -0
  880. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
  881. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/plugins/test_debug_plugin.py +0 -0
  882. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/plugins/test_env_plugin.py +0 -0
  883. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/plugins/test_logging_plugin.py +0 -0
  884. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/plugins/test_markers.py +0 -0
  885. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/reporting/test_allure_observer.py +0 -0
  886. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/test_allure_helper.py +0 -0
  887. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/test_assertions.py +0 -0
  888. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/test_data_loaders.py +0 -0
  889. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/tests/testing/test_factories_presets.py +0 -0
  890. {df_test_framework-4.4.4 → df_test_framework-4.5.0}/verify_fixes.py +0 -0
@@ -5,6 +5,23 @@
5
5
  格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
6
6
  版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
7
7
 
8
+ ## [4.5.0] - 2026-05-12
9
+
10
+ ### ✨ 新增
11
+
12
+ - **`ui_client()` — 命名多前端客户端系统**:通过 `ui_client(name, base_url_config=..., storage_state=..., default=True)` 声明独立 UI Client(B 端后台、H5、WebView 等),每套 Client 拥有独立 `base_url`、`storage_state`、`viewport` 和完整 `page/context/browser_manager` fixture 组。`load_ui_client_fixtures(globals())` 自动生成全套命名 fixture 及默认别名
13
+ - **`service_client(default=True)` — 默认 HTTP Client 注册**:`@service_client` 新增 `default=True` 参数,注册的客户端自动提供 `http_client` alias fixture,`@api_class()` 可无感绑定默认客户端
14
+ - **`@api_class(http_client=...)` — 显式绑定 HTTP Client**:多服务项目通过 `@api_class(http_client="payment_http_client")` 指定非默认客户端,彻底消除多后端并行测试的 fixture 混淆
15
+ - **`@actions_class(ui_client=...)` — 显式绑定 UI Client**:多前端项目通过 `@actions_class(ui_client="h5_ui")` 将 Actions 绑定到具体前端,page/browser_manager 等依赖从绑定 Client 解析,不再静默回退全局 `page`
16
+
17
+ ### ♻️ 重构
18
+
19
+ - **脚手架客户端目录统一**:`df-test init` 生成的默认 HTTP Client(`default_http_client.py`)和 UI Client(`ui_clients.py`)统一放入 `clients/` 目录;conftest 从 `{project}.clients` 加载服务客户端
20
+
21
+ ### 🐛 修复
22
+
23
+ - **多 UI Client 同步混跑**:同步 `BrowserManager` 和 `AuthSetup` 共用进程内 Playwright 实例(引用计数管理),多 UI Client 场景下不再各自独立启动 Playwright,避免进程内多实例冲突
24
+
8
25
  ## [4.4.4] - 2026-04-23
9
26
 
10
27
  ### 🐛 修复
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: df-test-framework
3
- Version: 4.4.4
3
+ Version: 4.5.0
4
4
  Summary: 基于交互模式的现代化测试自动化框架,支持多种测试场景
5
5
  Project-URL: Homepage, https://github.com/yourorg/df-test-framework
6
6
  Project-URL: Repository, https://github.com/yourorg/df-test-framework
@@ -26,9 +26,11 @@ from df_test_framework.testing.decorators import (
26
26
  api_class,
27
27
  actions_class,
28
28
  service_client, # v4.2.0 新增
29
+ ui_client, # UI Client 声明
29
30
  load_api_fixtures,
30
31
  load_actions_fixtures,
31
32
  load_service_fixtures, # v4.2.0 新增
33
+ load_ui_client_fixtures,
32
34
  get_service_registry, # v4.2.0 新增
33
35
  )
34
36
 
@@ -1144,6 +1146,7 @@ def test_create_card(
1144
1146
  name: str | None = None, # fixture 名称(默认从类名生成)
1145
1147
  scope: str = "session", # pytest fixture scope
1146
1148
  base_url_config: str | None = None, # settings 配置路径(dot notation)
1149
+ default: bool = False, # 是否额外注册默认 http_client
1147
1150
  **dependencies: Any, # 额外依赖映射
1148
1151
  )
1149
1152
  ```
@@ -14,9 +14,11 @@ DF Test Framework 提供了两类装饰器,帮助简化测试代码和增强
14
14
  - **@api_class**: 自动将 BaseAPI 子类注册为 pytest fixture
15
15
  - **@actions_class**: 自动将 AppActions 子类注册为 pytest fixture
16
16
  - **@service_client**: 自动将独立服务客户端注册为 pytest fixture(v4.2.0)
17
+ - **ui_client()**: 声明命名 UI Client,支持默认前端与多前端绑定
17
18
  - **load_api_fixtures()**: 自动加载所有 API fixtures
18
19
  - **load_actions_fixtures()**: 自动加载所有 Actions fixtures
19
20
  - **load_service_fixtures()**: 自动加载所有服务客户端 fixtures(v4.2.0)
21
+ - **load_ui_client_fixtures()**: 自动加载所有 UI Client fixtures
20
22
 
21
23
  ### 通用装饰器(Core Decorators)
22
24
 
@@ -140,6 +142,15 @@ class CustomAPI(BaseAPI):
140
142
  self.settings = settings
141
143
  ```
142
144
 
145
+ 多服务项目可以直接绑定非默认 HTTP Client:
146
+
147
+ ```python
148
+ @api_class("h5_order_api", http_client="h5_auth_client")
149
+ class H5OrderAPI(BaseAPI):
150
+ def __init__(self, http_client):
151
+ super().__init__(http_client)
152
+ ```
153
+
143
154
  ### 自动加载 API Fixtures
144
155
 
145
156
  在 `conftest.py` 中使用 `load_api_fixtures()` 自动加载所有 API:
@@ -189,6 +200,8 @@ def test_multiple_apis(user_api, order_api):
189
200
  ### 基本用法
190
201
 
191
202
  `@actions_class` 装饰器自动将 AppActions 子类注册为 pytest fixture,用于 UI 测试。
203
+ 项目必须先通过 `ui_client(..., default=True)` 声明默认 UI Client;多前端 Actions
204
+ 通过 `@actions_class(ui_client="h5_ui")` 显式绑定。
192
205
 
193
206
  ```python
194
207
  from df_test_framework import AppActions
@@ -237,13 +250,16 @@ class SharedActions(AppActions):
237
250
 
238
251
  ### 自动加载 Actions Fixtures
239
252
 
240
- 在 `conftest.py` 中使用 `load_actions_fixtures()` 自动加载所有 Actions:
253
+ 在 `conftest.py` 中先加载 UI Client,再使用 `load_actions_fixtures()` 自动加载所有 Actions:
241
254
 
242
255
  ```python
243
256
  # conftest.py
244
- from df_test_framework.testing.decorators import load_actions_fixtures
257
+ from df_test_framework.testing.decorators import load_actions_fixtures, load_ui_client_fixtures
258
+
259
+ import myproject.ui_clients # noqa: F401 触发 UI Client 注册
245
260
 
246
261
  # 方式1: 自动发现模式(推荐)
262
+ load_ui_client_fixtures(globals())
247
263
  load_actions_fixtures(globals(), actions_package="myproject.actions")
248
264
 
249
265
  # 方式2: 手动导入模式
@@ -279,8 +295,8 @@ def test_order_flow(login_actions, order_actions):
279
295
  | 基类 | `BaseAPI` | `AppActions` | 无要求 |
280
296
  | 默认 scope | `session` | `function` | `session` |
281
297
  | 配置字段 | `test.apis_package` | `test.actions_package` | `base_url_config` |
282
- | 目录约定 | `apis/` | `actions/` | `apis/` 或自定义 |
283
- | 自动依赖 | `http_client` | `page`, `browser_manager` | 按 `__init__` 签名推断 |
298
+ | 目录约定 | `apis/` | `actions/` | `clients/` |
299
+ | 自动依赖 | 默认 `http_client`,可用 `http_client=` 指定 | 默认 UI Client 的 `page`,可用 `ui_client=` 指定 | 按 `__init__` 签名推断 |
284
300
 
285
301
  ---
286
302
 
@@ -321,13 +337,22 @@ class MyClient:
321
337
  self.redis = redis_client # 自动注入 redis_client fixture
322
338
  ```
323
339
 
340
+ 多服务项目推荐声明默认 HTTP Client,`@api_class()` 会继续依赖 `http_client` 这个默认别名:
341
+
342
+ ```python
343
+ @service_client("admin_http_client", base_url_config="http.base_url", default=True, runtime="runtime")
344
+ class AdminHttpClient(HttpClient):
345
+ def __init__(self, base_url: str, runtime=None) -> None:
346
+ super().__init__(base_url=base_url, runtime=runtime)
347
+ ```
348
+
324
349
  ### 自动加载
325
350
 
326
351
  ```python
327
352
  # conftest.py
328
353
  from df_test_framework.testing.decorators import load_service_fixtures
329
354
 
330
- load_service_fixtures(globals(), services_package="my_project.apis")
355
+ load_service_fixtures(globals(), services_package="my_project.clients")
331
356
  ```
332
357
 
333
358
  ### 在测试中使用
@@ -22,6 +22,7 @@
22
22
  - 调用的服务有独立的 base_url(不同于主测试目标)
23
23
  - 使用不同的认证方式(如独立的 API Key)
24
24
  - 不需要继承 BaseAPI 的轻量客户端
25
+ - 多服务项目需要显式声明默认 `http_client`
25
26
 
26
27
  ---
27
28
 
@@ -33,7 +34,7 @@
33
34
  携带 EventBus,是失败 section、console_debugger、Allure HTTP attachment 的工作前提。
34
35
 
35
36
  ```python
36
- # apis/payment_client.py
37
+ # clients/payment_client.py
37
38
  from df_test_framework import HttpClient
38
39
  from df_test_framework.testing.decorators import service_client
39
40
 
@@ -55,6 +56,40 @@ class PaymentClient(HttpClient):
55
56
  return resp.json()
56
57
  ```
57
58
 
59
+ ### 默认 HTTP Client
60
+
61
+ 多服务项目应显式声明默认 HTTP Client。被标记为 `default=True` 的服务客户端会额外注册
62
+ `http_client` fixture,`@api_class()` 默认继续依赖这个显式默认客户端。
63
+
64
+ ```python
65
+ from df_test_framework import HttpClient
66
+ from df_test_framework.testing.decorators import service_client
67
+
68
+
69
+ @service_client(
70
+ "admin_http_client",
71
+ base_url_config="http.base_url",
72
+ default=True,
73
+ runtime="runtime",
74
+ )
75
+ class AdminHttpClient(HttpClient):
76
+ def __init__(self, base_url: str, runtime=None) -> None:
77
+ super().__init__(
78
+ base_url=base_url,
79
+ config=runtime.settings.http if runtime else None,
80
+ runtime=runtime,
81
+ )
82
+ ```
83
+
84
+ 其他系统继续声明为独立客户端:
85
+
86
+ ```python
87
+ @service_client("h5_http_client", base_url_config="business.h5_base_url")
88
+ class H5HttpClient(HttpClient):
89
+ def __init__(self, base_url: str, runtime=None) -> None:
90
+ super().__init__(base_url=base_url, runtime=runtime)
91
+ ```
92
+
58
93
  > **v4.4.1 强制要求**:`HttpClient`/`AsyncHttpClient` 子类必须在 `__init__` 接受
59
94
  > `runtime` 并透传给 `super().__init__`。否则 `load_service_fixtures()` 会触发
60
95
  > `ServiceClientObservabilityWarning`,且该客户端的所有 HTTP 请求 **不会** 出现在
@@ -75,7 +110,7 @@ business:
75
110
  # conftest.py
76
111
  from df_test_framework.testing.decorators import load_service_fixtures
77
112
 
78
- load_service_fixtures(globals(), services_package="my_project.apis")
113
+ load_service_fixtures(globals(), services_package="my_project.clients")
79
114
  ```
80
115
 
81
116
  ### 4. 在测试中使用
@@ -330,17 +365,17 @@ class UserCenterClient: ...
330
365
  # conftest.py
331
366
  from df_test_framework.testing.decorators import load_service_fixtures
332
367
 
333
- load_service_fixtures(globals(), services_package="my_project.apis")
368
+ load_service_fixtures(globals(), services_package="my_project.clients")
334
369
  ```
335
370
 
336
- 自动导入 `my_project.apis` 包下所有模块,触发 `@service_client` 装饰器注册。
371
+ 自动导入 `my_project.clients` 包下所有模块,触发 `@service_client` 装饰器注册。
337
372
 
338
373
  ### 方式2:手动导入
339
374
 
340
375
  ```python
341
376
  # conftest.py
342
- from my_project.apis.payment_client import PaymentClient # noqa: F401
343
- from my_project.apis.sms_client import SmsClient # noqa: F401
377
+ from my_project.clients.payment_client import PaymentClient # noqa: F401
378
+ from my_project.clients.sms_client import SmsClient # noqa: F401
344
379
  from df_test_framework.testing.decorators import load_service_fixtures
345
380
 
346
381
  load_service_fixtures(globals())
@@ -348,7 +383,9 @@ load_service_fixtures(globals())
348
383
 
349
384
  ### 与 load_api_fixtures 共存
350
385
 
351
- 可以同时使用 `load_api_fixtures` 和 `load_service_fixtures`:
386
+ 可以同时使用 `load_api_fixtures` 和 `load_service_fixtures`。如果项目声明了
387
+ `@service_client(default=True)`,必须先加载服务客户端,再加载 API 类,确保
388
+ `@api_class()` 默认依赖的 `http_client` 指向项目显式默认客户端:
352
389
 
353
390
  ```python
354
391
  # conftest.py
@@ -357,11 +394,11 @@ from df_test_framework.testing.decorators import (
357
394
  load_service_fixtures,
358
395
  )
359
396
 
360
- # BaseAPI 子类(共享 http_client
361
- load_api_fixtures(globals(), apis_package="my_project.apis")
397
+ # 独立服务客户端;default=True 会额外注册 http_client
398
+ load_service_fixtures(globals(), services_package="my_project.clients")
362
399
 
363
- # 独立服务客户端(各自管理连接)
364
- load_service_fixtures(globals(), services_package="my_project.apis")
400
+ # BaseAPI 子类(共享显式默认 http_client)
401
+ load_api_fixtures(globals(), apis_package="my_project.apis")
365
402
  ```
366
403
 
367
404
  ---
@@ -372,7 +409,7 @@ load_service_fixtures(globals(), services_package="my_project.apis")
372
409
  from df_test_framework import get_service_registry
373
410
 
374
411
  registry = get_service_registry()
375
- for name, (cls, scope, config, deps) in registry.items():
412
+ for name, (cls, scope, config, deps, is_default) in registry.items():
376
413
  print(f"{name}: {cls.__name__} (scope={scope}, config={config})")
377
414
  ```
378
415
 
@@ -383,9 +420,9 @@ for name, (cls, scope, config, deps) in registry.items():
383
420
  ### 1. 按服务拆分文件
384
421
 
385
422
  ```
386
- apis/
423
+ clients/
387
424
  ├── __init__.py
388
- ├── admin_api.py # @api_class后台 API(继承 BaseAPI)
425
+ ├── admin_http_client.py # @service_client(default=True)默认 HTTP Client
389
426
  ├── payment_client.py # @service_client — 支付服务
390
427
  ├── sms_client.py # @service_client — 短信服务
391
428
  └── user_center_client.py # @service_client — 用户中心
@@ -5,7 +5,7 @@
5
5
 
6
6
  ## 概述
7
7
 
8
- 本指南介绍如何使用 DF Test Framework 进行 Web UI 测试,基于 Playwright 实现,采用配置驱动 + @actions_class 装饰器 + 事件驱动架构。
8
+ 本指南介绍如何使用 DF Test Framework 进行 Web UI 测试,基于 Playwright 实现,采用配置驱动 + UI Client + @actions_class 装饰器 + 事件驱动架构。
9
9
 
10
10
  **框架提供两种模式**:
11
11
  - **AppActions + BasePage**:同步模式(v3.0.0+),简单易用
@@ -22,6 +22,11 @@
22
22
  > - ✅ 对齐 Playwright 官方最佳实践(pytest-playwright 插件模式)
23
23
  > - ✅ storageState 下沉到 context 级别注入,更符合 Playwright 设计
24
24
  >
25
+ > **vNext 多前端模型**:
26
+ > - ✅ `ui_client()` 将 B 端后台、H5、WebView 等前端声明为独立 UI Client
27
+ > - ✅ 每个 UI Client 拥有自己的 `base_url`、`storage_state`、`viewport`、`context/page`
28
+ > - ✅ `@actions_class(ui_client="h5_ui")` 显式绑定业务 Actions 到指定前端
29
+ >
25
30
  > 本指南主要介绍**同步版本**(向后兼容)。异步版本使用方法请参考:
26
31
  > - [v4.0.0 发布说明](../releases/v4.0.0.md) - 异步 UI 测试概述
27
32
  > - [五层架构详解](../architecture/五层架构详解.md#layer-2-capabilities) - AsyncAppActions 详细说明
@@ -32,7 +37,7 @@
32
37
 
33
38
  1. [快速开始](#1-快速开始)
34
39
  2. [配置驱动模式](#2-配置驱动模式)
35
- 3. [认证状态管理(storageState)](#3-认证状态管理storagstate)
40
+ 3. [UI Client 与认证状态](#3-ui-client-与认证状态)
36
41
  4. [核心组件](#4-核心组件)
37
42
  5. [@actions_class 装饰器](#5-actions_class-装饰器)
38
43
  6. [三层架构模式](#6-三层架构模式)
@@ -139,12 +144,56 @@ WEB__BASE_URL=https://web.example.com # Web 地址
139
144
 
140
145
  ---
141
146
 
142
- ## 3. 认证状态管理(storageState)
147
+ ## 3. UI Client 与认证状态
143
148
 
144
149
  > **版本**: v4.0.3+(基础功能),v4.0.4+(pytest_config CLI 参数一致性)
145
150
 
146
151
  绝大多数 UI 测试的前提是「用户已登录」。v4.0.3 原生支持 Playwright storageState,`page` 自动携带认证状态,测试零感知。
147
152
 
153
+ 多前端项目应先声明 UI Client:
154
+
155
+ ```python
156
+ # src/my_project/clients/ui_clients.py
157
+ from df_test_framework import ui_client
158
+
159
+ ui_client(
160
+ "admin_ui",
161
+ base_url_config="web.base_url",
162
+ storage_state="admin_storage_state",
163
+ default=True,
164
+ )
165
+
166
+ ui_client(
167
+ "h5_ui",
168
+ base_url_config="business.h5_web_base_url",
169
+ storage_state="h5_storage_state",
170
+ viewport={"width": 375, "height": 812},
171
+ )
172
+ ```
173
+
174
+ 在 `conftest.py` 中加载:
175
+
176
+ ```python
177
+ import my_project.clients.ui_clients # noqa: F401
178
+ from df_test_framework.testing.decorators import load_ui_client_fixtures
179
+
180
+ load_ui_client_fixtures(globals())
181
+ ```
182
+
183
+ 框架会生成:
184
+
185
+ ```text
186
+ admin_ui_page / admin_ui_context / admin_ui_browser_manager
187
+ h5_ui_page / h5_ui_context / h5_ui_browser_manager
188
+ admin_ui_async_page / h5_ui_async_page
189
+ ```
190
+
191
+ `default=True` 的客户端还会注册默认别名:`page`、`context`、`browser_manager`、`app_actions`
192
+ 以及异步别名 `async_page`、`async_context`、`async_browser_manager`、`async_app_actions`。
193
+
194
+ > 标准约束:使用 `@actions_class()` 时,项目必须声明一个 `default=True` 的 UI Client;
195
+ > 多前端 Actions 使用 `@actions_class(ui_client="h5_ui")` 显式绑定。
196
+
148
197
  ### 3.1 设计思路
149
198
 
150
199
  与 HTTP bearer_token 中间件类比:
@@ -158,7 +207,7 @@ WEB__BASE_URL=https://web.example.com # Web 地址
158
207
 
159
208
  ### 3.2 使用方式
160
209
 
161
- 在项目 `conftest.py` 中覆盖框架的 `storage_state` fixture:
210
+ 在项目 `conftest.py` 中提供对应的 storage state fixture:
162
211
 
163
212
  ```python
164
213
  # conftest.py
@@ -166,7 +215,7 @@ import pytest
166
215
  from df_test_framework.testing import AuthSetup
167
216
 
168
217
  @pytest.fixture(scope="session")
169
- def storage_state(tmp_path_factory, settings, request):
218
+ def admin_storage_state(tmp_path_factory, settings, request):
170
219
  """Session 级别认证状态 — 整个测试 session 只登录一次"""
171
220
  with AuthSetup(settings, tmp_path_factory.mktemp("auth"), pytest_config=request.config) as auth:
172
221
  auth.page.goto(f"{auth.base_url}/login")
@@ -188,6 +237,14 @@ def test_dashboard(page):
188
237
  assert page.get_by_text("监控管理").is_visible()
189
238
  ```
190
239
 
240
+ Actions 可以显式绑定到非默认 UI Client:
241
+
242
+ ```python
243
+ @actions_class(ui_client="h5_ui")
244
+ class H5HomeActions(AppActions):
245
+ ...
246
+ ```
247
+
191
248
  ### 3.3 AuthSetup API
192
249
 
193
250
  `AuthSetup` 是一个 context manager,管理临时浏览器的完整生命周期:
@@ -387,7 +444,9 @@ class LoginActions(AppActions):
387
444
 
388
445
  ```python
389
446
  # conftest.py
390
- from df_test_framework.testing.decorators import load_actions_fixtures
447
+ from df_test_framework.testing.decorators import load_actions_fixtures, load_ui_client_fixtures
448
+
449
+ import my_project.clients.ui_clients # noqa: F401 触发 UI Client 注册
391
450
 
392
451
  def _get_actions_package() -> str:
393
452
  """获取 Actions 包路径(优先配置,否则默认值)"""
@@ -399,7 +458,8 @@ def _get_actions_package() -> str:
399
458
  except Exception:
400
459
  return default_package
401
460
 
402
- # 自动加载所有 @actions_class 装饰的类
461
+ # 先加载 UI Client,再加载所有 @actions_class 装饰的类
462
+ load_ui_client_fixtures(globals())
403
463
  load_actions_fixtures(globals(), actions_package=_get_actions_package())
404
464
  ```
405
465
 
@@ -0,0 +1,235 @@
1
+ # v4.5.0 发布说明
2
+
3
+ **发布日期**: 2026-05-12
4
+ **版本类型**: MINOR(新增显式多客户端模型,向后兼容)
5
+ **主题**: 多前端 UI Client + 显式默认客户端绑定
6
+
7
+ ---
8
+
9
+ ## 概述
10
+
11
+ v4.5.0 引入**显式多客户端模型**,解决多前端测试项目长期存在的两个痛点:
12
+
13
+ 1. **多前端 UI 测试**:B 端后台、H5、WebView 等无法共用同一套 `page`/`storage_state`/`base_url`,现在通过 `ui_client()` 声明独立的命名 UI Client,每套前端拥有完全隔离的 fixture 组。
14
+
15
+ 2. **多后端 API 测试**:项目有多个独立服务时,`@api_class` 无法明确绑定到某个服务的 HTTP Client,现在通过 `service_client(default=True)` 和 `@api_class(http_client=...)` 精确控制绑定关系。
16
+
17
+ **向后兼容**:单前端/单后端项目**无需任何改动**,框架自动识别默认客户端。
18
+
19
+ ---
20
+
21
+ ## 新增功能
22
+
23
+ ### 1. `ui_client()` — 命名多前端 UI Client
24
+
25
+ **影响文件**: `src/df_test_framework/testing/decorators/ui_client.py`
26
+
27
+ 在业务项目 `clients/ui_clients.py` 中声明 UI Client:
28
+
29
+ ```python
30
+ # src/{project}/clients/ui_clients.py
31
+ from df_test_framework.testing.decorators import ui_client
32
+
33
+ admin_ui = ui_client(
34
+ "admin_ui",
35
+ base_url_config="web.admin_url",
36
+ storage_state="admin_storage_state",
37
+ default=True, # 提供 page/context/browser_manager 别名
38
+ )
39
+
40
+ h5_ui = ui_client(
41
+ "h5_ui",
42
+ base_url_config="web.h5_url",
43
+ storage_state="h5_storage_state",
44
+ viewport={"width": 375, "height": 812},
45
+ )
46
+ ```
47
+
48
+ 在 conftest.py 中加载:
49
+
50
+ ```python
51
+ # conftest.py
52
+ from {project}.clients import ui_clients as _ui_clients_module # noqa: F401
53
+ from df_test_framework.testing.decorators import load_ui_client_fixtures
54
+
55
+ load_ui_client_fixtures(globals())
56
+ ```
57
+
58
+ 每个 UI Client 自动生成的 fixture 组:
59
+
60
+ | Fixture | Scope | 说明 |
61
+ |---------|-------|------|
62
+ | `{name}_browser_manager` | session | BrowserManager,整个会话共享 |
63
+ | `{name}_browser` | session | Playwright Browser 实例 |
64
+ | `{name}_base_url` | session | 从 settings 解析的 base_url |
65
+ | `{name}_context` | function | 独立 BrowserContext,含 storageState |
66
+ | `{name}_page` | function | 独立 Page |
67
+ | `{name}_app_actions` | function | AppActions 实例 |
68
+ | `{name}_async_*` | 同上 | 异步版本对应 fixture |
69
+
70
+ 当 `default=True` 时,额外生成别名 fixture(`page`、`context`、`browser_manager`、`app_actions` 等),单前端项目无感迁移。
71
+
72
+ ### 2. `@actions_class(ui_client=...)` — 显式绑定 UI Client
73
+
74
+ **影响文件**: `src/df_test_framework/testing/decorators/actions_class.py`
75
+
76
+ 多前端项目中,Actions 明确绑定到目标前端:
77
+
78
+ ```python
79
+ # actions/admin/dashboard_actions.py
80
+ from df_test_framework.testing.decorators import actions_class
81
+ from df_test_framework import AppActions
82
+
83
+ @actions_class(ui_client="admin_ui") # 绑定到 admin_ui 前端
84
+ class DashboardActions(AppActions):
85
+ def open_dashboard(self):
86
+ self.page.goto(f"{self.base_url}/dashboard")
87
+
88
+ # actions/h5/product_actions.py
89
+ @actions_class(ui_client="h5_ui") # 绑定到 h5_ui 前端
90
+ class ProductActions(AppActions):
91
+ def browse_product(self, product_id: int):
92
+ self.page.goto(f"{self.base_url}/products/{product_id}")
93
+ ```
94
+
95
+ `@actions_class` 解析 `page`、`base_url` 等依赖时,从绑定的 UI Client 对应 fixture(`h5_ui_page`、`h5_ui_base_url`)取值,不再静默回退全局 `page`。
96
+
97
+ ### 3. `service_client(default=True)` — 默认 HTTP Client 注册
98
+
99
+ **影响文件**: `src/df_test_framework/testing/decorators/service_client.py`
100
+
101
+ ```python
102
+ # clients/default_http_client.py
103
+ from df_test_framework.testing.decorators import service_client
104
+ from df_test_framework import AsyncHttpClient
105
+
106
+ @service_client(base_url_config="http.base_url", default=True)
107
+ class DefaultHttpClient(AsyncHttpClient):
108
+ def __init__(self, base_url: str, runtime):
109
+ super().__init__(base_url=base_url, runtime=runtime)
110
+ ```
111
+
112
+ `default=True` 注册后自动提供 `http_client` alias fixture,`@api_class()` 不指定 `http_client` 时自动绑定到它。
113
+
114
+ ### 4. `@api_class(http_client=...)` — 显式绑定 HTTP Client
115
+
116
+ **影响文件**: `src/df_test_framework/testing/decorators/api_class.py`
117
+
118
+ 多服务项目中:
119
+
120
+ ```python
121
+ # apis/payment/payment_api.py
122
+ @api_class(http_client="payment_http_client") # 明确绑定到支付服务客户端
123
+ class PaymentAPI(BaseAPI):
124
+ def create_order(self, amount: float):
125
+ return self.post("/orders", json={"amount": amount})
126
+
127
+ # apis/user/user_api.py
128
+ @api_class() # 绑定到默认 http_client
129
+ class UserAPI(BaseAPI):
130
+ def get_user(self, user_id: int):
131
+ return self.get(f"/users/{user_id}")
132
+ ```
133
+
134
+ ---
135
+
136
+ ## 重构变更
137
+
138
+ ### 脚手架客户端目录统一
139
+
140
+ `df-test init` 初始化的 API 和 Full 类型项目,客户端文件统一生成在 `clients/` 目录下:
141
+
142
+ ```
143
+ src/{project}/
144
+ ├── clients/
145
+ │ ├── __init__.py
146
+ │ ├── default_http_client.py # @service_client(default=True)
147
+ │ └── ui_clients.py # ui_client(..., default=True)
148
+ ├── apis/
149
+ └── actions/
150
+ ```
151
+
152
+ conftest.py 中服务客户端包路径统一为 `{project}.clients`:
153
+
154
+ ```python
155
+ load_service_fixtures(globals(), services_package="{project}.clients")
156
+ ```
157
+
158
+ **影响范围**:仅影响新建项目(`df-test init` 生成的模板)。存量项目不受影响。
159
+
160
+ ---
161
+
162
+ ## Bug 修复
163
+
164
+ ### 多 UI Client 同步混跑
165
+
166
+ **问题**:多个 `BrowserManager` 实例(`admin_ui` 和 `h5_ui` 各一个)分别调用 `sync_playwright().start()`,在同一进程内启动多个 Playwright 实例,导致运行时冲突或资源泄漏。
167
+
168
+ **修复**:同步 `BrowserManager` 和 `AuthSetup` 共用进程内同一个 Playwright 实例,通过引用计数管理生命周期:
169
+
170
+ - 第一个 `BrowserManager.start()` 启动 Playwright
171
+ - 后续调用复用同一实例,引用计数 +1
172
+ - 每次 `BrowserManager.stop()` 引用计数 -1,归零时才真正停止
173
+
174
+ **影响文件**: `src/df_test_framework/capabilities/drivers/web/playwright/browser.py`
175
+
176
+ ---
177
+
178
+ ## 迁移指南
179
+
180
+ ### 单前端项目:无需修改
181
+
182
+ 现有 conftest.py 使用全局 `page`、`context`、`browser_manager` 的项目无需任何改动。框架默认行为完全兼容。
183
+
184
+ ### 迁移到命名 UI Client(可选优化)
185
+
186
+ 如果项目已有单前端,想迁移到显式 UI Client 模式:
187
+
188
+ **第一步**:新建 `clients/ui_clients.py`
189
+
190
+ ```python
191
+ from df_test_framework.testing.decorators import ui_client
192
+
193
+ main_ui = ui_client(
194
+ "main_ui",
195
+ base_url_config="web.base_url",
196
+ storage_state="storage_state", # 现有 storage_state fixture 名
197
+ default=True, # 保持 page/context 别名不变
198
+ )
199
+ ```
200
+
201
+ **第二步**:在 conftest.py 中替换 UI 相关加载
202
+
203
+ ```python
204
+ # 替换前
205
+ from df_test_framework.testing.fixtures.ui import *
206
+
207
+ # 替换后
208
+ from {project}.clients import ui_clients as _ # noqa: F401
209
+ from df_test_framework.testing.decorators import load_ui_client_fixtures
210
+ load_ui_client_fixtures(globals())
211
+ ```
212
+
213
+ 由于声明了 `default=True`,原有的 `page`、`context`、`browser_manager` fixture 名称保持不变,测试代码**无需修改**。
214
+
215
+ ### 多服务 API 项目:添加显式绑定
216
+
217
+ 如果项目有多个 HTTP Client:
218
+
219
+ ```python
220
+ # 修改前:可能绑定错误
221
+ @api_class()
222
+ class PaymentAPI(BaseAPI): ...
223
+
224
+ # 修改后:明确绑定
225
+ @api_class(http_client="payment_http_client")
226
+ class PaymentAPI(BaseAPI): ...
227
+ ```
228
+
229
+ ---
230
+
231
+ ## 相关文档
232
+
233
+ - [Web UI 测试使用手册](../guides/web-ui-testing.md) - UI Client 多前端配置
234
+ - [装饰器使用指南](../guides/decorators_guide.md) - ui_client / service_client 完整 API
235
+ - [服务客户端指南](../guides/service_client_guide.md) - default=True 注册方式
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "df-test-framework"
3
- version = "4.4.4"
3
+ version = "4.5.0"
4
4
  description = "基于交互模式的现代化测试自动化框架,支持多种测试场景"
5
5
  authors = [{name = "DF QA Team", email = "qa@example.com"}]
6
6
  readme = "README_PYPI.md"