codemie-test-harness 0.1.166__tar.gz → 0.1.168__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 (357) hide show
  1. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/PKG-INFO +2 -2
  2. codemie_test_harness-0.1.168/codemie_test_harness/tests/assistant/tools/mcp/test_single_assistant_dual_time_plugins.py +160 -0
  3. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/plugin_tools_test_data.py +33 -0
  4. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/base_page.py +24 -24
  5. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/__init__.py +2 -2
  6. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py +3 -3
  7. codemie_test_harness-0.1.166/codemie_test_harness/tests/ui/pageobject/components/header.py → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/pageobject/components/menu.py +57 -111
  8. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/pop_up.py +2 -2
  9. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/workflow_card.py +7 -10
  10. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py +9 -9
  11. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py +1 -1
  12. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +16 -16
  13. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py +32 -65
  14. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py +4 -4
  15. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py +6 -4
  16. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py +32 -61
  17. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py +17 -23
  18. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py +5 -11
  19. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py +5 -2
  20. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py +3 -5
  21. {codemie_test_harness-0.1.166/codemie_test_harness/tests/ui → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/test_create_workflow.py +12 -33
  22. {codemie_test_harness-0.1.166/codemie_test_harness/tests/ui → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/test_edit_workflow.py +14 -34
  23. {codemie_test_harness-0.1.166/codemie_test_harness/tests/ui → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/test_workflow_details.py +11 -11
  24. {codemie_test_harness-0.1.166/codemie_test_harness/tests/ui → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/test_workflow_executions_page.py +0 -2
  25. {codemie_test_harness-0.1.166/codemie_test_harness/tests/ui → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/test_workflow_templates.py +0 -2
  26. {codemie_test_harness-0.1.166/codemie_test_harness/tests/ui → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/test_workflows.py +8 -6
  27. codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py +0 -0
  28. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/pyproject.toml +2 -2
  29. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/README.md +0 -0
  30. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/.env +0 -0
  31. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/__init__.py +0 -0
  32. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/__init__.py +0 -0
  33. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/cli.py +0 -0
  34. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/commands/__init__.py +0 -0
  35. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/commands/config_cmd.py +0 -0
  36. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/commands/run_cmd.py +0 -0
  37. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/constants.py +0 -0
  38. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/runner.py +0 -0
  39. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/cli/utils.py +0 -0
  40. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/pytest.ini +0 -0
  41. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/__init__.py +0 -0
  42. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/__init__.py +0 -0
  43. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/datasource/__init__.py +0 -0
  44. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/datasource/test_code_datasource.py +0 -0
  45. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/datasource/test_confluence_datasource.py +0 -0
  46. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/datasource/test_file_indexing.py +0 -0
  47. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/datasource/test_google_datasource.py +0 -0
  48. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/datasource/test_jira_datasource.py +0 -0
  49. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/default_integrations/__init__.py +0 -0
  50. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool.py +0 -0
  51. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  52. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
  53. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/test_assistants.py +0 -0
  54. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/__init__.py +0 -0
  55. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/access_management/__init__.py +0 -0
  56. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/access_management/test_keycloak_tool.py +0 -0
  57. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/ado/__init__.py +0 -0
  58. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_test_plan_tools.py +0 -0
  59. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_wiki_tools.py +0 -0
  60. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_work_item_tools.py +0 -0
  61. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/cloud/__init__.py +0 -0
  62. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/cloud/test_cloud_tools.py +0 -0
  63. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/codebase/__init__.py +0 -0
  64. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/codebase/test_codebase_tools.py +0 -0
  65. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/datamanagement/__init__.py +0 -0
  66. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py +0 -0
  67. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/filemanagement/__init__.py +0 -0
  68. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/filemanagement/test_assistant_with_file_management_tools.py +0 -0
  69. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/git/__init__.py +0 -0
  70. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/git/test_assistant_with_git_tools.py +0 -0
  71. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/mcp/__init__.py +0 -0
  72. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/mcp/test_cli_mcp_server.py +0 -0
  73. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/mcp/test_mcp_servers.py +0 -0
  74. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/notification/__init__.py +0 -0
  75. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/notification/test_assistant_notification_tools.py +0 -0
  76. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/openapi/__init__.py +0 -0
  77. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/openapi/test_assistant_with_open_api_tools.py +0 -0
  78. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/plugin/__init__.py +0 -0
  79. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/plugin/test_assistant_with_development_plugin.py +0 -0
  80. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/plugin/test_assistant_with_plugin_and_mcp_servers.py +0 -0
  81. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/project_management/__init__.py +0 -0
  82. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/project_management/test_assistant_pm_tools.py +0 -0
  83. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/report_portal/__init__.py +0 -0
  84. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/report_portal/test_assistant_report_portal_tools.py +0 -0
  85. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/research/__init__.py +0 -0
  86. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/research/test_assistant_research_tools.py +0 -0
  87. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/servicenow/__init__.py +0 -0
  88. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/servicenow/test_servicenow_tools.py +0 -0
  89. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/vcs/__init__.py +0 -0
  90. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/assistant/tools/vcs/test_assistant_with_vcs_tools.py +0 -0
  91. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/conftest.py +0 -0
  92. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/conversations/__init__.py +0 -0
  93. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/conversations/test_conversations_endpoints.py +0 -0
  94. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/e2e/__init__.py +0 -0
  95. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/e2e/test_e2e.py +0 -0
  96. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/enums/__init__.py +0 -0
  97. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/enums/environment.py +0 -0
  98. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/enums/integrations.py +0 -0
  99. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/enums/model_types.py +0 -0
  100. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/enums/tools.py +0 -0
  101. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/__init__.py +0 -0
  102. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/project/__init__.py +0 -0
  103. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/project/test_default_integrations.py +0 -0
  104. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/project/test_project_integrations.py +0 -0
  105. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/user/__init__.py +0 -0
  106. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/user/test_default_integrations.py +0 -0
  107. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/integrations/user/test_user_integrations.py +0 -0
  108. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/llm/__init__.py +0 -0
  109. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/llm/assistants/__init__.py +0 -0
  110. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/llm/assistants/test_lite_llm.py +0 -0
  111. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/llm/assistants/test_llm.py +0 -0
  112. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/providers/__init__.py +0 -0
  113. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/providers/test_providers_endpoints.py +0 -0
  114. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/search/__init__.py +0 -0
  115. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/search/test_search_assistant.py +0 -0
  116. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/search/test_search_datasource.py +0 -0
  117. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/search/test_search_integration.py +0 -0
  118. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/search/test_search_workflow.py +0 -0
  119. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/__init__.py +0 -0
  120. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_assistant_service.py +0 -0
  121. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_datasource_service.py +0 -0
  122. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_integration_service.py +0 -0
  123. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_llm_service.py +0 -0
  124. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_task_service.py +0 -0
  125. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_user_service.py +0 -0
  126. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_workflow_execution_service.py +0 -0
  127. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/service/test_workflow_service.py +0 -0
  128. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/__init__.py +0 -0
  129. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/ado_test_plan_tools_test_data.py +0 -0
  130. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/ado_wiki_tools_test_data.py +0 -0
  131. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py +0 -0
  132. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/cloud_tools_test_data.py +0 -0
  133. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/codebase_tools_test_data.py +0 -0
  134. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/data_management_tools_test_data.py +0 -0
  135. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/__init__.py +0 -0
  136. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/ado_test_plan_tools_test_data.py +0 -0
  137. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/ado_wiki_tools_test_data.py +0 -0
  138. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/ado_work_item_tools_test_data.py +0 -0
  139. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/cloud_tools_test_data.py +0 -0
  140. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/codebase_tools_test_data.py +0 -0
  141. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/data_management_tools_test_data.py +0 -0
  142. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/direct_tools_test_data.py +0 -0
  143. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/file_management_tools_test_data.py +0 -0
  144. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/keycloak_tool_test_data.py +0 -0
  145. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/notification_tools_test_data.py +0 -0
  146. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/open_api_tools_test_data.py +0 -0
  147. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/project_management_tools_test_data.py +0 -0
  148. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/report_portal_tools_test_data.py +0 -0
  149. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/research_tools_test_data.py +0 -0
  150. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/servicenow_tools_test_data.py +0 -0
  151. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/direct_tools/vcs_tools_test_data.py +0 -0
  152. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/file_management_tools_test_data.py +0 -0
  153. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/file_test_data.py +0 -0
  154. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/large-files/large_file.txt +0 -0
  155. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/provider_payload.json +0 -0
  156. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.csv +0 -0
  157. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.docx +0 -0
  158. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.gif +0 -0
  159. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.ini +0 -0
  160. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.jpeg +0 -0
  161. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.jpg +0 -0
  162. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.json +0 -0
  163. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.pdf +0 -0
  164. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.png +0 -0
  165. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.pptx +0 -0
  166. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.txt +0 -0
  167. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.vtt +0 -0
  168. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.xlsx +0 -0
  169. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.xml +0 -0
  170. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/files/test.yaml +0 -0
  171. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/git_tools_test_data.py +0 -0
  172. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/google_datasource_test_data.py +0 -0
  173. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/index_test_data.py +0 -0
  174. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/integrations_test_data.py +0 -0
  175. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/keycloak_tool_test_data.py +0 -0
  176. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/llm_test_data.py +0 -0
  177. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/mcp_server_test_data.py +0 -0
  178. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/notification_tools_test_data.py +0 -0
  179. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/open_api_tools_test_data.py +0 -0
  180. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/openapi.json +0 -0
  181. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/output_schema_test_data.py +0 -0
  182. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/pm_tools_test_data.py +0 -0
  183. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/project_management_test_data.py +0 -0
  184. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/report_portal_tools_test_data.py +0 -0
  185. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/research_tools_test_data.py +0 -0
  186. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/servicenow_tools_test_data.py +0 -0
  187. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/vcs_tools_test_data.py +0 -0
  188. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_assistant_id.yaml +0 -0
  189. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_assistant_in_state.yaml +0 -0
  190. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_data_source.yaml +0 -0
  191. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_state.yaml +0 -0
  192. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_tool.yaml +0 -0
  193. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_yaml.yaml +0 -0
  194. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_yaml_format.yaml +0 -0
  195. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_assistant_id.yaml +0 -0
  196. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_assistant_tools_name.yaml +0 -0
  197. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_backoff_factor.yaml +0 -0
  198. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_initial_interval.yaml +0 -0
  199. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_max_attempts.yaml +0 -0
  200. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_max_interval.yaml +0 -0
  201. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states.yaml +0 -0
  202. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_id.yaml +0 -0
  203. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next.yaml +0 -0
  204. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_expression.yaml +0 -0
  205. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_otherwise.yaml +0 -0
  206. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_then.yaml +0 -0
  207. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases.yaml +0 -0
  208. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_condition.yaml +0 -0
  209. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_state_id.yaml +0 -0
  210. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_default.yaml +0 -0
  211. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_backoff_factor.yaml +0 -0
  212. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_initial_interval.yaml +0 -0
  213. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_max_attempts.yaml +0 -0
  214. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_max_interval.yaml +0 -0
  215. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_system_prompt.yaml +0 -0
  216. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_id.yaml +0 -0
  217. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_name.yaml +0 -0
  218. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/test_data/workflow_validation_messages.py +0 -0
  219. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/__init__.py +0 -0
  220. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/conftest.py +0 -0
  221. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/__init__.py +0 -0
  222. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/assistants/__init__.py +0 -0
  223. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py +0 -0
  224. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/components/workflow_state_card.py +0 -0
  225. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/login_page.py +0 -0
  226. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/ui/pageobject/workflows/__init__.py +0 -0
  227. {codemie_test_harness-0.1.166/codemie_test_harness/tests/utils → codemie_test_harness-0.1.168/codemie_test_harness/tests/ui/workflows}/__init__.py +0 -0
  228. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow → codemie_test_harness-0.1.168/codemie_test_harness/tests/utils}/__init__.py +0 -0
  229. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/assistant_utils.py +0 -0
  230. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/aws_parameters_store.py +0 -0
  231. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/base_utils.py +0 -0
  232. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/client_factory.py +0 -0
  233. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/constants.py +0 -0
  234. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/conversation_utils.py +0 -0
  235. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/credentials_manager.py +0 -0
  236. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/datasource_utils.py +0 -0
  237. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/env_resolver.py +0 -0
  238. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/env_utils.py +0 -0
  239. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/file_utils.py +0 -0
  240. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/gitbud_utils.py +0 -0
  241. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/http_utils.py +0 -0
  242. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/integration_utils.py +0 -0
  243. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/json_utils.py +0 -0
  244. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/llm_utils.py +0 -0
  245. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/logger_util.py +0 -0
  246. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/notification_utils.py +0 -0
  247. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/provider_utils.py +0 -0
  248. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/pytest_utils.py +0 -0
  249. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/search_utils.py +0 -0
  250. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/similarity_check.py +0 -0
  251. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/user_utils.py +0 -0
  252. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/workflow_utils.py +0 -0
  253. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/utils/yaml_utils.py +0 -0
  254. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow}/__init__.py +0 -0
  255. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/access_management → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools}/__init__.py +0 -0
  256. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/ado → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/access_management}/__init__.py +0 -0
  257. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/access_management/test_workflow_with_assistant_with_keycloak_tool.py +0 -0
  258. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/cloud → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/ado}/__init__.py +0 -0
  259. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_test_plan_tools.py +0 -0
  260. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_wiki_tools.py +0 -0
  261. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_work_item_tools.py +0 -0
  262. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/codebase → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/cloud}/__init__.py +0 -0
  263. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/cloud/test_workflow_with_assistant_cloud_tools.py +0 -0
  264. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/data_management → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/codebase}/__init__.py +0 -0
  265. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/codebase/test_worfklow_with_assistant_codebase_tools.py +0 -0
  266. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/default_integrations → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/data_management}/__init__.py +0 -0
  267. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py +0 -0
  268. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/git → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/default_integrations}/__init__.py +0 -0
  269. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool.py +0 -0
  270. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  271. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
  272. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/file_management/__init__.py +0 -0
  273. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/file_management/test_workflow_with_assistant_with_file_management_tools.py +0 -0
  274. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/mcp → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/git}/__init__.py +0 -0
  275. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/git/test_workflow_with_assistant_git_tools.py +0 -0
  276. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/notification → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/mcp}/__init__.py +0 -0
  277. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/mcp/test_workflow_with_assistant_with_mcp_server.py +0 -0
  278. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/plugin → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/notification}/__init__.py +0 -0
  279. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/notification/test_workflow_with_assistant_notification_tools.py +0 -0
  280. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/open_api/__init__.py +0 -0
  281. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/open_api/test_workflow_with_assistant_with_open_api_tools.py +0 -0
  282. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/project_management → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/plugin}/__init__.py +0 -0
  283. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_development_plugin.py +0 -0
  284. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_plugin_and_mcp_servers.py +0 -0
  285. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/report_portal → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/project_management}/__init__.py +0 -0
  286. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/project_management/test_workflow_with_assistant_pm_tools.py +0 -0
  287. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/research → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/report_portal}/__init__.py +0 -0
  288. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/report_portal/test_workflow_with_assistant_with_report_portal_tools.py +0 -0
  289. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/servicenow → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/research}/__init__.py +0 -0
  290. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/research/test_workflow_with_assistant_research_tools.py +0 -0
  291. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/assistant_tools/vcs → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/servicenow}/__init__.py +0 -0
  292. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +0 -0
  293. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/config_validation → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/assistant_tools/vcs}/__init__.py +0 -0
  294. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/assistant_tools/vcs/workflow_with_assistant_vcs_tools.py +0 -0
  295. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/direct_tools_calling → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/config_validation}/__init__.py +0 -0
  296. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/config_validation/test_config_validation.py +0 -0
  297. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/direct_tools_calling}/__init__.py +0 -0
  298. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations}/__init__.py +0 -0
  299. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool.py +0 -0
  300. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  301. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_access_management_tool.py +0 -0
  302. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_test_plan_tools.py +0 -0
  303. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_wiki_tools.py +0 -0
  304. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_work_item_tools.py +0 -0
  305. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_cloud_tools.py +0 -0
  306. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_codebase_tools.py +0 -0
  307. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_data_management_tools_elastic.py +0 -0
  308. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_data_management_tools_sql.py +0 -0
  309. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_file_management_tools.py +0 -0
  310. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_notification_tools.py +0 -0
  311. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_open_api_tools.py +0 -0
  312. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_plugin_tools.py +0 -0
  313. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_project_management_tools.py +0 -0
  314. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_report_portal_tools.py +0 -0
  315. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_research_tools.py +0 -0
  316. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_servicenow_tools.py +0 -0
  317. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py +0 -0
  318. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/test_workflows.py +0 -0
  319. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools}/__init__.py +0 -0
  320. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management}/__init__.py +0 -0
  321. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/test_workflow_with_keycloak_tool.py +0 -0
  322. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado}/__init__.py +0 -0
  323. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_test_plan_tools.py +0 -0
  324. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_wiki_tools.py +0 -0
  325. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_work_item_tools.py +0 -0
  326. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud}/__init__.py +0 -0
  327. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud/test_workflow_with_cloud_tools.py +0 -0
  328. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/codebase/__init__.py +0 -0
  329. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/codebase/test_workflow_with_codebase_tools.py +0 -0
  330. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/__init__.py +0 -0
  331. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py +0 -0
  332. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/git → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations}/__init__.py +0 -0
  333. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool.py +0 -0
  334. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  335. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
  336. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/file_management/__init__.py +0 -0
  337. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/file_management/test_workflow_with_file_management_tools.py +0 -0
  338. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/mcp → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/git}/__init__.py +0 -0
  339. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/git/test_workflow_with_git_tools.py +0 -0
  340. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/mcp}/__init__.py +0 -0
  341. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/mcp/test_workflow_with_mcp_server.py +0 -0
  342. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/notification/__init__.py +0 -0
  343. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/notification/test_workflow_with_notification_tools.py +0 -0
  344. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/open_api/__init__.py +0 -0
  345. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/open_api/test_workflow_with_open_api_tools.py +0 -0
  346. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/report_portal → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin}/__init__.py +0 -0
  347. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin/test_workflow_with_development_plugin.py +0 -0
  348. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin/test_workflow_with_plugin_and_mcp_servers.py +0 -0
  349. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/project_management/__init__.py +0 -0
  350. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/project_management/test_workflow_with_project_management_tools.py +0 -0
  351. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/research → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/report_portal}/__init__.py +0 -0
  352. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/report_portal/test_workflow_with_report_portal_tool.py +0 -0
  353. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/research}/__init__.py +0 -0
  354. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/research/test_workflow_with_research_tools.py +0 -0
  355. {codemie_test_harness-0.1.166/codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs → codemie_test_harness-0.1.168/codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow}/__init__.py +0 -0
  356. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +0 -0
  357. {codemie_test_harness-0.1.166 → codemie_test_harness-0.1.168}/codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.166
3
+ Version: 0.1.168
4
4
  Summary: Autotest for CodeMie backend and UI
5
5
  Author: Anton Yeromin
6
6
  Author-email: anton_yeromin@epam.com
@@ -13,7 +13,7 @@ Requires-Dist: aws-assume-role-lib (>=2.10.0,<3.0.0)
13
13
  Requires-Dist: boto3 (>=1.39.8,<2.0.0)
14
14
  Requires-Dist: click (>=8.1.7,<9.0.0)
15
15
  Requires-Dist: codemie-plugins (>=0.1.123,<0.2.0)
16
- Requires-Dist: codemie-sdk-python (==0.1.166)
16
+ Requires-Dist: codemie-sdk-python (==0.1.168)
17
17
  Requires-Dist: pytest (>=8.4.1,<9.0.0)
18
18
  Requires-Dist: pytest-playwright (>=0.7.0,<0.8.0)
19
19
  Requires-Dist: pytest-reportportal (>=5.5.2,<6.0.0)
@@ -0,0 +1,160 @@
1
+ """
2
+ This test verifies that a single assistant can have multiple instances of the same
3
+ MCP server plugin running with different configurations under the same plugin-key.
4
+ """
5
+
6
+ import json
7
+ import os
8
+ import subprocess
9
+ import uuid
10
+ from pathlib import Path
11
+ from time import sleep
12
+ from typing import Tuple, List
13
+
14
+ import pytest
15
+
16
+ from codemie_test_harness.tests.enums.tools import Toolkit
17
+ from codemie_sdk.models.integration import CredentialTypes
18
+ from codemie_test_harness.tests.conftest import cleanup_plugin_process
19
+ from codemie_test_harness.tests.test_data.plugin_tools_test_data import (
20
+ dual_time_plugin_test_data,
21
+ )
22
+ from codemie_test_harness.tests.utils.credentials_manager import CredentialsManager
23
+
24
+
25
+ CACHE_DIR = Path.home() / ".cache" / "uv" / "archive-v0"
26
+ SERVERS_JSON_PATH = "lib/python3.12/site-packages/toolkits/mcp/servers.json"
27
+ CODEMIE_PLUGINS_PATH = "bin/codemie-plugins"
28
+ PLUGIN_INIT_DELAY = 15
29
+
30
+ TIME_CONFIGS = {
31
+ "time-kyiv": {"timezone": "Europe/Kiev", "label": "time-kyiv"},
32
+ "time-tokyo": {"timezone": "Asia/Tokyo", "label": "time-tokyo"},
33
+ }
34
+
35
+
36
+ def find_cache_paths() -> Tuple[Path, Path]:
37
+ """Find required cache paths for servers.json and codemie-plugins."""
38
+ for cache_subdir in CACHE_DIR.glob("*"):
39
+ if not cache_subdir.is_dir():
40
+ continue
41
+
42
+ servers_json = cache_subdir / SERVERS_JSON_PATH
43
+ codemie_plugins = cache_subdir / CODEMIE_PLUGINS_PATH
44
+
45
+ if servers_json.exists() and codemie_plugins.exists():
46
+ return servers_json, codemie_plugins
47
+
48
+ raise FileNotFoundError("Required cache files not found")
49
+
50
+
51
+ def configure_mcp_servers(servers_json_path: Path) -> None:
52
+ """Configure MCP servers in servers.json."""
53
+ with open(servers_json_path, "r+") as f:
54
+ config = json.load(f)
55
+ mcp_servers = config.get("mcpServers", {})
56
+
57
+ for server_name, server_config in TIME_CONFIGS.items():
58
+ if server_name not in mcp_servers:
59
+ mcp_servers[server_name] = {
60
+ "command": "uvx",
61
+ "args": [
62
+ "mcp-server-time",
63
+ f"--local-timezone={server_config['timezone']}",
64
+ ],
65
+ }
66
+
67
+ f.seek(0)
68
+ json.dump(config, f, indent=2)
69
+ f.truncate()
70
+
71
+
72
+ def create_plugin_process(
73
+ server_name: str, plugin_key: str, codemie_plugins_path: Path
74
+ ) -> subprocess.Popen:
75
+ """Create a plugin process for given server configuration."""
76
+ config = TIME_CONFIGS[server_name]
77
+
78
+ env = os.environ.copy()
79
+ env.update(
80
+ {"PLUGIN_LABEL": config["label"], "PLUGIN_EXPERIMENTAL_PROTOCOL": "true"}
81
+ )
82
+
83
+ command = [
84
+ str(codemie_plugins_path),
85
+ "--plugin-key",
86
+ plugin_key,
87
+ "--plugin-engine-uri",
88
+ CredentialsManager.get_parameter("NATS_URL"),
89
+ "mcp",
90
+ "run",
91
+ "-s",
92
+ server_name,
93
+ "-e",
94
+ f"{server_name}=PLUGIN_LABEL",
95
+ ]
96
+
97
+ return subprocess.Popen(command, env=env)
98
+
99
+
100
+ def cleanup_processes(processes: List[subprocess.Popen]) -> None:
101
+ """Clean up all managed processes."""
102
+ for process in processes:
103
+ cleanup_plugin_process(process)
104
+
105
+
106
+ @pytest.fixture(scope="module")
107
+ def dual_time_plugins(integration_utils):
108
+ """Create two time plugin instances with different configurations."""
109
+ plugin_key = str(uuid.uuid4())
110
+ processes = []
111
+
112
+ # Setup integration
113
+ credential_values = CredentialsManager.plugin_credentials(plugin_key)
114
+ settings = integration_utils.create_integration(
115
+ credential_type=CredentialTypes.PLUGIN, credential_values=credential_values
116
+ )
117
+
118
+ # Download codemie-tools
119
+ download_process = subprocess.Popen(["uvx", "codemie-tools"])
120
+ processes.append(download_process)
121
+
122
+ # Find paths and configure servers
123
+ servers_json_path, codemie_plugins_path = find_cache_paths()
124
+ configure_mcp_servers(servers_json_path)
125
+
126
+ # Start plugin processes for each time config
127
+ for server_name in TIME_CONFIGS.keys():
128
+ process = create_plugin_process(server_name, plugin_key, codemie_plugins_path)
129
+ processes.append(process)
130
+
131
+ # Wait for plugin initialization
132
+ sleep(PLUGIN_INIT_DELAY)
133
+
134
+ yield settings
135
+ cleanup_processes(processes)
136
+
137
+
138
+ @pytest.mark.assistant
139
+ @pytest.mark.mcp
140
+ @pytest.mark.plugin
141
+ @pytest.mark.regression
142
+ @pytest.mark.parametrize(
143
+ "prompt,expected_response",
144
+ dual_time_plugin_test_data,
145
+ ids=["Get Tools Available", "Get Kyiv time", "Get Tokyo time"],
146
+ )
147
+ def test_single_assistant_dual_time_plugins(
148
+ dual_time_plugins,
149
+ assistant_utils,
150
+ assistant,
151
+ similarity_check,
152
+ prompt,
153
+ expected_response,
154
+ ):
155
+ assistant_instance = assistant(
156
+ Toolkit.PLUGIN, Toolkit.PLUGIN, settings=dual_time_plugins
157
+ )
158
+
159
+ response = assistant_utils.ask_assistant(assistant_instance, prompt)
160
+ similarity_check.check_similarity(response, expected_response)
@@ -73,3 +73,36 @@ CREATE_READ_DELETE_FILE_TEST_DATA = {
73
73
  "remove_file_prompt": "execute command: git rm -f {}.properties",
74
74
  "remove_file_response": "The file `{}.properties` has been removed from the git repository.",
75
75
  }
76
+
77
+ """Test data for dual time plugin MCP server tests."""
78
+
79
+ dual_time_plugin_test_data = [
80
+ (
81
+ "Show tools with their name and description",
82
+ """
83
+ Sure, here are the tools available with their name and description:
84
+
85
+ 1. **functions._get_current_time_2f90**:
86
+ - **Description**: Get current time in a specific timezone. If no timezone is provided by the user, it uses 'Asia/Tokyo' as the local timezone.
87
+
88
+ 2. **functions._convert_time_2f90**:
89
+ - **Description**: Convert time between timezones. If no source timezone is provided by the user, it uses 'Asia/Tokyo' as the local timezone. Similarly, if no target timezone is provided, it uses 'Asia/Tokyo' as the local timezone.
90
+
91
+ 3. **functions._get_current_time_5cba**:
92
+ - **Description**: Similar to `_get_current_time_2f90`, this gets the current time in a specific timezone, defaulting to 'Asia/Tokyo' if no timezone is provided.
93
+
94
+ 4. **functions._convert_time_5cba**:
95
+ - **Description**: Similar to `_convert_time_2f90`, this converts time between timezones, defaulting to 'Asia/Tokyo' if no source or target timezone is provided.
96
+
97
+ These tools are designed to help manage and convert timezone-related data efficiently.
98
+ """,
99
+ ),
100
+ (
101
+ "What is the current time in Kyiv? Return in format: The current time in Kyiv (Europe/Kiev timezone) is: $time_here",
102
+ "The current time in Kyiv (Europe/Kiev timezone) is",
103
+ ),
104
+ (
105
+ "What is the current time in Tokyo? Return in format: The current time in Tokyo (Asia/Tokyo timezone) is: $time_here",
106
+ "The current time in Tokyo (Asia/Tokyo timezone) is",
107
+ ),
108
+ ]
@@ -4,7 +4,7 @@ from playwright.sync_api import expect
4
4
  from reportportal_client import step
5
5
 
6
6
  from codemie_test_harness.tests.ui.pageobject.components.pop_up import PopUp
7
- from codemie_test_harness.tests.ui.pageobject.components.header import Header
7
+ from codemie_test_harness.tests.ui.pageobject.components.menu import Menu
8
8
 
9
9
 
10
10
  class BasePage:
@@ -16,7 +16,7 @@ class BasePage:
16
16
  # Component properties using @property decorator
17
17
  @property
18
18
  def back_button(self):
19
- """Back button in the header."""
19
+ """Back button in the menu."""
20
20
  return self.page.locator(
21
21
  '//div[not(contains(@class,"justify-end"))]/button[contains(@class,"secondary medium")]'
22
22
  ).first
@@ -27,9 +27,9 @@ class BasePage:
27
27
  return PopUp(self.page)
28
28
 
29
29
  @property
30
- def header(self):
31
- """Header component instance."""
32
- return Header(self.page)
30
+ def menu(self):
31
+ """Menu component instance."""
32
+ return Menu(self.page)
33
33
 
34
34
  # Common page elements
35
35
  @property
@@ -55,44 +55,44 @@ class BasePage:
55
55
  # Navigation methods
56
56
  @step
57
57
  def go_to_workflows_page(self):
58
- """Navigate to workflows page using header navigation."""
59
- self.header.navigate_to_workflows()
58
+ """Navigate to workflows page using menu navigation."""
59
+ self.menu.navigate_to_workflows()
60
60
  return self
61
61
 
62
62
  @step
63
63
  def go_to_assistants_page(self):
64
- """Navigate to assistants page using header navigation."""
65
- self.header.navigate_to_assistants()
64
+ """Navigate to assistants page using menu navigation."""
65
+ self.menu.navigate_to_assistants()
66
66
  return self
67
67
 
68
68
  @step
69
69
  def go_to_chats_page(self):
70
- """Navigate to chats page using header navigation."""
71
- self.header.navigate_to_chats()
70
+ """Navigate to chats page using menu navigation."""
71
+ self.menu.navigate_to_chats()
72
72
  return self
73
73
 
74
74
  @step
75
75
  def go_to_applications_page(self):
76
- """Navigate to applications page using header navigation."""
77
- self.header.navigate_to_applications()
76
+ """Navigate to applications page using menu navigation."""
77
+ self.menu.navigate_to_applications()
78
78
  return self
79
79
 
80
80
  @step
81
81
  def go_to_integrations_page(self):
82
- """Navigate to integrations page using header navigation."""
83
- self.header.navigate_to_integrations()
82
+ """Navigate to integrations page using menu navigation."""
83
+ self.menu.navigate_to_integrations()
84
84
  return self
85
85
 
86
86
  @step
87
87
  def go_to_data_sources_page(self):
88
- """Navigate to data sources page using header navigation."""
89
- self.header.navigate_to_data_sources()
88
+ """Navigate to data sources page using menu navigation."""
89
+ self.menu.navigate_to_data_sources()
90
90
  return self
91
91
 
92
92
  @step
93
93
  def go_to_help_page(self):
94
- """Navigate to help page using header navigation."""
95
- self.header.navigate_to_help()
94
+ """Navigate to help page using menu navigation."""
95
+ self.menu.navigate_to_help()
96
96
  return self
97
97
 
98
98
  # Pop-up interaction methods
@@ -164,10 +164,10 @@ class BasePage:
164
164
  """Verify that the new release popup is visible with expected content."""
165
165
  expect(self.pop_up.cancel).to_have_text("Got It, Thanks!")
166
166
  expect(self.pop_up.submit).to_have_text("Tell Me More")
167
- expect(self.pop_up.header).to_have_text("New CodeMie Release")
167
+ expect(self.pop_up.menu).to_have_text("New CodeMie Release")
168
168
  expect(self.pop_up.body).to_have_text(
169
169
  re.compile(
170
- r"Great news! We've rolled out new CodeMie version 1.\d.\d+ to enhance your experience. Take a moment to "
170
+ r"Great news! We've rolled out new CodeMie version 2.\d.\d+ to enhance your experience. Take a moment to "
171
171
  "explore what's new and discover how these changes can benefit you! Please review Release Notes!"
172
172
  )
173
173
  )
@@ -182,9 +182,9 @@ class BasePage:
182
182
 
183
183
  # Common verification methods
184
184
  @step
185
- def should_have_header_visible(self):
186
- """Verify that the header is visible."""
187
- self.header.should_be_visible()
185
+ def should_have_menu_visible(self):
186
+ """Verify that the menu is visible."""
187
+ self.menu.should_be_visible()
188
188
  return self
189
189
 
190
190
  @step
@@ -1,6 +1,6 @@
1
1
  from .workflow_card import WorkflowCard
2
2
  from .pop_up import PopUp
3
- from .header import Header
3
+ from .menu import Menu
4
4
  from .workflow_sidebar import WorkflowSidebar
5
5
  from .execution_history_row import ExecutionHistoryRow
6
6
  from .workflow_state_card import WorkflowStateCard
@@ -10,7 +10,7 @@ from .workflow_execution_state import WorkflowExecutionState
10
10
  __all__ = [
11
11
  "WorkflowCard",
12
12
  "PopUp",
13
- "Header",
13
+ "Menu",
14
14
  "WorkflowSidebar",
15
15
  "ExecutionHistoryRow",
16
16
  "WorkflowStateCard",
@@ -122,7 +122,7 @@ class ExecutionHistoryRow:
122
122
  self.should_have_status("In Progress")
123
123
  expect(self.status_badge).to_have_class("bg-in-progress-secondary")
124
124
  expect(self.status_badge).to_have_class("text-in-progress-main")
125
- expect(self.status_badge).to_have_class("border-in-progress-main")
125
+ expect(self.status_badge).to_have_class("border-in-progress-border")
126
126
  expect(self.status_dot).to_have_class("animate-pulse")
127
127
 
128
128
  @step
@@ -131,7 +131,7 @@ class ExecutionHistoryRow:
131
131
  self.should_have_status("Succeeded")
132
132
  expect(self.status_badge).to_contain_class("bg-success-secondary")
133
133
  expect(self.status_badge).to_contain_class("text-success-main")
134
- expect(self.status_badge).to_contain_class("border-success-main")
134
+ expect(self.status_badge).to_contain_class("border-success-border")
135
135
 
136
136
  @step
137
137
  def should_have_failed_status(self):
@@ -139,7 +139,7 @@ class ExecutionHistoryRow:
139
139
  self.should_have_status("Failed")
140
140
  expect(self.status_badge).to_contain_class("bg-error-secondary")
141
141
  expect(self.status_badge).to_contain_class("text-error-main")
142
- expect(self.status_badge).to_contain_class("border-error-main")
142
+ expect(self.status_badge).to_contain_class("border-error-border")
143
143
 
144
144
  @step
145
145
  def should_have_prompt(self, expected_prompt: str):
@@ -1,5 +1,5 @@
1
1
  """
2
- Header component page object for the main navigation header.
2
+ Menu component page object for the main navigation menu.
3
3
  Contains methods for interacting with navigation links, logo, and user profile.
4
4
  """
5
5
 
@@ -7,23 +7,23 @@ from reportportal_client import step
7
7
  from playwright.sync_api import expect
8
8
 
9
9
 
10
- class Header:
11
- """Header component with property-based element locators."""
10
+ class Menu:
11
+ """Menu component with property-based element locators."""
12
12
 
13
13
  def __init__(self, page):
14
14
  self.page = page
15
15
 
16
- # Header elements using @property decorator
16
+ # Menu elements using @property decorator
17
17
  @property
18
- def header_container(self):
19
- """Main header container."""
18
+ def menu_container(self):
19
+ """Main menu container."""
20
20
  return self.page.locator("//body//header")
21
21
 
22
22
  @property
23
23
  def logo_link(self):
24
24
  """Logo link element."""
25
- return self.header_container.locator(
26
- '//a[@href="#/assistants"][span[text()="EPAM AI/Run"]]'
25
+ return self.menu_container.locator(
26
+ "a.h-12.flex.grow.gap-4.items-center.relative.select-none.text-nowrap.cursor-pointer.group"
27
27
  )
28
28
 
29
29
  @property
@@ -33,13 +33,13 @@ class Header:
33
33
 
34
34
  @property
35
35
  def logo_tooltip(self):
36
- """Logo tooltip text."""
37
- return self.page.locator('span:has-text("EPAM AI/Run")')
36
+ """Logo tooltip text whn menu is expanded."""
37
+ return self.page.locator('a:has-text("EPAM AI/RUN"):has-text("CodeMie")')
38
38
 
39
39
  @property
40
40
  def top_nav(self):
41
41
  """Top navigation container."""
42
- return self.header_container.locator('nav[aria-label="top-nav-links"]')
42
+ return self.menu_container.locator('nav[aria-label="top-nav-links"]')
43
43
 
44
44
  @property
45
45
  def chats_link(self):
@@ -64,7 +64,7 @@ class Header:
64
64
  @property
65
65
  def secondary_nav(self):
66
66
  """Secondary navigation container."""
67
- return self.header_container.locator('nav[aria-label="secondary-nav-links"]')
67
+ return self.menu_container.locator('nav[aria-label="secondary-nav-links"]')
68
68
 
69
69
  @property
70
70
  def integrations_link(self):
@@ -79,73 +79,51 @@ class Header:
79
79
  @property
80
80
  def bottom_nav(self):
81
81
  """Bottom navigation container."""
82
- return self.header_container.locator('nav[aria-label="bottom-nav-links"]')
82
+ return self.menu_container.locator('nav[aria-label="bottom-nav-links"]')
83
83
 
84
84
  @property
85
- def help_link(self):
86
- """Help navigation link."""
87
- return self.bottom_nav.locator('a[href="#/help"]')
88
-
89
- @property
90
- def user_profile_container(self):
91
- """User profile container."""
92
- return self.header_container.locator("//span[text()='User Profile']/..")
93
-
94
- @property
95
- def user_profile_button(self):
96
- """User profile button."""
97
- return self.user_profile_container.locator("button")
98
-
99
- @property
100
- def user_avatar(self):
101
- """User avatar image."""
102
- return self.user_profile_button.locator('img[alt="User profile"]')
103
-
104
- @property
105
- def user_profile_tooltip(self):
106
- """User profile tooltip text."""
107
- return self.page.locator('span:has-text("User Profile")')
108
-
109
- # Navigation link tooltips
110
- @property
111
- def chats_tooltip(self):
112
- """Chats tooltip text."""
113
- return self.page.locator('span:has-text("Chats")')
85
+ def faq_assistant_link(self):
86
+ """FAQ assistant navigation link."""
87
+ return self.bottom_nav.locator(
88
+ 'a[href="#/assistants/codemie-onboarding/start"]'
89
+ )
114
90
 
115
91
  @property
116
- def assistants_tooltip(self):
117
- """Assistants tooltip text."""
118
- return self.page.locator('span:has-text("Assistants")')
92
+ def prompt_assistant_link(self):
93
+ """Prompt Engineer assistant navigation link."""
94
+ return self.bottom_nav.locator('a[href="#/assistants/prompt-engineer/start"]')
119
95
 
120
96
  @property
121
- def workflows_tooltip(self):
122
- """Workflows tooltip text."""
123
- return self.page.locator('span:has-text("Workflows")')
97
+ def switch_new_codemie(self):
98
+ """Switch to new CodeMie."""
99
+ return self.menu_container.locator(".switch")
124
100
 
125
101
  @property
126
- def applications_tooltip(self):
127
- """Applications tooltip text."""
128
- return self.page.locator('span:has-text("Applications")')
102
+ def hide_expand_menu_button(self):
103
+ """Hide/Expand menu button."""
104
+ return self.menu_container.locator(
105
+ 'button[type="button"].rounded-lg.flex.items-center'
106
+ )
129
107
 
130
108
  @property
131
- def integrations_tooltip(self):
132
- """Integrations tooltip text."""
133
- return self.page.locator('span:has-text("Integrations")')
109
+ def help_link(self):
110
+ """Help navigation link."""
111
+ return self.bottom_nav.locator('a[href="#/help"]')
134
112
 
135
113
  @property
136
- def data_sources_tooltip(self):
137
- """Data Sources tooltip text."""
138
- return self.page.locator('span:has-text("Data Sources")')
114
+ def user_profile_button(self):
115
+ """User profile button."""
116
+ return self.menu_container.locator("button.cursor-pointer.group")
139
117
 
140
118
  @property
141
- def help_tooltip(self):
142
- """Help tooltip text."""
143
- return self.page.locator('span:has-text("Help")')
119
+ def user_avatar(self):
120
+ """User avatar image."""
121
+ return self.user_profile_button.locator("img")
144
122
 
145
123
  # Action methods
146
124
  @step
147
125
  def click_logo(self):
148
- """Click on the EPAM AI/Run logo to navigate to assistants page."""
126
+ """Click on the EPAM AI/Run logo to navigate to new chat."""
149
127
  self.logo_link.click()
150
128
  return self
151
129
 
@@ -197,46 +175,6 @@ class Header:
197
175
  self.user_profile_button.click()
198
176
  return self
199
177
 
200
- @step
201
- def hover_over_navigation_item(self, navigation_item: str):
202
- """
203
- Hover over a navigation item to display its tooltip.
204
-
205
- Args:
206
- navigation_item (str): The navigation item to hover over
207
- ('chats', 'assistants', 'workflows', 'applications',
208
- 'integrations', 'data_sources', 'help', 'logo', 'user_profile')
209
- """
210
- navigation_items = {
211
- "chats": self.chats_link,
212
- "assistants": self.assistants_link,
213
- "workflows": self.workflows_link,
214
- "applications": self.applications_link,
215
- "integrations": self.integrations_link,
216
- "data_sources": self.data_sources_link,
217
- "help": self.help_link,
218
- "logo": self.logo_link,
219
- "user_profile": self.user_profile_button,
220
- }
221
-
222
- if navigation_item in navigation_items:
223
- navigation_items[navigation_item].hover()
224
- else:
225
- raise ValueError(f"Unknown navigation item: {navigation_item}")
226
- return self
227
-
228
- @step
229
- def wait_for_tooltip_to_appear(self, tooltip_text: str):
230
- """
231
- Wait for a specific tooltip to appear.
232
-
233
- Args:
234
- tooltip_text (str): The text of the tooltip to wait for
235
- """
236
- tooltip = self.page.locator(f'span:has-text("{tooltip_text}")')
237
- tooltip.wait_for(state="visible")
238
- return self
239
-
240
178
  # Utility methods
241
179
  @step
242
180
  def get_active_navigation_item(self):
@@ -244,7 +182,7 @@ class Header:
244
182
  Get the currently active navigation item.
245
183
  Returns the href of the active navigation link.
246
184
  """
247
- active_link = self.header_container.locator("a.bg-new-panel-secondary")
185
+ active_link = self.menu_container.locator("a.bg-new-panel-secondary")
248
186
  if active_link.is_visible():
249
187
  return active_link.get_attribute("href")
250
188
  return None
@@ -257,8 +195,8 @@ class Header:
257
195
  # Verification methods
258
196
  @step
259
197
  def should_be_visible(self):
260
- """Verify that the header is visible."""
261
- expect(self.header_container).to_be_visible()
198
+ """Verify that the menu is visible."""
199
+ expect(self.menu_container).to_be_visible()
262
200
  return self
263
201
 
264
202
  @step
@@ -293,12 +231,12 @@ class Header:
293
231
  Verify that all main navigation elements are present and visible.
294
232
  """
295
233
  navigation_structure = {
296
- "header": self.header_container,
234
+ "menu": self.menu_container,
297
235
  "logo": self.logo_link,
298
236
  "top_nav": self.top_nav,
299
237
  "secondary_nav": self.secondary_nav,
300
238
  "bottom_nav": self.bottom_nav,
301
- "user_profile": self.user_profile_container,
239
+ "user_profile": self.user_profile_button,
302
240
  "chats_link": self.chats_link,
303
241
  "assistants_link": self.assistants_link,
304
242
  "workflows_link": self.workflows_link,
@@ -306,6 +244,10 @@ class Header:
306
244
  "integrations_link": self.integrations_link,
307
245
  "data_sources_link": self.data_sources_link,
308
246
  "help_link": self.help_link,
247
+ "faq_assistant_link": self.faq_assistant_link,
248
+ "prompt_assistant_link": self.prompt_assistant_link,
249
+ "switch_to_new_codemie": self.switch_new_codemie,
250
+ "hide_expand_menu": self.hide_expand_menu_button,
309
251
  }
310
252
 
311
253
  for element_name, element in navigation_structure.items():
@@ -322,9 +264,9 @@ class Header:
322
264
 
323
265
  # Legacy methods for backward compatibility
324
266
  @step
325
- def is_header_visible(self):
326
- """Check if the header is visible on the page."""
327
- return self.header_container.is_visible()
267
+ def is_menu_visible(self):
268
+ """Check if the menu is visible on the page."""
269
+ return self.menu_container.is_visible()
328
270
 
329
271
  @step
330
272
  def is_logo_visible(self):
@@ -359,12 +301,12 @@ class Header:
359
301
  dict: A dictionary with the visibility status of each navigation section
360
302
  """
361
303
  return {
362
- "header_visible": self.header_container.is_visible(),
304
+ "menu_visible": self.menu_container.is_visible(),
363
305
  "logo_visible": self.logo_link.is_visible(),
364
306
  "top_nav_visible": self.top_nav.is_visible(),
365
307
  "secondary_nav_visible": self.secondary_nav.is_visible(),
366
308
  "bottom_nav_visible": self.bottom_nav.is_visible(),
367
- "user_profile_visible": self.user_profile_container.is_visible(),
309
+ "user_profile_visible": self.user_profile_button.is_visible(),
368
310
  "chats_link_visible": self.chats_link.is_visible(),
369
311
  "assistants_link_visible": self.assistants_link.is_visible(),
370
312
  "workflows_link_visible": self.workflows_link.is_visible(),
@@ -372,4 +314,8 @@ class Header:
372
314
  "integrations_link_visible": self.integrations_link.is_visible(),
373
315
  "data_sources_link_visible": self.data_sources_link.is_visible(),
374
316
  "help_link_visible": self.help_link.is_visible(),
317
+ "faq_assistant_link_visible": self.faq_assistant_link.is_visible(),
318
+ "prompt_assistant_link_visible": self.prompt_assistant_link.is_visible(),
319
+ "switch_to_new_codemie_visible": self.switch_new_codemie.is_visible(),
320
+ "hide_expand_menu_visible": self.hide_expand_menu_button.is_visible(),
375
321
  }